Search

MiMiDaily

레거시 애플리케이션의 클라우드 네이티브 전환

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