
Bun 런타임과 GitLab CI로 완성한 클라우드 네이티브 운영 전략
여기어때 DevOps 팀이 시크릿 저장소 'Secrethub'을 구축하며 적용한 현대적인 운영 자동화 사례를 소개합니다. 단순한 배포를 넘어 서비스 독립적인 로그 수집과 표준화된 CI/CD 파이프라인을 통해 플랫폼 레벨에서 관리 가능한 구조를 설계한 과정을 상세히 담고 있습니다.
레거시 EC2 환경을 유지하면서도 차세대 인프라(EKS)로의 전환을 준비하는 팀에게 강력히 추천합니다. 특히 다중 언어 환경에서 표준화된 배포 프로세스와 로깅 시스템을 구축하고자 하는 DevOps 엔지니어에게 실질적인 가이드를 제공합니다.
기존 Jenkins 기반의 EC2 배포 구조는 서비스마다 스크립트가 파편화되어 있어 중앙 관리가 어려웠고, 전체 배포 현황을 일관되게 파악하는 데 한계가 있었습니다. 또한, 다수의 컨테이너가 운영되는 환경에서 개별 서비스마다 로깅 라이브러리와 OTEL 설정을 적용해야 하는 운영 부담이 존재했습니다.
Bun 런타임의 단일 파일 번들링 기능을 활용해 컨테이너 이미지를 최적화하고, EC2와 EKS에 모두 적용 가능한 GitLab CI 공통 템플릿을 도입하여 배포 파이프라인을 표준화했습니다. 로그 수집은 애플리케이션 수정 없이 Docker 레벨에서 Loki Driver를 통해 직접 LGTM 스택으로 전송하는 방식을 채택했습니다.
전사적으로 표준화된 CI/CD 파이프라인을 통해 운영 확장성을 확보했으며, 향후 EKS 마이그레이션 시 CD 단계만 교체하면 되는 유연한 구조를 만들었습니다. 로깅 책임을 플랫폼으로 이관함으로써 언어에 독립적인 관측성 환경을 구축하고 이미지 크기를 대폭 줄였습니다.
Trade-off
중앙 집중식 CI 템플릿 사용으로 인해 개별 프로젝트의 특수한 요구사항을 반영하기 위한 유연성은 다소 줄어들 수 있습니다. 본문에 명시되지 않았으나, Docker Loki Driver 사용 시 드라이버 플러그인 장애가 컨테이너 로그 출력 지연이나 시스템 부하에 영향을 줄 수 있는 잠재적 리스크에 대한 대비가 필요합니다.
빠른 실행 속도와 번들러를 내장하여 TypeScript를 별도 컴파일 없이 실행할 수 있는 JavaScript/TypeScript 런타임입니다.
Docker 컨테이너의 표준 출력 로그를 Grafana Loki로 직접 전송하는 로깅 드라이버 플러그인입니다.
배포 대상과 상관없이 동일한 CI 흐름을 유지할 수 있도록 DevOps 팀에서 관리하는 표준화된 파이프라인 정의서입니다.




