컨테이너 기반 배포란 무엇일까?

주딩·2025년 3월 11일
0

CS 공부

목록 보기
3/5

🌱
오늘 전문가 리뷰가 있어서 한 회사에서 머신러닝 팀에서 일하고 계신 전문가와 이야기를 할 시간이 있었다.
이야기를 하면서 백엔드에서 필수적으로 해봐야 할 것이 "컨테이너 기반의 배포"라는 얘기를 해주셨다.
여기서 컨테이너 기반의 배포가 무슨 의미인지 알고싶다는 생각이 들었다!


컨테이너 기반 배포란?

컨테이너 기반 배포는 애플리케이션과 그 종속성을 "컨테이너"라는 격리된 환경에 패키징하여 배포하는 방식이다. 여기서 컨테이너는 애플리케이션을 실행하는데 필요한 모든 환경을 포함한다.

주요 컨테이너 기술들

  • Docker: 가장 널리 사용되는 컨테이너 플랫폼
  • Podman: 데몬 없이 동작하는 보안 중심 컨테이너 도구
  • containerd: 클라우드 네이티브 컴퓨팅 재단(CNCF)의 컨테이너 런타임

컨테이너 배포의 장점

  1. 일관성
    "내 컴퓨터에서는 작동했는데..." 문제 해결
  2. 격리성
    각 애플리케이션이 독립적으로 실행되어 충돌 방지
  3. 이식성
    개발, 테스트, 운영 환경 간 동일한 실행 환경 보장
  4. 효율성
    가상머신보다 가볍고 빠르게 실행
  5. 확장성
    쉽게 확장하고 오케스트레이션 도구와 연동 가능

기본 워크플로우

  1. 코드 작성 및 애플리케이션 개발
  • 개발자가 애플리케이션 코드를 작성
  • 로컬 환경에서 테스트
  1. Dockerfile 작성
  • 애플리케이션 실행에 필요한 환경을 코드로 정의
  • 기본 이미지, 필요한 패키지, 종속성, 설정, 파일 복사, 실행 명령어 등을 명시
  1. 컨테이너 이미지 빌드
  • Dockerfile을 기반으로 애플리케이션과 환경이 패키징된 이미지를 생성
  • 이 이미지는 불변(immutable)이며, 애플리케이션의 스냅샷이라고 생각하면 됨
  1. 이미지 저장소에 업로드
  • 빌드된 이미지를 Docker Hub, AWS ECR, Google GCR 같은 이미지 레지스트리에 업로드
    5.배포 환경에서 컨테이너 실행
  • 저장소에서 이미지를 가져와서 실행 환경에서 컨테이너로 실행
  1. 모니터링 및 관리
  • 실행 중인 컨테이너의 상태를 모니터링
  • 필요에 따라서 스케일 업/다운, 업데이트, 롤백 등을 수행
  1. 업데이트 및 새 버전 배포
  • 코드 수정 시 새 이미지를 빌드하고 태그를 변경
  • 새 이미지를 레지스트리에 업로드
  • 배포 환경에서 새 버전의 컨테이너로 교체(무중단 배포 가능)

지속적 통합/배포(CI/CD)와의 연계

  • Jenkins, GitHub Actions, GitLab CI 등과의 통합
  • 자동화된 빌드-테스트-배포 파이프라인 구성

컨테이너 배포 과정 흐름도

컨테이너 배포 흐름도

profile
모든 것은 익숙해지기 전까지 어렵다!

0개의 댓글