[WIL11~12주차] 240415~240428

Dyong_Song·2024년 4월 30일
0
post-thumbnail

✏️  항해 12주차, 실전 프로젝트 5주차

🗓️   지난 이야기

실전 프로젝트 5주차.

지난 주, WIL을 작성하지 못했기에 2주분을 작성해보려 합니다. 먼저 11주차에는 CI-CD 무중단 배포 구조를 변경했습니다. 약 2~3일 정도를 투자해서 완성한 무중단배포 구조가 메모리 문제로 정상작동하지 않았습니다. AWS CLI를 통해 극복해보고자 했으나, 쉽게 해결되지 않았습니다. 이에 서버 인프라를 대폭 수정하기로 결정했습니다.

단일 EC2에서 Nginx의 리버스 프록시를 통해 도커로 올린 스프링 서버의 라우팅 포트를 변경하는 방식이 아닌, Elastic Beanstalk의 도커 플랫폼으로 새로운 인스턴스에 Docker 이미지를 pull 받은 뒤, 정상 작동하는 경우 기존 인스턴스를 다운하는 방식으로 변경했습니다.

2가지 무중단 배포 방식을 적용하고, 트러블 슈팅을 해본 덕에 한 주를 모두 인프라 공부에 몰두할 수 있었습니다. 21일(일요일)부터 약 5일간 유저 피드백을 받기로 했기 때문에, 일요일에 전체적인 디버깅을 진행했고, 유저 테스트를 시작했습니다.

12주차는 유저 피드백을 기반으로 서비스 개편 및 버그 수정 작업을 진행했습니다. 가장 많이 나왔던 피드백은 해당 지역에 모임이 없는 경우, 가장 가까운 모임을 보여주는 것이 불편하다는 것이었습니다. 이를 개선하기 위해, 서버 DB조회 쿼리 중 5KM 이내의 모임만 조회하는 조건절을 추가하였고, 프론트에서도 범위를 보여주는 방식으로 변경되었습니다.

두 번째로, 마이페이지에서 보여지는 공부 시간 로직에 문제가 있었습니다. 프론트에서 넘어오는 시간과 스프링 서버 시간, 그리고 DB 시간이 일정하지 않아 시간 계산에 오류가 있었습니다. 모든 시간을 UTC 기준으로 바꾸고, 프론트로 시간을 넘길 때, 한국 기준으로 넘기는 방식을 채택하여 문제를 해결했습니다. (단, 모임 시작시간과 끝나는 시간은 아직 보완 필요)

개선사항 및 버그를 수정하면서, 모니터링 서버를 구축했습니다. EC2 인스턴스의 CPU 및 메모리 사용량을 시각화하였고, 모니터링을 통해 WebSocket 메모리 누수 문제를 해결할 수 있었습니다. 또한, 기존에 메모리 부족이라고 판단하여, 스케일업한 EC2도 다시 스케일아웃을 해도 문제가 없을 것 같다는 힌트를 얻을 수 있었습니다.

마지막으로 부하 테스트 툴을 통해 AutoScaling되는 서버를 확인할 수 있었습니다. 어느 정도의 부하를 줘야 서버가 늘어나게 되는지는 조금 더 테스트를 진행해봐야 할 것 같습니다. 부하 테스트를 진행하면서, 이렇게 간단하게 서버에 강제 부하를 줄 수 있는데 동일 IP의 악의적인 요청은 막아야겠다는 생각이 들었습니다.

📚  배운점

  • 모니터링 서버(Prometheus, grafana)
  • Beanstalk, docker, githubActions 무중단배포
  • 부하 테스트 및 오토스케일링 적용

🔥  다음 주 계획

  • 최종 발표 준비
  • 부하 테스트 데이터화
  • startTime, endTime 문제 해결
  • 회원 탈퇴 기능 보완
profile
꾸준한 개발자가 되자! Do steady yong

0개의 댓글

관련 채용 정보