레거시 애플리케이션의 클라우드 네이티브 전환
1. Overview
MiMiDaily는 컨테이너화를 고려하지 않은 웹 애플리케이션을 EKS 환경에 적합하도록 개선하고, 클라우드 네이티브 아키텍처로 전환한 프로젝트입니다. 로컬 저장 방식의 파일 업로드를 S3로 이전하고, AWS EKS에 배포하였습니다.
•
클라우드 네이티브 전환: 로컬 스토리지 → S3, IRSA로 최소 권한 부여
•
보안 강화: Secrets Manager + KMS + ESO로 안전한 시크릿 주입
•
안정적 운영: ALB + Sticky Session으로 세션 일관성 확보
•
자동화 배포: GitHub Actions → ECR → ArgoCD 기반 GitOps 파이프라인
2. Role & Responsibilities
개발 기간 | 인원 | 담당 영역(기여도 80%) |
2025 - 09 - 17
2025-09 - 24 ( 1 주 ) | 3명 | 팀장, 클라우드 네이티브 전환
CI/CD, 보안 관리, 배포 전략 수립 |
주요 기여
•
Containerization
◦
기존 애플리케이션 Dockerfile 작성 및 EKS 최적화
•
Storage Migration
◦
로컬 저장 → S3 전환, IRSA 적용, 이를 위해 애플리케이션 코드 수정
•
Security
◦
Secrets Manager, KMS, ESO로 Secret 주입 파이프라인 구축
•
CI/CD
◦
GitHub Actions + ECR + ArgoCD로 GitOps 배포 자동화
3. Problem Statement
초기 애플리케이션은 로컬 파일 저장과 단일 서버 운영으로 다음 문제가 있었습니다.
•
확장성 부재: 노드 증설 시 로컬 파일 공유 불가로 스케일 아웃 제한
•
보안 취약: DB 접속 정보와 API Key가 레포에 노출될 위험
4. Methods
4.1 IRSA 적용
•
Pod 단위 ServiceAccount
IAM Role 연결
•
필요한 최소 권한(s3:PutObject, s3:GetObject)만 부여하여 보안 강화
•
CI/CD 파이프라인에서 AWS 자격증명을 코드/레포에 직접 저장하지 않음
4.2 ESO + KMS 기반 Secret 관리
•
External Secrets Operator(ESO) 를 이용해 AWS Secrets Manager에서 DB 접속정보, API Key 자동 동기화
•
KMS Key 로 암호화되어 저장된 Secret을 Pod가 실행될 때 자동으로 주입
•
개발/운영 환경에 따라 다른 Secret을 적용할 수 있어 GitOps 환경에서도 안전한 민감정보 관리 가능
5. Trouble Shooting — 세션 유지 실패
증상: 로그인 후 페이지 이동 시 간헐적 로그아웃 발생
원인 분석
•
ALB 기본 라운드로빈으로 동일 사용자 요청이 서로 다른 파드로 분산
•
Tomcat 파드 간 세션 쿠키 공유 부재
해결
•
Kubernetes Service에 sessionAffinity: ClientIP 설정
•
ALB Ingress에 Sticky Session 활성화 및 쿠키 TTL 3600초 설정
결과
•
로그인 세션 안정화. 세션 관련 오류 재현 불가, 사용자 경험 개선
Used Skills
•
AWS EKS
•
Kubernetes
•
ArgoCD
•
Helm
•
Terraform
•
AWS S3 + IRSA
•
Secrets Manager + KMS + ESO
•
Spring Boot
•
GitHub Actions
•
RDS