| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- SQL코딩테스트
- Database
- 백준
- django
- 크루스칼
- MST
- 구현
- EC2
- AWS
- OrderBy
- 자바
- 배포
- Baekjoon
- Java
- 프로그래머스
- 프림
- union find
- db
- GROUPBY
- SQL
- 다익스트라
- 최단경로
- JOIN
- BFS
- 그래프 탐색
- Pirogramming
- 코딩테스트
- 누적합
- 피로그래밍
- 알고리즘
- Today
- Total
NullNull
Django 서비스 배포 (1) - 배포란? 본문
해당 글은 비전공자를 위한 개발 동아리 피로그래밍에서 진행했던 세션의 정리본 입니다.
배포란?
배포는 우리가 열심히 만든 서비스를 실제 사용자가 사용할 수 있도록 하는 과정입니다.
지금까지 여러분들은 여러분이 작성한 코드를 여러분의 컴퓨터에서 실행해왔어요.
python3 manage.py runserver
여러분은 지금까지 위의 코드를 실행시키고 인터넷 브라우저에 127.0.0.1:8000을 입력해서 장고를 실행시켜 왔습니다.
사실 저 127.0.0.1:8000은 많은 의미를 내포하고 있어요
127.0.0.1:8000이라는 IP 주소는 : 을 기준으로 127.0.0.1과 8000으로 나눌 수 있는데 각 부분의 의미는 다음과 같습니다.
- 127.0.0.1: IP 주소 부분
- 8000: 포트 부분
IP 주소
IP 주소가 무엇일까요? 조금 더 알기 쉽게 하기 위해 예시를 들어보겠습니다.
우리가 만든 서비스를 우리의 친구라고 생각해볼게요. 여러분이 그 친구와 놀기 위해서는 친구가 사는 집에 찾아가는 방법 뿐이라고 생각해 봅시다. 그러면 우리는 우선 친구가 사는 곳의 주소를 알아야 하고, 친구가 몇 호에 사는지 알아야 합니다. 그래야 집으로 찾아갈 수 있으니까요.
컴퓨터가 서비스를 제공하는 방법은 위와 정말 똑같습니다. 친구가 사는 아파트의 주소를 IP 주소라고 하고 호수를 포트라고 합니다. 다른 사람들이 여러분이 만든 특정 서비스에 접속하기 위해서는 그 서비스가 동작하고 있는 컴퓨터의(서버의) IP 주소로 접근한 뒤, 그 서비스가 열어둔 포트로 접속해야 하는 것이죠!
IP 주소 체계
- 공인 IP
- 사설 IP
- 기타
- 루프백 IP
공인 IP
?!?!?!?!?!
이게 무슨 말일까요? 조금 더 알기 쉽게 하기 위해 예시를 들어보겠습니다.
위에서 설명한 예시로 돌아와 볼게요. 여러분은 친구 집에 초대받았습니다. 하지만 그 친구가 사는 동네가 어디인지 모른다고 가정할게요. 그러면 여러분은 친구의 집으로 가기 위해서 주소를 물어봐야 합니다.
친구가 집 주소를 말해줬습니다. 경기도 안산시 상록구 본삼로OO OO아파트 111동 111호라고 하네요. 그런데 여러분은 그 동네가 어디인지 모르기 때문에 여러분의 현 위치에서 친구 집까지 길을 검색할 겁니다. 인터넷이나 어플리케이션을 이용해서요.
방금 예시에서 언급했던 친구의 정확한 집 주소가 바로 공인 IP입니다. 모든 단말은(여기서는 그냥 컴퓨터 혹은 노트북으로 생각하셔도 됩니다.) 독자적인 IP가 존재하고 이 IP 주소는 서로 겹치지 않습니다. 마치 같은 집에 살지 않는 저와 이 글을 읽는 여러분의 집 주소가 다른 것처럼요.
사설 IP
그러면 사설 IP는 뭘까요?
네트워크에 대해 깊은 설명은 하지 않을 테니 안심하셔도 좋습니다. 그래도 정의는 살펴볼게요. 공인 IP는 전 세계에서 단 하나뿐인 IP 주소로 인터넷상에서 서로 다른 단말(컴퓨터)끼리 통신하기 위해 필요한 주소입니다. 반면에 사설 IP는 전 세계가 아닌 사설 네트워크상에서 단말들이(컴퓨터) 통신하기 위한 주소입니다. 사설 IP는 내부망에서만 사용되기 때문에 독자적인 주소가 필요 없고 서로 다른 내부망에서는 동일한 사설 IP를 구성하더라도 상관없습니다.
위에서 설명했던 친구 집을 예시로 들어볼게요. 만약 친구가 사는 아파트와 내가 사는 아파트가 똑같다면 친구가 나에게 집 주소를 알려줄 때 전체 주소를 알려줘야 할까요?
친구가 “나는 111동 111호야"라고만 말해도 우리는 충분히 친구의 집에 찾아갈 수 있을 것입니다.
그런데 이상하죠? 사실 111동 111호는 OO 아파트의 주소일 수도 ㅁㅁ아파트의 주소일 수도 있습니다. 심지어는 OO빌라의 주소일 수도 있고요. 하지만 우리는 이미 친구가 나와 같은 아파트에 살고 있다는 것을 압니다. 그래서 이 세상에는 여러 개의 111동 111호가 있더라도 우리 아파트에는 111동 111호가 한 개뿐이니까 친구의 집을 찾아갈 수 있게 됩니다. 같은 아파트에 있으면 상세한 주소가 필요 없는 것과 같이, 같은 (사설) 네트워크 대역에 있으면 그 네트워크 안에서만 독자적인 IP를 이용하더라도 서로를 충분히 식별할 수 있다는 정도로만 이해하셔도 충분합니다.
루프백 IP
여기서 한 가지 의문이 생기실 수 있습니다. (의문이 들지 않으셔도 무관합니다.)
IP주소가 모든 컴퓨터에 독자적인 주소라고? 내가 장고를 만들고 서버를 내 컴퓨터에서 열고 인터넷으로 접속했을 때 127.0.0.1:8000을 사용했는데, 피로그래밍의 다른 팀원들 역시 같은 IP 주소와 포트번호를 이용해서 각자의 서비스를 열었을 텐데… 이건 IP 주소가 겹치는게 아닌가...? 그러면 127.0.0.1도 사설 IP 인가요?
만약 네트워크와 IP와 관련된 얘기를 오늘 세션으로 처음 접하는데 이런 의문이 들었다면, 여러분은 아마 네트워크에 재능이 있을지도 모릅니다. 정답부터 말씀드리자면 127.0.0.1은 루프백 IP 주소 입니다.
루프백 IP는 IP 주소 체계에서 특별한 역할을 하는 친구입니다. 바로 자기 자신을 가리는 주소입니다. 그래서 모든 단말은 스스로를 localhost와 127.0.0.1이라고 부를 수 있습니다. 모두가 localhost, 127.0.0.1이라는 주소를 사용할 수 있기 때문에, A 컴퓨터의 localhost와 B 컴퓨터의 localhost는 결과적으로 서로 다른 컴퓨터를 가리키게 됩니다. 마치 다른 사람들이 여러분을 부를 땐 이름을 부르지만, 여러분 스스로가 여러분을 지칭할 때는 “내가" 혹은 “제가"라고 말하는 것과 같습니다. 그래서 결국 여러분이 동시에 localhost:8000 혹은 127.0.0.1:8000을 통해 접속하더라도 여러분 각자의 컴퓨터로 접근하는 것이기에 서로 겹치지 않게 됩니다.
포트
자 그럼 포트 8000에 대해 알아볼게요. 우리는 은행에서 여러 가지 업무를 볼 수 있습니다. 예금을 출금하거나, 돈을 송금하거나, 세금을 낼 수도 있죠. 이걸 1개의 창구에서 서비스하게 된다면 일단 은행에 들어온 모든 손님은 앞의 손님의 업무가 끝날 때까지 기다렸다가 서비스를 제공받을 수 있겠죠?
그럼 이때 예금 출금은 A 창구, 송금은 B 창구, 세금은 C 창구로 나누어서 3개의 창구에서 서비스한다면 어떨까요?
해당 은행으로 들어가서 출금을 원하는 고객은 A 창구로 가면 되고, 세금 업무를 보고 싶은 고객은 C 창구로 가면 되겠죠? 이렇게 창구를 나눠둔 것이 포트라고 생각하면 됩니다.
우리의 컴퓨터로 들어오는 고객들이 어떤 업무를 원하는지 구분해서 서비스한다고 생각할게요. 그래서 우리가 자주 사용하는 인터넷 서비스들은 미리 포트들이 정해져 있습니다. http 서비스는 항상 80 포트, ssh는 항상 22번 포트, https는 항상 443 포트, 그리고 장고로 서버를 열게 되면 항상(기본으로) 8000번 포트로 가라고 미리 정해둔 것이죠
아래는 미리 정해둔 포트의 예시입니다.
| 포트번호 | 서비스 |
| 22 | SSH |
| 23 | Telnet |
| 25 | SMTP - 이메일 |
| 80 | HTTP |
| 443 | HTTPS |
| 8000 | Django |
| ... | ... |
참고로 장고 포트 설정을 변경하고 8000번 말고 다른 번 포트로 접속을 하도록 만들 수도 있긴 합니다. 근데 그 부분은 지금 다루지 않는 것으로 할게요.
그래서 우리가 127.0.0.1:8000이라는 주소를 브라우저에 입력하게 되면 내 주소:8000호 로 들어와도 된다고 말하는 것이고 이게 우리의 장고 프로젝트를 서비스 하는 장소라는 것 입니다.
여기까지 이해가 되셨다면 충분합니다. 이제 다음 개념을 배우러 넘어가 볼게요
'Django' 카테고리의 다른 글
| Django 서비스 배포 (6) - 탄력적 IP 할당 및 연결 (0) | 2022.08.03 |
|---|---|
| Django 서비스 배포 (5) - EC2 인스턴스 생성하기 (0) | 2022.08.03 |
| Django 서비스 배포 (4) - AWS 서버 인스턴스 생성 및 IP 할당과 연결 (0) | 2022.08.03 |
| Django 서비스 배포 (3) - AWS 계정 생성 (0) | 2022.08.03 |
| Django 서비스 배포 (2) - AWS 란? (0) | 2022.08.02 |