<aside> 🏁 실전 프로젝트 5주차에 가장 집중해주셔야 할 것은 “서비스의 완성도 높이기”입니다. MVP에 추가 및 보완해야 할 기능, 우리의 서비스가 기술적으로 인정 받을 수 있는 특징을 정리해주세요. 멘토님들과 함께 프로젝트를 높은 완성도로 마무리 할 수 있는 방향을 점검해 봅니다.
</aside>
지금까지 배운 트러블 슈팅에 대해 고민하신 후, 가장 적합하다고 생각하는 트러블 슈팅을 스택별로 한 가지 작성해 주세요!
프로젝트에 새롭게 도입한 기술이 있다면 정리해 주세요! (도입 이유도 꼭 적어주세요!)
이번 주 한 일
이외에도 기술적인 방향을 잡기 위한 질문을 정리해오시면 가장 좋습니다!
Q. 모임에 참여한 시간을 구하고 싶은데 시작 시간과 끝나는 시간을 뺀 값을 DB에서 쿼리문으로 데이터를 가져와서 처리해야 하는지(쿼리문), 아니면 시작 시간과 끝나는 시간을 가져와서 자바에서 서비스 로직으로 처리해야하나요? -> DB에서 처리를 하면 RDS의 성능이 저하가 될 것이고, 자바에서 처리를 하면 EC2의 성능이 저하될 것이다.
Q. 현재 기능별로 디렉토리 구조를 나누어 가독성을 높였는데, 코드를 짜다보니 서비스에서 다른 디렉토리의 레포지토리를 사용하게 되었습니다. 결국 해당 reposoitory는 사용하지 않았는데 이 방법이 맞는 부분인지 궁금합니다. 예. 채팅 부분에서) 채팅 서비스에서 멤버 레포지토리만 가져오고 채팅 레포지토리는 사용하지 않았던 부분
Q. 단일 EC2에서 Docker로 서버를 2개 돌린 뒤 (8080, 8081), health 체크를 진행하는 경우 (https 로드 밸런서) 서버가 다운되는 현상
ec2 서버의 스크립트 내용 중, health 체크를 진행하는 시간 동안 (1~2분), Out of Memory
원인: CI/CD 스크립트에서 2개의 서버가 돌아갈 때, CPU 및 메모리 급상승
해결 : 서버 스케일 업하거나, health 체크를 진행 x → 무중단배포 포기
⇒ 약 10초 정도 502 badgate 발생
아키텍처 전체 개편
⇒ 기존에 사용하는 [ 단일서버 + nginx + docker ] 에서 [ beanstalk + docker ]
⇒ beanstalk에서 제공하는 무중단배포로 전환
⇒ 서버 재배포시, 새로운 인스턴스에 서버를 띄운 뒤에 health 체크 통과하면, 기존 EC2 인스턴스 삭제
A. 블루그린 , 카나리 , 롤링 차이점, 우리가 이 기술을 적용한 이유에 대해…
4~5분 걸리는 것은 문제 X
Q. WebSocket, 무슨 이유인지 서버가 멈추는 현상
⇒ 원인 찾는 중
Q. 리프레시 토큰 기능: 403에러가 발생하면 리프레시 토큰을 서버로 보내 인증 후 엑세스 토큰을 재발급
→ 1안으로 처음 리프레시 토큰 기능을 개발했지만, 웹소켓 통신의 경우 리프레시 토큰을 구현하는 방법을 찾지 못해, 2안으로 변경하였습니다. 2안의 경우 호출 스케쥴을 setTimeout 함수를 이용하고 있는데, 이 경우 별도로 고려해야 할 부분이 있는지 궁금합니다.
숙제: 멘토링 결과 다음 주까지 해올 일