인프런 커뮤니티 질문&답변

yuki님의 프로필 이미지

작성한 질문수

AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)

nginx와 app 연결 (ECS 내에서)

작성

·

638

·

수정됨

1

안녕하세요 강사님

강사님께서는 강의에서 어플리케이션을 80포트에 배포해 바로 ELB에 연결하셨는데요

혹시 nginx를 중간에 끼게 된다면 어떤 방식으로 하면 좋은지 궁금합니다

 

저는 nginx를 중간에 껴서 리버스 프록시 서버를 만들고 싶은데요

이러한 방법이 ecs에서는 권장되지 않아 80포트로 어플리케이션을 배포하신건지 궁금합니다

 

또한 만약 nginx를 중간에 낄 수 있다면

  1. 이를 service discovery 방식으로 nginx와 어플리케이션을 각각 서비스로 분리해 연결하는 방식

  2. 하나의 태스크 정의에 nginx + 어플리케이션을 같이 정의해 하나의 서비스로 배포하는 방식

    1. 이 방법은 fargate 사용시 bridge 를 지원해 주지 않아 localhost로 통신했습니다

둘 중에 어떤 방식이 더 괜찮을지...? 아님 더 추천해주는 방식이 있으신지 궁금합니다

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

DanielRyu님, AWS ECS에서 Nginx를 리버스 프록시 서버로 사용하여 어플리케이션과 연결하는 방법에 대한 질문 주셨군요.

ECS 환경에서 Nginx를 사용하는 것이 권장되지 않는 것은 아닙니다. 실제로 많은 개발자들이 보안, 로드 밸런싱, 정적 파일 관리 등의 이유로 Nginx를 사용합니다. 이를 구성하는 방식은 각자의 요구사항과 환경에 따라 달라질 수 있겠지만, 여기서는 간단히 두 가지 방식에 대해 설명드리겠습니다.

  1. Service Discovery 방식:

    • Nginx와 어플리케이션을 각각 별도의 서비스로 분리하고, Service Discovery를 사용하여 통신하게 하는 방법입니다.
    • 이 방법은 서비스 간에 종속성을 줄이고 유연성을 높일 수 있습니다.
    • ECS의 Service Discovery 기능을 이용하면, 각 서비스의 IP 주소나 포트를 자동으로 찾을 수 있어 편리합니다.
  2. 하나의 태스크 정의에 배포 방식:

    • Nginx와 어플리케이션을 하나의 태스크 정의 내에 함께 배치하는 방법입니다.
    • 이 경우, Nginx와 어플리케이션은 동일한 네트워크와 리소스를 공유하게 됩니다.
    • Fargate에서는 bridge를 사용하지 않고 awsvpc 네트워크 모드를 사용할 수 있는데, 그 경우 Nginx가 localhost를 통해 어플리케이션과 통신할 수 있습니다.

두 방법 모두 장단점이 있으므로, 본인이 관리하기 편하고 시스템 요구사항에 맞는 방법을 선택하시면 됩니다. 이 외에도 컨테이너 오케스트레이션에 대한 추가적인 접근 방식이 존재할 수 있으므로, 도입하고자 하는 서버 구조, 접근 방식, 트래픽 예상량 등을 고려하여 최적의 방법을 선택하는 것이 중요합니다.

보다 자세한 내용은 AWS 공식 문서를 참고하는 것을 추천드립니다. AWS Elastic Beanstalk를 이용하는 경우, 아래 링크에서 관련 내용을 확인할 수 있습니다:
- AWS Elastic Beanstalk 사용법: Spring Boot Reference Documentation

도움이 되었길 바랍니다. 추가적인 질문이 있다면 언제든 문의해 주세요.

yuki님의 프로필 이미지

작성한 질문수

질문하기