본문 바로가기
Spring 7기 프로젝트/모임 플렛폼 프로젝트

Spring Boot 모놀리스 구조에서 ALB는 왜 필요할까요?

by JuNo_12 2025. 7. 31.

들어가며

저희 팀은 Spring Boot 기반의 애플리케이션을 AWS ECS를 통해 컨테이너화하여 배포하려고 합니다.
이러한 구조에서 들었던 궁금증은 아래와 같습니다.

“우리는 마이크로서비스가 아닌 모놀리스 구조인데, 굳이 ALB(Application Load Balancer)를 설정할 필요가 있을까?”

 


일반적으로 ALB는 여러 서비스에 트래픽을 분산하는 로드 밸런싱 용도로만 알려져 있지만, 실제로는 모놀리스 환경에서도 다양한 이유로 적극적으로 사용되고 있습니다.
아래에서는 그 구체적인 이유들을 정리해 보았습니다.


1. 도메인 연결 및 HTTPS 처리를 간편하게 할 수 있습니다

외부에서 서비스에 접근하기 위해서는 도메인 연결이 필요하며, 최근에는 보안 강화를 위해 대부분 HTTPS 프로토콜을 사용합니다.
이때 ALB는 TLS(HTTPS) 종료 지점으로서 아래와 같은 역할을 수행합니다.

  • ALB에 ACM(AWS Certificate Manager)을 연동하면 손쉽게 HTTPS 인증서를 적용할 수 있습니다.
  • 애플리케이션(Spring Boot)은 8080 같은 내부 HTTP 포트에서만 실행하면 되며, TLS 처리는 ALB에서 대신 처리해 줍니다.
  • 별도의 프록시 서버(Nginx 등)를 운영하지 않아도 보안 연결이 가능합니다.

즉, HTTPS 적용과 도메인 연결을 가장 안정적이고 간단하게 구현할 수 있는 방법이 ALB입니다.


2. ECS의 헬스체크 기능과 연계되어 서비스 안정성이 높아집니다

AWS ECS는 컨테이너의 상태를 주기적으로 점검하여, 필요 시 자동으로 재시작하거나 트래픽을 차단하는 기능을 가지고 있습니다.
이때 ALB는 Health Check 엔드포인트를 사용하여 애플리케이션의 정상 동작 여부를 판단합니다.

  • /actuator/health와 같은 엔드포인트를 통해 컨테이너가 살아 있는지 확인합니다.
  • 응답이 실패하면 해당 컨테이너를 비정상 상태로 간주하고, 트래픽을 자동으로 우회합니다.

이와 같은 방식은 예상치 못한 장애 상황에서도 서비스의 가용성을 유지할 수 있게 해주며,
ALB 없이 직접 구현하기에는 부담스러운 기능입니다.


3. 무중단 배포(롤링 업데이트, 블루/그린 배포)를 지원합니다

처음에는 단일 버전의 모놀리스 애플리케이션만 운영하더라도,
시간이 지남에 따라 새로운 버전으로의 업데이트가 빈번하게 발생하게 됩니다.
이때 ALB를 사용하면 다음과 같은 배포 전략이 가능합니다.

  • 롤링 업데이트: 기존 컨테이너 일부를 유지하면서 새 컨테이너를 순차적으로 교체
  • 블루/그린 배포: 새 버전과 기존 버전을 동시에 띄우고, 테스트 후 트래픽을 전환

위와 같은 전략은 ECS + ALB 조합에서 매우 쉽게 구성할 수 있으며,
다운타임 없이 배포할 수 있는 가장 안전한 방법입니다.


4. 고정된 진입점을 제공합니다

ECS의 태스크(Task)는 실행될 때마다 IP 주소가 바뀌는 특성이 있습니다.
반면, ALB는 고정된 DNS 이름을 제공하므로, 사용자나 외부 시스템에서 접근할 때 안정적인 진입점(Entry Point)이 됩니다.

  • 예: my-service-alb-123456.ap-northeast-2.elb.amazonaws.com
  • 도메인 설정 시 ALB의 DNS 이름을 지정하면, ECS 내부 구조가 바뀌어도 사용자 접속 주소는 변하지 않습니다.

이러한 특성은 서비스 운영에서의 유연성과 확장성을 크게 높여줍니다.


5. 접근 제어, 라우팅, 보안 정책 설정이 가능합니다

ALB는 단순히 트래픽을 전달하는 기능 외에도 다양한 고급 기능을 제공합니다.

  • 경로 기반 라우팅(Path Routing): /api, /admin 등 경로별로 트래픽 분기 가능
  • IP 기반 접근 제어: 허용 IP 또는 차단 IP 설정 가능
  • WAF(Web Application Firewall) 연동: 웹 공격 방어 가능

이러한 기능은 Spring Boot 단독으로 구현하기 어렵거나 보안 리스크가 큰 영역이기 때문에,
ALB를 통해 AWS 레벨에서 처리하는 것이 운영 효율성과 보안성 모두에서 유리합니다.


요약

이유 설명
HTTPS 적용 ACM과 ALB를 통해 쉽게 처리 가능
헬스체크 연동 ECS와 연계해 컨테이너 상태 자동 감지 및 트래픽 우회
무중단 배포 롤링 또는 블루/그린 배포 지원
안정된 진입점 제공 ALB DNS 이름을 통해 고정된 접속 주소 유지
보안 및 라우팅 기능 접근 제한, 경로 분기, WAF 연동 등 지원
 

마무리

결론적으로, 모놀리스 구조라고 해서 ALB가 필요 없다고 판단하는 것은 오해일 수 있습니다.
ALB는 단순한 로드 밸런서 이상의 역할을 하며,
HTTPS 적용, 헬스체크, 무중단 배포, 보안 강화, 고정 진입점 제공 등 운영상 매우 중요한 기능들을 수행합니다.

따라서 Spring Boot 기반의 단일 애플리케이션이라 하더라도,
프로덕션 환경에서는 ALB를 구성하는 것이 안정성과 확장성을 확보하는 가장 기본적인 방법이라고 할 수 있습니다.