| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 코딩테스트
- JOIN
- SQL
- 배포
- SQL코딩테스트
- BFS
- GROUPBY
- 최단경로
- union find
- 프림
- 다익스트라
- 프로그래머스
- OrderBy
- AWS
- 알고리즘
- 누적합
- Database
- 크루스칼
- db
- django
- EC2
- Java
- 구현
- 자바
- MST
- Baekjoon
- 백준
- 피로그래밍
- 그래프 탐색
- Pirogramming
- Today
- Total
NullNull
Django 서비스 배포 (11) - 배포 중급 : 최종 동작 과정 본문
해당 글은 비전공자를 위한 개발 동아리 피로그래밍에서 진행했던 세션의 정리본 입니다.
자 그러면 앞으로 배울 내용을 예습하는 차원에서 여러분이 피로그래밍 사이트에 접속하여 로그인을 시도할 때, 어떤 일이 발생하는지 순차적으로 한 번 설명드리겠습니다.
우선 여러분은 브라우저를 열고 피로그래밍 사이트의 DNS 주소를 URL에 입력하고 엔터를 누릅니다.

현재 피로그래밍 사이트는 http를 https로 리다이렉션 시키는 즉, 더 안전한 통신 프로토콜을 따르고 있기 때문에 http로 접속을 하더라도 https 로 리다이렉션 됩니다.

현재 브라우저가 피로그래밍의 아이피 주소를 모른다고 가정할게요. 그러면 브라우저는 DNS에 피로그래밍.com의 IP 주소를 알려달라고 요청합니다. DNS의 동작에 따라서 브라우저는 아이피 주소와 포트 쌍을 얻게 됩니다.

자 그러면 이제 브라우저에서 아이피 주소를알기 때문에 HTTPS 요청을 보낼 수 있습니다. 여러분의 요청 내용과 요청 방법을 토대로 HTTP 헤더와 바디를 구성하고 아이피 주소와 포트 번호를 통해 피로그래밍 사이트에게 홈 페이지를 보내달라고 요청합니다.

피로그래밍 홈페이지 프로그램이 돌아가는 서버에는 NGINX가 설치되어 있네요. 현재 홈 페이지 화면은 정적 화면입니다. html, css, 그리고 약간의 js와 img로만 구성되어 있습니다. 그렇기에 NGINX에서 요청을 실제 장고 서버까지 보내지 않고 처리하게 됩니다.

사용자는 이제 홈페이지 화면을 볼 수 있게 되는거죠

그러면 다음으로 로그인을 시도하려고 합니다. 이제 브라우저는 피로그래밍 서버의 아이피 주소와 포트 번호를 알고 있습니다. 그래서 로그인에 필요한 요청 방법과 내용을 HTTP 헤더로 만들어서 피로그래밍 서버로 보냅니다.

NGINX를 다시 만났는데 이번에는 사용자의 아이디와 비밀번호를 데이터베이스에서 찾아와서 비교해야겠죠? 동적 리소스를 필요로 하기 때문에 WS에서는 처리가 불가능합니다. 따라서 NGINX는 uWSGI 라는 인터페이스 혹은 채널을 통해서 피로그래밍 서버에게 사용자의 요청을 전달합니다.

그럼 uWSGI를 통해서 피로그래밍 서버가 이해할 수 있도록 사용자의 요청이 전달되면 장고 MTV가 동작합니다. 우선 urls.py에 등록된 url 라우팅을 통해서 /login이라는 패턴이 있는지 판단합니다. 만약 있다면 그에 연결된 views.py에게 요청을 보내겠죠?

그럼 views.py는 request를 받고 구현된 대로 코드를 실행시킵니다.

아마 User라는 모델과 사용자의 인풋 값을 조합하여 데이터베이스에 이런 유저가 있냐고 질의를 하겠죠? 이때 모델.피와이와 데이타베이스가 관여됩니다.

마지막으로 뽑아낸 결과를 template에 정의된 html로 렌더링합니다. 그리고 uWSGI는 이를 NGINX에게 보냅니다. NGINX는 다시 이를 브라우저에게 보내고 브라우저는 사용자에게 결과를 표시합니다.

이런 방식으로 여러분이 배포한 서버가 동작하게 됩니다. 이를 기억한 상태에서 우리가 무엇을 구축해야하고 이를 구축하는 이유가 무엇인지, 어떻게 동작하는지 알아볼게요!
'Django' 카테고리의 다른 글
| Django 가상환경 이해 (0) | 2022.10.05 |
|---|---|
| Django 개론 (백엔드, 프론트엔드, 프레임워크) (1) | 2022.10.05 |
| Django 서비스 배포 (10) - 프로젝트 배포 실습 (0) | 2022.08.04 |
| Django 서비스 배포 (8) - Mac OS SSH로 인스턴스 접근하기 (0) | 2022.08.04 |
| Django 서비스 배포 (7) - Window OS SSH로 인스턴스 접속하기 (2) | 2022.08.04 |