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

율리시스님의 프로필 이미지

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

리액트 프로젝트를 Azure Storage에 배포하기

도커 컴포즈를 통한 배포 질문

해결된 질문

작성

·

321

0

- 여러분의 질문을 고대하고 있습니다. :-)
- 질문 전에 검색을 먼저 해보세요. 사람 사는 게 다 비슷하다는 것을 알게 됩니다.
- 예의는 거침없이 질문하기 위한 최고의 발명품입니다.
- 100개의 설명이 스크린샷 한방 보다 못할 수 있습니다.
- 코드를 첨부하면 전세계 누구나 이해할 수 있는 질문이 됩니다.
- 하나의 질문에는 하나의 주제를 담아야 답변도 예리해집니다.
- 시행착오를 알려주시면 곧 바로 원하는 문제에 집중할 수 있습니다.

- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
안녕하세요 강사님.
강의를 통해 배포까지 마치게 되어 속이 뻥 뚫린 기분입니다.
 
강의에서 설명해주신 구조로 배포는 성공 했고, 추가적인 시도를 하다가 질문이 생기게되어 남깁니다.
실제 프로덕션에서는 Nignx + Gunicorn 구조로 많이 쓴다고들 하는데요. 그래서 강사님이 해주신 방법처럼 DockerFile에 Nginx까지 설치 명령을 포함할까 하다가 docker-compose라는 개념을 알게되어 시도해보고 있습니다.
 
로컬에서 docker-compose up --build 명령을 통해 이미지를 만들고 실행했을 때 잘 구동되는것까지 확인을 했구요. 단순 도커이미지가 아닌 docker-compose는 여러개의 컨테이너가 엮여있는 개념이니까 설정이 달라져야 할거라 생각했습니다.
그래서 Azure > App Service > 배포센터에서 docker 단일 컨테이너가 아닌 Docker-compose(미리보기) 메뉴 바꾸면 되는건가 했는데.. 이 방법이 아닌가 싶네요. 혹시 Azure의 App Service에서는 바로 docker-compose 이미지를 배포할 방법은 없는걸까요?
 
강의 내용에서 살짝 벗어난거같아서 질문드려도 되는지 모르겠지만 키워드만이라도 남겨주시면 감사하겠습니다. 좋은강의 감사합니다
 
 
 

답변 1

2

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

모든 아키텍처에는 구성의 이유가 있습니다. 이유없이 사용되는 아키텍처는 없습니다. // nginx 는 웹서비스 아키텍처에서 다양한 역할로 사용될 수 있습니다. 일반적으로 nginx 를 앞단에 두는 경우는 부하 분산 (load balancer)의 역할로서 두는 경우가 많습니다. Azure나 AWS 등의 클라우드의 환경에서는 부하 분산의 역할을 별도의 서비스가 있습니다. Azure에서는 Azure에서 부하 분산 서비스 사용 문서를 참고해보실 수 있구요. AWS에서는 Application Load Balancer란 무엇입니까? 문서를 참고해보실 수 있습니다.

별도의 부하 분산 서비스를 이용하지 않더라도, Azure App Service 에서는 부하를 컨테이너가 직접 받는 것이 아니라, Azure App Service 서비스가 먼저 받아서 전달해주는 것이기 때문에, 일반적인 nginx의 역할을 이미 해주고 있습니다. 그러니 Azure App Service 환경에서는 굳이 nginx를 앞단에 두지 않으셔도 괜찮습니다.

Azure App Service에서의 docker compose지원은 다른 클라우드 서비스에는 없는 기능인데요. Azure App Service에서의 docker compose는 아직 preview이기에 사용하시기 적합하지 않으실 듯 하구요. preview로 기능 제공이 된 지 꽤 된 거 같은 데, 아직 정식이 되지 않은 걸 보면 아마도 정식 지원은 기대하기 힘들 듯 싶습니다. MS 입장에서도 그리 효용성 높은 기능이 아니라고 판단한 것이 아닌 가 싶습니다.

Azure App Service에서 부하 분산이 필요하시다면, 위에서 언급드린 다양한 부하분산 서비스를 이용하시거나, nginx가 꼭 필요하시다면, 별도의 VM이나 app service를 통해 nginx를 구축하시고, 이 nginx를 통해 장고 서비스로 트래픽이 전달되도록 virtual network 구성하시는 방식이 맞으실 듯 합니다. // 아키텍처는 정답이 없으니, 다양하게 고민을 해보시면 좋으실 듯 합니다.

클라우드 환경이 아니거나, 직접 VM을 구축해서 서비스를 하실 경우에는 nginx 운영에 좀 더 포커스가 갈텐데요. 이때 nginx 쿡북이라는 책이 있습니다. 이 책을 참고하시면 좀 더 많은 인사이트를 얻으실 수 있구요. OpenResty 라는 nginx 플랫폼이 있는 데, 같이 참고해보시면 좋습니다.

화이팅입니다. :-)