본문 바로가기

Stove Dev Camp10

첫 직장 인턴을 진행했던 스토브에서 전환 합격 메일이 왔다. 열심히 다녀야겠다. 2021. 3. 4.
WebRTC란? (시그널링 과정 feat. Kurento Media Server) (3)(작성중) 이전 글 복습 NAT 환경 같은 경우에는 자신은 Private IP를 가지고 있어서 시그널링을 할 때 Peer to Peer로 통신을 할 수 있는 방법이 없다. 따라서 자신의 퍼블릭 IP를 알아내기 위해 STUN서버를 통해서 자신의 Public 아이피를 알아내어 그 정보를 통해서 시그널링을 하게 된다. (어차피 통신을 하기 위해 라우터를 거치면 라우터 테이블에 자신의 private IP가 맵핑되어 있다.) 하지만 이것도 제약사항이 있어 모든 데이터를 교환할때에 특정 서버를 거쳐서 그 서버에 저장된 테이블을 통해 보내주게 되는데, 이 방식을 TURN서버라고 한다. TURN 서버는 기본적으로 STUN 서버를 포함하고 있는 슈퍼셋의 개념이며 STUN에 비해서 더 네트워크 환경의 제약이 없다. 다만 턴서버에는 .. 2021. 2. 5.
Spring Boot 일정시간마다 실행시키기 @EnableScheduling 스프링 부트에서는 일정시간마다 실행을 시키는 어노테이션을 메인함수에 선언을 해놓으면 스케줄링을 사용할 수 있다. 이번 프로젝트에서 이 기능이 필요했던 이유는 방송 송출이 잘 되고 있는지에 대한 감시를 옵저빙 서버에서 해야한다. (네트워크 환경이 급격하게 바뀌는 경우에는 Websocket이 끊겨도 끊긴지 모르고 그 룸에 대한 정보와 미디어 송출 라인이 그대로 남아있다.) 따라서, Scheduling을 이용해 일정시간마다 Data가 미디어서버로 잘 오고 있는지를 체크해야한다. 사용방법은 간단하다.(달아놓은 링크에 더 자세한 설명이 있으며 여기서는 일정 작업이 끝난 후 일정시간 마다 작업을 반복하는 것만 쓴다.) @EnableScheduling 어노테이션을 달고 사용하고자 하는.. 2021. 2. 3.
Spring-boot "Handshake failed due to invalid Upgrade header: null" Error (Spring boot Websocket 연결 에러) Handshake failed due to invalid Upgrade header: null? 회사에서 제공해준 EC2 클라우드 환경에서 Websocket을 연결하려고 할 때에 발생했던 오류였다. 현재 구축되어 있는 환경의 대략적인 그림은 다음과 같다. 프로젝트는 앞선 글들을 보면 알 수 있듯이 WebRTC를 주 기술 스택으로 하는 프로젝트여서 반드시 HTTPS를 통한 SSL 인증이 필수였고 그래서 회사에 인증서와 도메인을 함께 요청하였다. 그리고 EC2 서버 내에서 Nginx를 통해서 MSA로 나누어져 있는 각 서버들에게 리버시 프록시를 해주었다.(특히, Websocket의 경우 Header 업그레이드가 필요기 때문이며 SSL 인증이 필요한 포트는 반드시 ELB에서 설정해줘야 했기 때문이었다.) ng.. 2021. 2. 1.