메인 콘텐츠로 건너뛰기

Amazon ECS에 Spring Boot 어플리케이션 배포 한눈에 보기

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

Amazon ECS란 무엇인가요?

Amazon ECS는 컨테이너 관리와 오케스트레이션을 자동으로 처리해주는 AWS 서비스입니다. 도커 이미지를 쉽게 배포, 관리, 확장할 수 있어서 많은 기업들이 선택하고 있습니다.

준비사항

Spring Boot와 Java로 개발한 애플리케이션, Docker 파일, 그리고 AWS CLI(명령줄 도구)가 필요합니다. AWS CLI는 인증 정보를 미리 세팅해야 다양한 AWS 자원을 사용할 수 있습니다.

Spring Boot 애플리케이션을 도커로 빌드하기

Spring Boot 프로젝트를 아래와 같이 Docker 이미지로 패키징할 수 있습니다. 멀티 스테이지로 이미지를 최적화하는 Dockerfile 예시입니다.

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에 이미지 저장소 만들기

만든 도커 이미지는 Amazon ECR(이미지 저장소)에 올려야 ECS에서 사용할 수 있습니다. AWS 콘솔에서 저장소를 새로 만들고 이름만 입력하면 완료됩니다.

ECR로 도커 이미지 푸시하기

이미지 태그 수정 및 로그인, 푸시 방법은 다음과 같습니다.

docker tag demo-app-liberica-multi-stage:latest <계정ID>.dkr.ecr.<리전>.amazonaws.com/<레포명>
aws ecr get-login-password --region <리전> | docker login --username AWS --password-stdin <계정ID>.dkr.ecr.<리전>.amazonaws.com
docker push <계정ID>.dkr.ecr.<리전>.amazonaws.com/<레포명>

이제 도커 이미지는 ECR에 올라가고 ECS에서 바로 가져다 쓸 수 있습니다.

ECS 태스크 정의 만들기

ECS 대시보드에서 태스크 정의를 만듭니다. 실행 환경(Fargate, 리눅스, 리소스)과 도커 이미지 위치, 포트 설정 등을 입력합니다. 리소스 옵션(메모리, vCPU)은 앱 요구에 맞게 조절하세요.

ECS 클러스터 생성

클러스터는 태스크들을 묶어 관리하는 그룹입니다. Fargate 타입을 선택하면 서버 관리 없이 클러스터를 만들 수 있습니다. 클러스터 이름만 정하면 준비 완료!

서비스를 통한 태스크 배포하기

클러스터에 태스크 정의를 붙여 ‘서비스’ 형태로 배포하면 확장/관리가 쉬워집니다. 서비스는 항상 원하는 태스크 개수(예: 1개)를 유지해서 장애 발생 시 자동으로 복구해줍니다. 네트워킹(보안 그룹) 설정도 이 단계에서 진행합니다.

운영 관리: 확장과 재배포

서비스의 desired tasks 숫자만 바꾸면 자동으로 배포되는 태스크 수가 늘거나 줄어듭니다. 이미지 업데이트가 필요하다면 “Force new deployment” 옵션을 반드시 선택하세요.

실전 팁 & 마무리

도커 이미지가 작을수록 배포가 빠릅니다. 불필요한 이미지는 비용이 발생하니 꼭 주기적으로 삭제하세요. Amazon ECS를 활용하면 개발자가 인프라 고민 없이 손쉽게 Spring Boot 앱을 서비스할 수 있습니다.


출처 : Deploying a Spring Boot Application to Amazon Elastic Container Service (Amazon ECS) | by Fahim Fahad | Aug, 2025 | Medium