NullNull

Django 서비스 배포 (2) - AWS 란? 본문

Django

Django 서비스 배포 (2) - AWS 란?

KYBee 2022. 8. 2. 23:42

해당 글은 비전공자를 위한 개발 동아리 피로그래밍에서 진행했던 세션의 정리본 입니다.

 

AWS란?

본격적인 배포에 들어가기 앞서 AWS가 무엇인지부터 알아볼게요. AWS는 Amazon Web Service 의 약자입니다.

 

 

1200px-Amazon_Web_Services_Logo svg

 

 

…!

 

사실 이름만 봐서는 잘 모르겠죠? AWS에 대해 알기 전에 컴퓨터 라는 용어가 갑자기 왜 등장했는지 먼저 설명해볼게요. 우리가 만든 서비스는 모두 컴퓨터 위에서 동작하죠? 앞에서 배웠던 내용을 조금 응용해볼게요. 우리는 하나의 컴퓨터 위에 우리가 만든 서비스를 동작시킵니다. 지금까지는 여러분들의 노트북이나 데스크탑에서 Django 프로젝트를 실행시킨 뒤, localhost:8000 혹은 127.0.0.1:8000 이라는 주소를 통해서 해당 서비스에 접속했어요.

 

이제는 우리의 서비스를 배포하여 다른 사람들도 사용하게 하고 싶습니다. 그러기 위해서 여러분들의 Django 프로젝트를 어딘가에서 실행 시킨 뒤, 다른 사용자들에게 그 장소를 알려줘야 할 겁니다. 여러분의 프로젝트를 실행시키는 그 어딘가가 바로 컴퓨터이구요, 그 컴퓨터의 공인 IP 주소와 포트 번호를 조합하여 사용자에게 알려주면 사용자가 여러분의 컴퓨터 안에서 동작하는 서비스에 접근할 수 있게 됩니다.

이처럼 사용자들을 위해 서비스를 동작시켜두는 컴퓨터가 서버 컴퓨터 역할을 하게 됩니다. 그래서 서버 컴퓨터는 24시간 내내 동작해야 하고, 많은 사용자들이 동시에 접속하는 것을 처리해야하고, 고장이 나도 빠르게 복구되어야 합니다. 여러분이 사용하는 노트북과 데스크탑도 결국 컴퓨터이기 때문에 하나의 서버 역할을 할 수는 있어요. 하지만 서버 용도로 만들어진 컴퓨터들 보다는 현저하게 성능이 떨어집니다.

그러면 서버 용도로 만들어진 컴퓨터를 살펴볼게요. 앞으로는 이 컴퓨터를 서버 컴퓨터라고 부르겠습니다. 서버 컴퓨터는 이렇게 생겼어요.

 

download

 

모니터도 없고! 마우스도 없고! 키보드도 없는데! 이게 어떻게 컴퓨터야!

 

놀랍게도 저게 컴퓨터 입니다. 더 놀라운건 저건 우리가 사용하는 일반 PC와는 상대도 안될 정도로 성능이 아주 좋아요… 어마어마하게 비싼 몸 입니다. 아래는 조금 쉽게 이해하시라고 서버 컴퓨터와 일반 데스크탑을 비교한 내용 입니다.

Untitled

 

그럼 우리가 만든 서비스를 실제 사용자에게 배포하려면 서버 컴퓨터가 필요하다고 했는데 저걸 직접 사야하나요? ㅠㅠㅠ

네 그러셔야 해요... 그리고 사는 게 끝이 아닙니다. 저거 유지하기 위해서 드는 전기도 요금이 아주아주 비싸요...

서비스를 만드는 것도 어려웠는데 저 돈도 없는데 ㅠㅠ 알바 해야 하나요...

 

이걸 해결해 주기 위해서 AWS 와 같은 클라우드 서비스를 사용합니다.

 

한 마디로 본인회사에 서버 컴퓨터를 정말 많이 사두고 서버 컴퓨터를 사용하고 싶어하는 사람들에게 논리적으로 사용 공간을 나누어주는 겁니다. 사용자들은 실제 서버를 운영하는 것 보다 훨씬 적은 금액만 지불하면 자신이 할당받은 공간을 마음껏 사용하게 되는 겁니다! 이런 회사들 중 하나가 AWS (Amazon Web Service)이구요, AWS 말고도 MS Azure, Goole GCP, Naver NCP 등 다양하게 존재합니다.

Untitled

 

논리적으로 나눈다는 말이 어떤 말일까요? 논리적으로 나누는 것을 알기 위해 물리적으로 나누는게 무엇인지 보여드릴게요. 컴퓨터를 물리적으로 나누려면 이렇게 자르면 됩니다. 쉽죠? 그치만 아마 저 컴퓨터는 부팅이 안될 겁니다.

Untitled (1)

그래서 실제로 서버 컴퓨터를 부수지 않고, 내부 메모리 공간만 나누어진 것 처럼 만드는 것이 논리적으로 컴퓨터를 나누는 것이다 라고 생각하시면 됩니다. 아래 그림처럼요!

Untitled (2)

그래서 저희는 AWS에게 주문을 하는 겁니다.

 

제가 어떤 서버 컴퓨터를 빌려야 하는데 그 컴퓨터는 용량은 어느 정도가 필요하고, 어떤 기능들이 있었으면 좋겠어요!

그러면 AWS에선 우리가 요청한 내용대로 본인들이 소유한 서버 컴퓨터에서 논리적인 분리를 통해 해당 용량만큼의 컴퓨터를 우리에게 사용할 수 있도록 해줍니다. 즉 서버 컴퓨터는 AWS에서 모두 관리를 해주고 우리는 사용료만 내면 된다는 말이죠. 전기 요금 걱정도 필요 없구요. 나에게 할당된 공간은 딱 나만 사용할 수 있는 공간으로 독립되어 있습니다. 이것이 클라우드 서비스에요!

 

지금까지의 내용은 아래처럼 정리할 수 있겠네요.

Untitled (3)

 

아까 설명한 내용을 다시 가져와 볼게요. 우리는 우리가 만든 장고 서비스를 사용자에게 제공하기 위해 서버 컴퓨터가 필요합니다. 그 서버 컴퓨터에 우리가 만든 서비스를 올리고 서버 컴퓨터의 IP 주소와 포트 번호를 알려주면 다른 사람들이 그 주소와 포트 번호를 브라우저에 입력해서 서비스를 제공받을 수 있다는 것이었죠?

 

자 그러면 AWS에서 제공하는 이 서버 컴퓨터에 우리의 장고 서비스를 올린다고 생각해볼게요! 우리는 우리가 제공받은 서버 컴퓨터의 IP 주소와 우리의 서비스가 사용할 포트 번호를 알아야 할 겁니다. 그 둘을 안다고 가정하고 다른 사용자에게 정보를 준다면 그 사용자는 다음과 같이 여러분의 서비스를 사용할 수 있는거죠.

 

{AWS에서 제공하는 나의 컴퓨터의 IP 주소}:8000

 

정말 친절하게도 AWS는 우리에게 배정된 컴퓨터의 IP주소도 함께 제공해 줍니다.

 

그럼 배포에 대한 기본 개념은 어느정도 이해를 하셨으니 실제 AWS를 사용해볼게요!

Comments