예시 답변 1
약 96초
병목 발견·분석·대응 경험 중심으로 푸는 결
졸업 프로젝트에서 간단한 실시간 채팅 서비스를 만들었는데, 처음 배포 후 동시 접속자가 늘어나자 응답이 느려지는 문제가 발생했습니다. WebSocket 연결이 늘어날수록 메모리 사용량이 빠르게 올라갔고, 특정 수 이상에서는 연결이 끊기는 현상이 있었습니다. 원인을 분석하니 각 연결마다 별도 스레드를 생성하는 방식이 문제였습니다.
비동기 이벤트 루프 기반으로 구조를 바꾸면서 같은 스레드에서 여러 연결을 처리할 수 있게 됐고, 메모리 사용량이 눈에 띄게 줄었습니다. 규모가 작은 프로젝트였지만 동시성 처리 방식이 병목의 핵심이라는 것을 직접 겪으면서 배웠습니다. 대규모 트래픽이라면 로드밸런서와 캐싱 레이어를 먼저 고려해야 한다는 것도 그 경험을 통해 알게 됐습니다.