Python 미세 서비스 AWS EKS + Docker, Helm, RabbitMQ 배포 가이드

Python 미세 서비스 앱을 AWS EKS, Docker, Helm, RabbitMQ로 배포하는 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • 개발자/DevOps 엔지니어/클라우드 아키텍트
  • 중간~고급 수준의 실무 지식이 필요한 사용자
  • Kubernetes, 컨테이너화, 마이크로서비스 아키텍처 배우고 싶은 사람

핵심 요약

  • AWS EKS + Helm + Docker를 활용한 모듈화된 마이크로서비스 배포
  • RabbitMQ를 통해 서비스 간 메시지 큐링 및 비동기 처리 구현
  • MongoDB/PostgreSQL을 활용한 인증, 토큰 저장, 데이터 관리

섹션별 세부 요약

1. 사전 조건 설정

  • AWS CLI, kubectl, Python, Docker, Helm 설치 및 구성
  • IAM 자격 증명 및 AWS CLI 인증 상태 확인

2. EKS 클러스터 생성

  • AWS EKS 클러스터 및 노드 그룹 생성
  • EC2 인스턴스 상태 확인 및 클러스터 활성화 상태 확인

3. EKS 클러스터 CLI 연결

  • aws eks update-kubeconfig 명령어로 CLI와 클러스터 연결
  • kubectl 명령어로 클러스터 관리 가능

4. 데이터베이스 및 메시지 큐 배포

  • Helm 차트를 사용한 MongoDB, PostgreSQL, RabbitMQ 배포
  • RabbitMQ에서 큐 생성 확인 (포트 30004 접근)

5. 미세 서비스 컨테이너 이미지 빌드 및 배포

  • docker build -t your-image-name . 명령어로 이미지 빌드
  • docker push your-image-name 명령어로 Docker Hub에 이미지 푸시
  • 각 서비스 (auth, converter, gateway, notification) 이미지 생성 및 푸시

6. Helm을 통한 미세 서비스 배포

  • Helm 차트 생성 후 EKS 클러스터에 서비스 배포
  • 모든 서비스 상태 확인 (kubectl get pods 등)

7. 기능 검증

  • PostgreSQL에서 토큰 획득 및 이메일 알림 확인
  • MP3 파일 변환 및 다운로드 테스트 (변환된 파일 재생 확인)

결론

  • AWS EKS + Helm + Docker 조합은 확장성 있는 마이크로서비스 아키텍처 구현에 적합
  • RabbitMQ를 활용한 비동기 처리는 시스템 성능 최적화에 효과적
  • GitHub 리포지토리 참조하여 실습 가능 (https://github.com/...)