1) 영상채팅 기능의 추가 / 보완 및 인터뷰 예약 관리 시스템과의 연결

영상채팅 기능에 텍스트 채팅 추가 (WebRTC + socket.io)

- socket.io 코드를 WebRTC 연결을 위한 시그널링 파트와 텍스트 채팅 파트로 구분하고 주석 처리하여 다른 팀원도 이해할 수 있게 작성해둠

 

영상채팅방 입장시, 서비스의 "인터뷰 예약 기능"을 통해 생성되어 DB에 저장되어 있는 interview code를 입력해야만 

영상채팅방이 생성되어 입장할 수 있도록 변경, 알맞은 인터뷰코드의 경우에도 인터뷰 예약시간 15분전 ~ 3시간 후에만 입장이 가능하도록 변경

- 별도로 운영하고 있는 영상채팅 서버에 MySQL DB를 연결함. 

 

인터뷰 종료 버튼을 추가하여, 인터뷰에 참여한 양측 사용자가 모두 인터뷰 종료에 체크하면 해당 인터뷰 건의 status를 

"지원서 접수"에서 "인터뷰 완료"로 변경할 수 있도록 상태 관리 기능을 추가함. 

- MySQL DB의 인터뷰 예약 및 관리 테이블인 "application" 테이블에 상태관리 기능을 적용한 것.

 

2) 회원관리 / 프로젝트 게시글 / 자기소개 게시글 API 트러블 슈팅

- 모든 코드를 테스트하고 각 기능을 맡은 팀원과 함께 수정 및 보완사항 공유 

 

- 특히 mongoDB에서 MySQL로 이전하면서, 특정 API의 경우 join 관계에 있는 데이터들을 모아 보냄에 따라 API response의 데이터 형태가 변화했음. 객체와 배열이 복잡하게 중첩되어 있는 데이터가 생성됨.

 

- 이 데이터 형태를 본래의 API 문서에 적어뒀던 response 형태와 같이, FE가 활용하기 쉬운 단순한 형태로 가공해주는 코드를 작성하여 해당 기능을 사용하는 팀원들에게 공유함. 객체 리터럴 및 배열 메소드의 활용으로 간단하게 해결하였음. 

 

3) 이메일 발송 코드 작성

- 서비스 내에서 사용자가 특정한 프로젝트에 인터뷰를 신청하거나, 본인이 작성한 프로젝트에 대한 인터뷰 요청을 받거나, 자기소개를 작성한 개발자에게 인터뷰를 제안하는 경우에 이메일을 발송해 알리기로 하였고 이에 해당하는 코드를 작성하였음. 

 

- SMTP 서버의 연결 / SMTP 정보는 환경 변수로 은닉 / 이메일을 보내는 각각의 경우에 따라 다른 정보를 담을 수 있도록 html로 template 작성 / 각각의 template 작성기능 및 실제 이메일 발송기능을 모두 함수화/모듈화하여 메일 활용이 필요한 API에서 호출해 사용할 수 있도록 작성함.

 

4) 해결해결중인 문제 : 502 Bad Gateway

- 영상채팅을 적용한 EC2 서버에서, 아직 파악하지 못한 원인으로 502 Bad Gateway 에러가 발생하는 현상.

 

- 항상 일어나는 에러가 아니라, 서버가 잘 돌아가다가 수시간 만에 한 번씩 502 에러가 발생하고 접속이 되지 않는 경우라 원인 파악에 어려움을 겪고 있음. 502 에러가 발생하고 나서 pm2 서비스를 중단했다가 다시 켜기만 해도 아무 이상 없이 몇 시간씩 돌아가다가, 다시 502 에러가 발생함. 약 10시간~ 13시간 주기로 끊기는 것 같음. 

 

- Node.JS의 idle timeout 시간과 AWS ALB의 기본 timeout 시간이 달라서 발생하는 문제로 생각하고, node.js 서버에 keep AliveTimeout 시간을 길게 설정해 보았으나 10여시간 이후 또다시 502 에러가 발생함. 

 

- 시도할 부분: 일단은 ALB의 문제로 예상되므로 로드 밸런서의 log를 상세하게 확인할 수 있는 방법부터 알아볼 예정.

 

- 해결: 원인은 MySQL DB connection leak. DB 와의 소통이 일어난 후에는 반드시 DB 연결을 종료해주어야 했고, DB연결-쿼리를 통한 상호작용 - DB 연결종료를 더 쉽게 처리하기 위해 sequelize의 pool을 이용했음. 이것으로 502 에러는 더 이상 없음.

 

 

 

 

+ Recent posts