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

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 /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 /app/extracted/dependencies/ ./
COPY /app/extracted/spring-boot-loader/ ./
COPY /app/extracted/snapshot-dependencies/ ./
COPY /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 앱을 서비스할 수 있습니다.