사용자: 사용자는 웹 브라우저를 통해 특정 URL에 접속합니다.
DNS (Domain Name System): 사용자가 입력한 URL은 DNS를 통해 해당 서비스의 IP 주소로 변환됩니다. AWS Route 53 등의 서비스를 사용하여 DNS를 설정할 수 있습니다.
로드 밸런서 (AWS ELB): 로드 밸런서는 사용자의 요청을 여러 서버에 분산시킵니다. AWS에서 제공하는 Elastic Load Balancer(ELB)를 사용할 수 있습니다.
웹 서버 (AWS EC2 X nginx): 웹 서버는 클라이언트의 요청을 받아 처리합니다. 정적인 컨텐츠를 제공하거나, 동적 컨텐츠의 요청을 WAS로 전달합니다. 이 과정에서 Docker 컨테이너에 장고 웹 서버를 배포하게 됩니다. Docker는 컨테이너화된 애플리케이션을 실행하는 데 사용되므로, 장고 애플리케이션을 Docker 컨테이너 안에서 실행할 수 있습니다.
WAS (AWS EC2 X gunicorn): 동적 요청 처리를 위해 도커 컨테이너 안의 장고 애플리케이션으로 요청이 전달됩니다.
어플리케이션 (Django): 장고 애플리케이션은 서버 로직을 수행하고, 필요한 데이터를 DB에서 가져와 응답을 생성하거나, 새로운 데이터를 DB에 저장합니다.
데이터베이스(AWS RDS X DB): DB는 데이터를 저장하고 검색하는 역할을 합니다. AWS에서 제공하는 RDS(Relational Database Service)를 사용하여 DB를 호스팅할 수 있습니다.
과도한 사용자의 몰림을 해소하기 위하여 사용한다.
프로젝트 특성상 소규모 웹 서버이기 때문에 굳이 로드 밸런서를 사용할 필요가 없기는 하지만 나의 목적은 [경험]이기 때문에 추가했다.
네트워크 트래픽을 여러 개의 서버로 분산시킴으로써 개별 서버의 부하를 감소
만약 하나의 서버가 뻑이 나더라도 다른 서버로 돌리면 되기 때문에 유지 보수에 용이하다.