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/...)