AI Briefing

대규모 환경에서의 컨테이너 종료 문제 해결

·2021.02.01 09:00

핵심 내용

Replit은 선점형 VM 환경에서 발생하는 느린 컨테이너 종료 문제를 해결하여 세션 연결 오류율을 낮추고 부팅 시간을 단축했다.

자세히 보기

Replit은 비용 효율을 위해 **선점형 VM(preemptible VMs)**을 사용하며, 이로 인해 인스턴스가 빈번하게 종료되는 환경을 운영한다. 최근 사용자들이 세션 연결에 오래 걸리는 문제를 겪었으며, 분석 결과 컨테이너 종료 속도가 매우 느리다는 것을 발견했다.

Replit의 아키텍처는 브라우저가 WebSocket을 통해 VM 내의 Docker 컨테이너에 연결되는 방식이다. 각 VM에는 컨테이너를 관리하는 **conman(container manager)**이 실행된다. VM이 종료될 때 모든 컨테이너가 완전히 파괴되어야 다른 머신에서 새로운 컨테이너를 시작할 수 있다.

조사 결과, VM 종료 시 docker kill 명령이 예상보다 훨씬 오래 걸리는 것으로 나타났다. 정상적인 상황에서는 밀리초 단위로 완료되어야 할 작업이, 종료 시점에 100~200개의 컨테이너를 동시에 종료할 때는 20초 이상 소요되었다.

이 문제를 해결함으로써 Replit은 다음과 같은 성과를 거두었다:

  • 세션 연결 오류율: 3%에서 0.5% 미만으로 감소
  • 99퍼센타일(p99) 세션 부팅 시간: 2분에서 15초로 단축

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.