이전까지는 프로젝트를 만들면서 코딩을 통해 서비스를 만드는 과정을 진행했다면,
이번과정은 누구나 나의 서비스를 이용할 수 있게 프로젝트를 배포하는 과정을 진행해보았다.
배포는 AWS cloud
로 할 예정이다.
이전 학부과정
때 클라우드
를 한번 사용해본적이 있다.
당시 스마트도어락
작품을 만들었고, 도어락에 달려있던 초음파센서
를 통해 센서의 거리가 짧아진다고 인식하면 자동으로 카메라모듈
을 통해 도어락 앞에 사진을 찍고 자동으로 네이버 클라우드
에 사진을 업로드하여 확인 할 수 있는 기능이었다.
그 이후로 나는 클라우드
를 사용해본적이 거의 없었다.
다시 현재로 돌아와, 현재 클라우드
기업의 대표적인 예를 들어보면,
Microsoft - Azure(애저)
, Amazon - AWS(Amazon Web Service)
, Google - Google Cloud Flatform
, Naver - Navercloud
등등이 있다.
이 중 현업에서 현재 많이 사용하고 있다는 AWS
를 사용해보려고한다.
편하게 서버를 관리하기 위해서 항상 켜놓을 수 있는 컴퓨터인 EC2
사용권을 구매 할 예정이다.
튜터님께서 금융권에는 cloud
를 사용하지않고 물리서버
를 사용한다고 하셨다.(일부 금융권 제외)
물리서버
를 사용하게되면, 관리소요가 많이생겨 힘들다고 하셨다.
(나도 부대에 있을때 상급부대로 넘어가는 작은 서버실을 관리 해야했기때문에 작게나마 공감할 수 있었다.)
클라우드의 장점은 여러가지 있지만 대표적으로 scale-up
을 꼽을 수 있는데,
필요할때마다 클라우드
의 크기를 늘려 해당트래픽
을 감당 할 수 있다.
우리가 접속하는 사이트(네이버, 구글 등)들은 주소가 www.naver.com
, www.google.com
으로 되어있다. 하지만 이는 IP주소(172.000.00)
를 알파벳
으로 보기 좋게 바꾼것인데, 이런 시스템을 DNS(Domain Name System)
이라고 한다.
클라우드의 5가지 특징은 다음과 같다.
가. On-demand self-service
: 컴퓨팅 자원을 요구하는 즉시 자동제공(인간의 개입 불필요)
나. Broad network Access
: 어디서든 인터넷을 통한 자원접근
다. Resource pooling
: 기업은 고객의 리소스위치에 신경 쓰지 않게끔 자원의 풀을 확보한다.
라. Rapid elasticity
: 탄력적으로 자원을 줄이거나 늘릴 수 있음
* scale up and down
마. Measured service
: 자원 사용량이 측정되고 쓴 만큼 지불함. 투명성, 리소스 모니터링, 제어 및 보고 가능
출처: 미국 국립표준연구소(NIST)
AWS에서 EC2
서버를 구매하면 인스턴스
를 통해 서버를 구축 할 수 있다. 서버를 구축하게 되면 IPv4 퍼블릭 IP
가 주어지는데, 여기에 자신이 업로드 하고 싶은 파일을 업로드 하면된다.
요즘은 인스턴스(EC2)
를 직접 만들지않고 docker
를 만든다고한다.
docker
의 정의는 다음과 같다.
Docker를 사용하면 코드를 더 빨리 전달하고, 애플리케이션 운영을 표준화하고, 코드를 원활하게 이동하고,
리소스 사용률을 높여 비용을 절감할 수 있습니다. Docker를 사용하면 어디서나 안정적으로 실행할 수 있는 단일 객체를 확보하게 됩니다.
Docker의 간단한 구문을 사용해 완벽하게 제어할 수 있습니다.
폭넓게 도입되었다는 것은 Docker를 사용할 수 있는 도구 및 상용 애플리케이션의 에코시스템이 강력하다는 의미입니다.
출처: AWS/도커
쉽게 말하면, 가상머신
이라고 생각하면 편하다. python
의 venv
처럼 서버환경에서도 가상화면을 만들어 다른 서버의 환경설정과 얽히지 않게 해주는 기능이 docker
라고 생각하면 편할 것이다.
보통, git
코드를 사용하여 서버에 업로드하지만, 우리는 filezilla
app을 통해 인스턴스
에 파일을 업로드 할것이다.
이런식으로 편리하게 서버에 업로드 할 수 있다.
이를 이용해 flask
파일을 똑같이 서버에 업로드하고 실행하면 프로젝트를 구현 할 수 있다.
이번시간에는 AWS-cloud
기능을 사용해봤다.
웹 구현을 하는데 있어 서비스를 만드는것도 물론 중요하지만,
궁극적으로, 서비스 배포를 해야 client
가 사용 할 수 있기 때문에 단순히 지나칠 기능은 아니라고 생각했다.
다음 수업시간에도 열심히 배워 cloud
에 대해 많이 알아가야겠다.
지금 진행하고 있는 프로젝트 지금뉴스!
도 AWS
에 올려 배포해보는 과정을 거쳐봐야겠다.