메인 콘텐츠로 건너뛰기

Spring Boot 애플리케이션을 Amazon ECS에 배포하기

설탕사과
설탕사과
조회수 20
요약

Amazon ECS란 무엇인가요?

Amazon ECS는 컨테이너를 손쉽게 관리할 수 있는 AWS의 서비스입니다. 개발자는 서버 설정이나 오케스트레이션 복잡도를 줄이고, 애플리케이션을 자동으로 배포·확장·모니터링할 수 있습니다.

준비물 체크

배포를 시작하려면 다음이 필요합니다:

  • Java & Spring Boot 프로젝트

  • Docker(이미지 빌드용)

  • AWS CLI(명령어 실행/이미지 푸시용)

Spring Boot Docker 이미지 만들기

Spring Boot 프로젝트를 준비했다면, 아래와 같이 Dockerfile을 이용해 이미지를 빌드합니다. 다중 단계(Docker multi-stage)를 활용하면 이미지가 더 작아집니다.

FROM bellsoft/liberica-runtime-container:jdk-21-musl as builder
WORKDIR /app
COPY .mvn/ .mvn
COPY mvnw pom.xml ./
COPY src src
RUN ./mvnw clean package -DskipTests

FROM bellsoft/liberica-runtime-container:jre-21-slim-musl AS optimizer
WORKDIR /app
COPY --from=builder /app/target/*.jar app.jar
RUN java -Djarmode=tools -jar app.jar extract --layers --destination extracted

FROM bellsoft/liberica-runtime-container:jre-21-slim-musl AS final
WORKDIR /app
EXPOSE 8080
COPY --from=optimizer /app/extracted/dependencies/ ./
COPY --from=optimizer /app/extracted/spring-boot-loader/ ./
COPY --from=optimizer /app/extracted/snapshot-dependencies/ ./
COPY --from=optimizer /app/extracted/application/ ./
RUN rm -rf src .mvn mvnw pom.xml target /var/cache/apk/*
ENTRYPOINT [java, -jar, /app/app.jar]

빌드 명령:

docker build . -t demo-app-liberica-multi-stage -f Dockerfile-liberica-multi-stage

ECR에 Docker 이미지 저장하기

ECR(Elastic Container Registry)에 저장하면 AWS 서비스에서 이미지를 쉽게 가져올 수 있습니다.

  1. AWS 콘솔에서 새 ECR 저장소 생성

  2. 이미지에 ECR URL로 태그 지정

docker tag demo-app-liberica-multi-stage:latest [ECR-URL]/demo-app-liberica
  1. 로그인 후 이미지 푸시

aws ecr get-login-password --region [region] | docker login --username AWS --password-stdin [ECR-URL]
docker push [ECR-URL]/demo-app-liberica

ECS에서 태스크 정의하기

ECS 콘솔에서 태스크 정의(task definition)를 생성하면서 이미지 위치, 포트, 리소스(메모리/CPU 등)를 설정합니다.

  • 컨테이너 이름 지정

  • 이미지 URI 입력(ECR URL)

  • 포트 매핑(예: 웹앱이면 80 포트)

  • 필요 리소스 설정: vCPU, 메모리(애플리케이션 특성에 맞게 선택)

ECS 클러스터 만들기

배포할 공간인 클러스터를 생성합니다.

  • 이름 지정

  • Fargate 선택(서버 관리 필요 없음)

  • 몇 초 안에 클러스터가 생성됨

서비스 배포 및 관리

클러스터 안에서 서비스를 배포하면 자동으로 컨테이너가 실행되고, 장애 시 자동 복구됩니다.

  • 서비스 이름과 태스크 정의 지정

  • 원하는 수의 태스크(1개 이상) 선택

  • FARGATE 타입, 필요 시 롤링 업데이트 설정

  • 보안을 위해 Security Group 연결

배포 상태 확인 및 접근

서비스가 생성되면 ECS에서 상태 확인이 가능하고, 퍼블릭 IP를 통해 애플리케이션을 바로 테스트할 수 있습니다. 예시: /welcome API 호출 시 정상 응답 확인

확장 및 업데이트 방법

  • 서비스의 태스크 수만 바꾸면 바로 확장(Scale Up/Down) 가능

  • 새로운 이미지 배포 시 ‘Force new deployment’ 옵션으로 이전 버전이 남지 않게 강제 갱신

팁과 주의사항

  • Docker 이미지는 가능하면 최적화해서 용량을 줄이는 것이 좋습니다(빨리 배포됨)

  • 사용하지 않는 이미지는 삭제하여 불필요한 비용 발생을 막습니다

  • ECS 활용 시 자동화, 확장, 모니터링이 쉬워집니다

마무리

Amazon ECS를 이용하면 Spring Boot 컨테이너 앱을 클라우드에 쉽고 안전하게 배포할 수 있습니다. 단계별로 따라 하면 누구나 시작할 수 있습니다!


출처 : East Step Guide to Deploy Spring Boot Application on Amazon ECS. | by Byte Coders | Aug, 2025 | Medium