[Play Data] Final Project System Architecture

이정연·2023년 6월 4일
0

Play Data

목록 보기
24/26

초안

동작 흐름도

  1. 사용자: 사용자는 웹 브라우저를 통해 특정 URL에 접속합니다.

  2. DNS (Domain Name System): 사용자가 입력한 URL은 DNS를 통해 해당 서비스의 IP 주소로 변환됩니다. AWS Route 53 등의 서비스를 사용하여 DNS를 설정할 수 있습니다.

  3. 로드 밸런서 (AWS ELB): 로드 밸런서는 사용자의 요청을 여러 서버에 분산시킵니다. AWS에서 제공하는 Elastic Load Balancer(ELB)를 사용할 수 있습니다.

  4. 웹 서버 (AWS EC2 X nginx): 웹 서버는 클라이언트의 요청을 받아 처리합니다. 정적인 컨텐츠를 제공하거나, 동적 컨텐츠의 요청을 WAS로 전달합니다. 이 과정에서 Docker 컨테이너에 장고 웹 서버를 배포하게 됩니다. Docker는 컨테이너화된 애플리케이션을 실행하는 데 사용되므로, 장고 애플리케이션을 Docker 컨테이너 안에서 실행할 수 있습니다.

  5. WAS (AWS EC2 X gunicorn): 동적 요청 처리를 위해 도커 컨테이너 안의 장고 애플리케이션으로 요청이 전달됩니다.

  6. 어플리케이션 (Django): 장고 애플리케이션은 서버 로직을 수행하고, 필요한 데이터를 DB에서 가져와 응답을 생성하거나, 새로운 데이터를 DB에 저장합니다.

  7. 데이터베이스(AWS RDS X DB): DB는 데이터를 저장하고 검색하는 역할을 합니다. AWS에서 제공하는 RDS(Relational Database Service)를 사용하여 DB를 호스팅할 수 있습니다.

Web Server vs WAS

  • 처리하는 데이터 포맷에 차이가 있다.
  • 웹 서버는 static data(HTML,CSS)
  • 와스는 dynamic data(python, java)

Why load balancer?

과도한 사용자의 몰림을 해소하기 위하여 사용한다.

프로젝트 특성상 소규모 웹 서버이기 때문에 굳이 로드 밸런서를 사용할 필요가 없기는 하지만 나의 목적은 [경험]이기 때문에 추가했다.

분산처리

네트워크 트래픽을 여러 개의 서버로 분산시킴으로써 개별 서버의 부하를 감소

고가용성

만약 하나의 서버가 뻑이 나더라도 다른 서버로 돌리면 되기 때문에 유지 보수에 용이하다.

장고

레퍼런스

https://jinwoo1990.github.io/dev-wiki/web-application/

profile
0x68656C6C6F21

0개의 댓글