시스템을 마이그레이션하지 않았습니다. 가정을 마이그레이션했습니다: Heroku에서 EKS로, 대규모로

(dev.to)
Dev.to OpenSourceSaaS
시스템을 마이그레이션하지 않았습니다. 가정을 마이그레이션했습니다: Heroku에서 EKS로, 대규모로

Heroku에서 EKS로의 마이그레이션 과정에서 겪은 CPU 스로틀링, DNS 증폭, SIGTERM 처리 오류 사례를 통해, 인프라 이전은 단순한 시스템 교체가 아닌 기존의 기술적 가정을 재검증하는 과정임을 보여주는 심층적인 기술 분석입니다.

이 글의 핵심 포인트

  • 1CPU Limit 500m은 단순 용량이 아닌 100ms당 50ms 실행이라는 스케줄링 규칙이며, 이를 위반할 시 CFS Throttling으로 인한 극심한 지연 발생
  • 2EKS의 ndots:5 설정이 외부 API 호출 시 DNS 쿼리 수를 최대 10배로 증폭시켜 CoreDNS 과부하 유발
  • 3Dockerfile의 CMD Shell form 사용 시 SIGTERM 신호가 Node.js 프로세스에 전달되지 않아 커넥션 풀 고갈 및 서비스 중단 초래
  • 4Heroku의 편리한 추상화(Dyno bursting 등)가 인프라 전환 시 예상치 못한 성능 병목의 원인이 됨
  • 5성공적인 마이그레이션을 위해서는 단순 CPU 사용량이 아닌 container_cpu_cfs_throttled_periods_total 같은 정밀한 메트릭 관측 필요

이 글에 대한 공공지능 분석

왜 중요한가?

인프라 마이그레이션을 단순한 '코드 이동'으로 생각하는 엔지니어들에게 인프라의 기본 설정(Defaults)이 시스템 성능에 미치는 파괴적인 영향을 경고합니다. 특히 '평균 CPU 사용량' 같은 지표가 놓칠 수 있는 '스로틀링'과 같은 미세한 병목 현상을 파헤칩니다.

어떤 배경과 맥락이 있나?

성장하는 SaaS 기업은 PaaS(Heroku)의 편리함이 주는 비용적, 성능적 한계(Scaling Ceiling)에 직면하게 됩니다. 이때 비용 절감과 제어권 확보를 위해 Managed Kubernetes(EKS)로 이동하는 것은 전형적인 성장 단계의 기술적 도전입니다.

업계에 어떤 영향을 주나?

이 사례는 클라우드 네이티브 환경에서 '관측 가능성(Observability)'의 범위를 단순한 리소스 사용량을 넘어, 스케줄러의 동작 방식과 네트워크 프로토콜의 세부 설정까지 확장해야 함을 시사합니다. 이는 인프라 엔지니어링의 수준을 결정짓는 핵심 요소가 됩니다.

한국 시장에 어떤 시사점이 있나?

글로벌 확장을 목표로 AWS 등 퍼블릭 클라우드를 사용하는 한국 스타트업들에게, 인프라 전환 시 '기존에 잘 작동하던 로직'이 새로운 환경의 기본 설정(예: ndots 설정) 때문에 어떻게 성능 저하를 일으킬 수 있는지에 대한 강력한 기술적 경고를 제공합니다.

이 글에 대한 큐레이터 의견

이 글의 핵심인 "우리는 시스템이 아니라 가정을 마이그레이션했다"는 문장은 모든 테크 리더들이 가슴에 새겨야 할 통찰입니다. 많은 창업자와 엔지니어들이 PaaS가 제공하는 편리한 추상화 뒤에 숨겨진 '보이지 않는 규칙'들을 당연한 진리로 받아들입니다. 하지만 서비스 규모가 커져 인프라의 제어권을 가져오려는 순간, 그동안 당연시했던 모든 가정(Assumption)은 잠재적인 폭탄으로 변합니다.

스타트업 창업자 관점에서 볼 때, 이는 기술 부채의 성격이 단순히 '나쁜 코드'에만 있는 것이 아니라 '잘못된 환경적 가정'에도 있음을 의미합니다. EKS로의 전환은 비용과 확장성이라는 기회를 제공하지만, 동시에 운영 복잡도라는 막대한 비용을 요구합니다. 따라서 마이그레이션 계획을 세울 때는 단순한 기능 이전을 넘어, 새로운 환경의 스케줄러, 네트워크 DNS, 프로세스 생명주기 등 하부 구조의 동작 방식을 재검증하는 '가정 검증 프로세스'가 반드시 포함되어야 합니다.

원문 보기 →

관련 뉴스

댓글

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.

관련 토픽Dev.toSaaS