[실습생의 스타트업 생존기 - 1 빌드] 운영환경은 빌드가 필수입니다.
저는 로봇 기반 조리 자동화 스타트업에서 개발 실습생으로 이번 학기를 보내고 있습니다. 실습생이지만 다른 개발자가 없는 만큼 더 큰 책임감을 가지고 활동하고 있습니다.
# 모니터링 시작
입사 후 가장 먼저 모니터링 시스템을 구축했습니다. 이전 경험상 자원이 제한된 서버는 CPU, RAM, Disk 사용량이 급등하면서 서비스가 다운되는 경우가 많았습니다. 그래서 임계치를 정하고 넘어가면 알림이 오도록 했습니다.
# 문제 발견
모니터링을 이어가던 중, 서비스가 다른 프로젝트보다 메모리를 많이 쓰고 재시작도 오래 걸리는 문제를 발견했습니다. 조사해보니 운영 환경에서 단순히 “nest start” 명령어로 실행되고 있었습니다.
# 해결 과정
도커파일을 수정하여 “nest build” 과정을 추가했고, Github Actions를 통해 자동으로 빌드된 이미지를 회사 Github Packages에 배포하도록 구성했습니다. 여러 차례 테스트를 거친 뒤 실제 서비스에 적용한 결과, 리소스 사용량을 줄이고 서버 시작 시간을 단축할 수 있었습니다. 그 덕분에 재시작시 다운타임도 최소화할 수 있었습니다. 특히 리소스가 적은 미국 서버에 먼저 적용했을 때 성공적이었고, 비슷한 트래픽을 처리하는 한국 서버에도 리소스를 줄여 비용을 절감하자는 건의를 준비하고 있습니다.
# 결과
사용하고 있는 NestJS 서비스는 총 3개이며, 기존 램 용량을 720MB 사용했지만, 동일 기간 기준 247MB 으로 약 473MB 를 절약할 수 있었습니다. 미국 서버 같은 경우 서버 램은 2GB 를 사용하고 있기 때문에 25%p (71% → 45%) 가량 규모의 램을 절약할 수 있었습니다.
# 배운점
학부 시절에는 클라우드 비용이 부담스러워 항상 최소한의 자원만 쓰며 최적화에 집중했습니다. 스타트업 환경도 크게 다르지 않았습니다. 더 좋은 컴퓨터를 쓰는 것은 돈이 있으면 누구나 할 수 있지만, 불필요한 리소스를 감지하고 최적화하는 것은 개발자만이 할 수 있다고 생각합니다.
최근에는 5억 건의 클릭 요청을 $4 VPS로 처리한 사례를 보면서, 스케일링 전에 최적화가 얼마나 중요한지 다시 느꼈습니다. (Andrew Schmelyun - Handling 500M clicks with a $4 VPS, Youtube)
유튜브 링크: https://www.youtube.com/watch?v=nk3Ti0tCGvA
# 앞으로
앞으로 회사 서버 비용을 월 200만원에서 50만원으로 낮추면서 사용한 방법과 고민들을 조금씩 남겨보려고 합니다. 회사에서는 혼자 고민하는 경우가 많아, 혹시 제 접근 방식에 대한 피드백이나 개선점이 있다면 꼭 알려주시면 큰 도움이 될 것 같습니다.
