레거시 모놀리스를 AWS 서버리스로 마이그레이션

발행: (2025년 12월 10일 오후 11:40 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

개요

이 프로젝트는 Strangler Fig Pattern을 사용하여 레거시 모놀리식 애플리케이션을 AWS 서버리스 아키텍처로 마이그레이션하는 방법을 보여줍니다. 다음을 활용합니다:

  • 인프라스트럭처를 코드로 관리하는 Terraform
  • 애플리케이션 로직을 구현하는 Python

목표는 새로운 기능을 모놀리식에서 분리하여 서버리스 컴포넌트로 교체하는 과정을 기존 시스템을 중단하지 않고 시연하는 것입니다.

아키텍처

솔루션은 다음과 같은 주요 구성 요소로 이루어집니다:

  • 레거시 모놀리식
  • 새로운 서버리스 컴포넌트

라우트 동작

라우트설명
/products마이그레이션된 라우트
/products/restock강화된(혼돈) 라우트

사전 요구 사항

배포하기 전에 다음을 준비하세요:

  • AWS 계정 (Free Tier 사용 가능)
  • AWS CLI 설치 및 설정 (aws configure)
  • Terraform v1.0 이상
  • 테스트용 Postman 또는 curl

프로젝트 구조

strangler-fig-aws-migration-demo/

배포 단계

1️⃣ Terraform 초기화

# infra-terraform 디렉터리 안에서
terraform init

2️⃣ 인프라 배포

terraform apply

프롬프트가 나오면 yes를 입력합니다.
배포는 약 2분 정도 소요되며, EC2 인스턴스가 의존성을 설치하고 레거시 서버를 시작하는 데 추가로 약 3분이 더 걸립니다.

3️⃣ API URL 가져오기

Terraform은 다음과 유사한 값을 출력합니다:

api_url = "https://.execute-api.us-east-1.amazonaws.com"

테스트를 위해 이 URL을 복사하세요.

테스트 시나리오

시나리오엔드포인트설명
1/users레거시 라우트
2/products마이그레이션된 라우트
3/products/restock혼돈 라우트 (POST)

시나리오 3에 대한 예시 요청:

curl -X POST /products/restock

문제 해결 가이드

문제원인
502 Bad GatewayAPI Gateway가 EC2 인스턴스에 도달하지 못함.
400 Bad Request페이로드 버전 불일치.
500 Internal Server Error혼돈 테스트를 위한 의도된 오류.
405 Method Not AllowedPOST 전용 라우트에 GET 사용.

필요 시 요청을 다시 실행하세요:

curl -X POST /products/restock

정리 (요금 발생 방지)

작업이 끝났으면 모든 리소스를 삭제합니다:

terraform destroy
Back to Blog

관련 글

더 보기 »

Story CLI 구축: 30분 IP 등록에서 5분 이하까지

이 프로젝트를 시작하게 된 문제는 다음과 같습니다. Web3 개발자 도구에 대해 저를 불편하게 만든 점은 이 도구들이 종종 경험 많은 블록체인 개발자들에 의해 만들어진다는 것입니다.