1. Blue-Green 배포와 Canary 배포의 차이점과 사용 사례를 설명해주세요
  2. Kubernetes에서 Pod가 무엇인지 설명하고, Pod의 라이프사이클을 설명해주세요
  3. 컨테이너 오케스트레이션 도구를 사용해본 경험이 있나요? 이를 통해 얻은 이점을 설명해주세요
  4. 로깅의 중요성과 서버 애플리케이션에서 로그를 효과적으로 관리하는 방법을 설명해주세요
  5. 애플리케이션 배포 시 발생할 수 있는 다운타임 최소화 방법을 설명해주세요

1. Blue-Green 배포와 Canary 배포

Blue-Green 배포

  • 두 개의 거의 동일한 환경을 만들어서 새로운 버전의 애플리케이션을 Green 환경에 배포하고 문제가 없으면 트래픽을 Blue 환경에서 Green 환경으로 전환하는 방식
  • Blue - 기존 프로덕션 환경, Green - 새로운 버전이 배포된 환경
  • 배포 흐름
    • Green 환경에 새로운 버전 배포
    • Green 환경에서 새로운 버전이 정상적으로 작동하는지 검증
    • 트래픽을 Green 환경으로 전환
  • 사용 사례
    • 운영중인 시스템에 영향을 주지 않으면서 새로운 버전을 배포하고자 할 때
    • 배포 후 바로 롤백이 필요한 경우
    • 배포 위험도가 높은 시스템
  • 장점
    • 빠른 롤백, 전체 시스템 교체
  • 단점
    • 두 환경을 동시에 유지 - 리소스 소모
    • 환경 관리 복잡함

Canary 배포

  • 일부 사용자/일부 서버에만 배포하여 점진적으로 배포하는 방식
  • 사용사례
    • 대규모 서비스에서 점진적으로 새로운 버전을 검증하고 싶을 때
    • 새로운 기능이 사용자에게 미칠 영향을 최소화하고자 할 때
  • 장점
    • 문제가 발생해도 소수의 사용자에게만 영향
    • 리스크 분산
  • 단점
    • 배포 속도 느림
    • 점진적 배포 관리 복잡

Blue-Green 배포는 전체 시스템을 한번에 교체할 수 있는 전략으로 빠른 롤백이 필요할 때, Canary 배포는 점진적으로 새 버전을 배포하고 실사용 데이터를 기반으로 검증하고 위험을 최소화하고 싶을 때 적합

Kubernetes Pod

쿠버네티스

  • 컨테이너화된 애플리케이션을 배포하고 관리하고 자동화하기위한 컨테이너 오케스트레이션 플랫폼
  • Docker와 같은 컨테이너 기술을 활용하여 애플리케이션을 클러스터 환경에서 효율적으로 배포하고 관리할 수 있게 해줌

Pod

  • 애플리케이션을 실행하는 가장 작은 배포 단위
  • 하나의 Pod는 하나 이상의 컨테이너를 포함할 수 있으며 동일한 네트워크 네임스페이스를 공유합니다
  • 주요 특징
    • 동일한 네트워크 환경
    • 볼륨 공유

Pod 라이프 사이클

  1. pending : Pod가 생성되었으나 실행되지 않고 있는 상태
  2. running : Pod가 노드에서 실행중인 상태
  3. Succeeded : Pod의 모든 컨테이너가 정상적으로 실행을 완료하고 종료된 상태
  4. Failed : 오류로 종료된 상태

상태 변화

  1. Pod 생성 : 사용자가 쿠버네티스 클러스터에 Pod를 생성하면 pending 상태로 시작, 스케줄러를 통해 적합한 노드를 선택하고 Pod 배치
  2. 실행 : 스케줄러가 pod를 배치하면 running으로 상태 전환, 노드에서 컨테이너 실행
  3. 성공 또는 실패 : 작업 후 성공/실패 상태로 전환
  4. 삭제 : 사용자가 pod를 삭제하면 해당 Pod 종료

컨테이너 오케스트레이션 도구

컨테이너 오케스트레이션 도구

  • 컨테이너화된 애플리케이션을 배포, 관리, 확장, 모니터링, 자동화하는 도구
  • 여러개의 컨테이너를 효율적으로 관리하기 위해 시스템 리소스를 조율하고, 장애 발생 시 자동으로 복구하는 기능 제공
  • kubernetes

사용 이점

  1. 컨테이너를 자동으로 배포
  2. 트래픽 증가에 따라 컨테이너 수 확장/축소 가능
  3. 장애발생시 자동으로 복구하거나 다른 노드에서 재시작하여 고가용성 보장
  4. 여러 컨테이너를 효율적으로 배치하고 자원을 자동으로 할당하여 리소스 최적화
  5. 여러대의 서버나 클라우드 환경에서 관리할 수 있어 분산 시스템 관리 용이

장점

  1. 자동화된 관리
  2. 빠른 배포 및 업데이트 가능
  3. 리소스 관리 최적화

단점

  1. 복잡함
  2. 리소스 소모가 큼
  3. 복잡한 설정과 옵션때문에 오버헤드 발생할 수 있음

특징

  1. 수평적 확장 지원
  2. 장애 발생 시 자동으로 복구하거나 다른 컨테이너에서 재시작
  3. 서비스 디스커버리 : 서비스를 자동으로 탐지하고 연결

로깅

  • 서버 애플리케이션에서 발생하는 이벤트와 동작을 기록하는 작업
  • 애플리케이션의 상태를 추적하고 문제를 진단하며 운영환경에서 성능 모니터링

중요성

  1. 디버깅 : 로그를 통해 오류 원인과 흐름 파악
  2. 성능 모니터링 : 응답시간, 데이터베이스 쿼리 시간을 로그로 기록하고 성능 문제 식별
  3. 보안 : 로그를 통해 침입 시도나 의심스러운 활동 감지
  4. 모니터링 및 알림

로그를 효과적으로 관리하는 방법

  1. 로그레벨 설정 : 필요한 정보만 기록
  2. 로그 포맷 통일
  3. 중앙 집중 식 로그 관리 시스템 : ELK, Grafana+Lokki
  4. 알림 및 모니터링 : 중요 이벤트나 오류 발생 시 알림 시스템과 통합하여 실시간 알림
  5. 시각화 : Kibana

애플리케이션 배포 시 발생하는 다운타임 최소화

  • 배포 전략과 도구를 선택하고 모니터링과 롤백 시스템을 잘 구성하는것이 중요
  • 배포 중 시스템이 중단되지 않도록 안전한 방법을 선택, 사용자 경험을 해치지 않고 안정적인 서비스 제공