항해99 11주차 WIL
1. 실전 프로젝트 현황
실전 프로젝트는 이제 막바지에 달아 거의 인프라 안정화와 트래픽 계산, 알림 기능, 방송 사용자 수 표시 등의 추가 기능을 마쳤다. 실전 프로젝트의 현재 남은 일정은 필자의 팀이 구현한 코드들이 대용량 트래픽에 적합한지 Jmeter와 Artillery를 이용하여 검사할 계획이다. 그 외에도 문제가 발생하면 디버깅을 실행해야하므로 막연히 거의 끝나간다는 느낌은 사실 거의 들지 않는다. 오히려 할게 아직도 이렇게 많이 남았구나라며 혼자 생각을 정리하고 있다. 현재 필자의 조는 Jmeter를 통해 로컬로 트래픽 점검을 하는 중이다. 동시 접속자를 최대로 100명까지 정하여 각 api들을 파라미터와 토큰을 통해 테스트 절차를 밟고 있다. 다만 실제 서버에 강제로 트래픽을 강하게 주면 서버가 멈출 수 있기 때문에 로컬에서 하고 있다. 또한 서버에 프로메테우스와 그라파나를 적용하여 실시간 트래픽을 검사하고 있다. 이러한 작업은 남병관 CTO께서 트러블슈팅 강의 때 트래픽 처리의 중요성을 역설하였기 때문에 백엔드에서 할 수 있는 최대한의 기능을 적용하던 중 생각해낸 방향이다.
2. 실전 프로젝트 중 막힌 문제
이렇게 마무리 단계에 들어갔다고 생각하며 순조롭다고 여길 수 있지만 사실 필자는 큰 문제에 봉착했다. 무중단 배포 도입이 바로 그것이다. 사실 무중단 배포는 CICD와 함께 적용하여 기본적인 인프라 설정을 할 때 준비하는 것이다. 하지만 필자의 팀은 CICD까지만 적용을 하고 기능 구축에 집중하여 현재 서버를 내릴 수 없는 상태이다. 필자가 무중단 배포를 맡았지만 공부를 해보니 무중단 배포를 하기 위해서는 도커를 사용할 경우 도커 컴포즈와 도커 스웜, 혹은 아마존 AWS CODE DEPLOY를 통해야 하는데 이를 하고 나서 NGINX를 구축하는게 올바른 순서로 여겨진다. 문제는 필자의 팀의 경우 CICD 이후 무중단 배포를 생각하지 못하고 바로 NGINX를 올리는 바람에 만일 지금 시점에서 무중단 배포를 진행한다면 최악의 경우 NGINX를 삭제하고 무중단배포 진행 중 다시 깔아서 포트를 설정해야하는 불상사가 발생할 수 있다. 또한 필자의 팀이 구축한 깃 액션 워크 플로우 파일을 다시 작성해야하며 이를 하기 위해서 무중단 배포의 방법(현재위치, 블루/그린)의 방식을 정해야하고 이를 실행하기 위한 스크립트 파일을 맞춰야한다. 프론트 엔드 분들도 현재 올라간 서버를 토대로 작업하는 것이 있어 하루에서 이틀의 서버 다운을 쉽게 이해할 수 없는 상황에서 무중단 배포를 당장 도입하는 것을 무리이다. 아무래도 현재 필자의 조는 데브옵스 작업이 처음이기 때문에 아키텍처 설계에서 미스가 난 것으로 보인다. 향후 아마존, 도커, 쿠버네티스 등의 데브옵스 툴들을 깊게 공부해야한다는 목표가 생겼다.
3. 실전 프로젝트 향후 방향
이로 인해 무중단 배포는 잠정 중단, 모든 기능이 다 완벽하게 마감되고 트래픽 문제를 잡아낸 후에 가능하다면 실행할 예정이다. 마케팅을 통해 페이스북, 인스타그램을 이용하여 사용자를 모집할 예정이다. 현재 알림 기능을 구현했지만 혹시 모를 스레드 처리가 필요하기 때문에 지켜봐야하는 점도 존재한다. 에미터를 연결하면 로그인한 사용자 한 명당 하나의 스레드를 할당 받기 때문에 비동기로 처리해야하는 문제점이 남아있다. 그것 말고도 에미터를 통해 알림을 보내면 이 알림을 필자의 팀의 페이지에서 뿌려줄지 혹은 window함수를 통해 OS에서 뿌려줄 지도 아직 미정이다. 필자는 향후 Jmeter 혹은 Artillery를 통해 로컬에서 트래픽 과부하를 주어 코드 리팩토링을 진행할 예정이다.