[Deploy] TWIL : AWS를 이용한 https 서버 배포 (21/01.14~01.21)

정빈·2021년 2월 5일
0

Final 프로젝트를 1주정도 남겨놓은 지점에서, 배포 테스트를 위해 server를 https로 배포했다.
배포는 Amazon Web Services의 EC2, RDS, Route53을 이용해 진행되었다.

만들어진 서비스를 '배포'하는 작업을 해야하는 이유는, 모든 사람들이 우리의 서비스에 접근하게 하기 위해서이다. 배포하지 않으면 내 로컬 컴퓨터를 벗어날 수 없다.

First 프로젝트 때의 경험 덕분에, 그때보다는 훨씬 수월하게 진행 할 수 있었다.

앞서 인증(authetication)에 대해 블로깅을 하면서 https의 개념에 대해 다뤘지만 다시 한번 짚자면,
https는 www(world wide web) 통신 프로토콜인 http의 보안이 강화된 버전이다.
통신의 인증과 암호화가 이루어져 http보다 훨씬 보안이 잘 이루어진다.

많은 공공 Rest API들이 https로의 요청을 요구하고 있기 때문에,
외부 데이터를 받아 이용을 해야하는 서비스라면 어떤 프로토콜을 허용하고 요청하는지 미리 체크를 해봐야 한다.


AWS EC2, RDS, S3, Route53

이번 프로젝트 서버를 https로 배포하는 flow는 이렇게 표현할 수 있다.

사용한 각각의 서비스에 대해 기록한다.


  • EC2(Elastic Compute Cloud) : 서버를 띄우는(배포)하는 가상 인스턴스(컴퓨터)를 생성할 수 있다. 새로운 인스턴스를 만들면 그에 해당하는 pem키가 주어지고, 이를 이용해 터미널 .ssh에서 ssh 명령어로 새로 생성(빌린)된 가상 컴퓨터에 접속할 수 있다.
    (ssh : Secure Shell Protocol, 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜)

  • RDS(Relational Database Service) : 가상 DB 인스턴스를 생성할 수 있다. 생성된 DB는 원하는 EC2와 연결하는 작업이 필요하다. 서버사이드에서 호스트를 지정해줘야 한다.

EC2와 RDS를 연결해주는 과정에서, AWS 콘솔의 각각의 VPC 보안그룹에서 InBound / OutBound 설정에서 서로 열어줘야한다.
VPC(Virtual Private Cloud)란 논리적으로 공간을 격리한 네트워크이다. 보안을 위해 AWS의 리소스 간의 허용을 최소화하고 그룹별로 손쉽게 네트워크를 구성하기 위해 사용된다. 각각의 인스턴스(EC2, RDS)들은 각각의 다른 VPC를 기반으로 생성된 것이다.


  • S3(Simple Storage Service) : 인터넷 스토리지 서비스. 웹상 어디서나 원하는 양의 데이터를 저장하고 검색할 수 있다. 버킷이라는 하나의 주머니(?)를 만들어, 원하는 객체(보통 클라이언트 배포로 많이 쓴다)를 넣어두면 제공되는 url로 언제 어디서나 접근이 가능하다. 액세스 제어 설정으로, 누구에게 어느 요청까지 허용할 것인지 컨트롤 할 수 있다.

서버를 배포하면서 S3가 필요했던 이유는 서비스상 클라이언트로부터 오는 이미지를 받아서 저장해야했기 때문에, multer-s3 모듈을 이용해서 이미지를 S3 버켓에 저장하고 꺼내주는 방법을 이용했다.


  • Route53 : DNS(Domain Name Service)이다. AWS Certificate Manager 서비스를 통해 인증을 받은 도메인으로 호스팅 영역을 생성해 해당 도메인을 https로 배포하고, 접근시 연결된 EC2로 라우팅을 시켜준다.

https 배포시 도메인이 필요한 이유가 여기에 있었다. https는 http에 secure라는 개념이 더해진 만큼, 통신에서 SSL(Secure Socket Layer)이라는 보안계층이 추가되고, 신뢰할 수 있는 인증 기관에서 발급한 SSL 인증서가 존재해야 https 배포가 가능하다.



사실 AWS의 S3, EC2, RDS 서비스는 프로젝트 직전에 인스턴스를 생성해서 접속하는 것 까지는 스프린트로 배웠지만, 각 서비스의 인스턴스들 간의 연결을 어떻게 하는지는 몰랐다.
HA가 끝난 후의 스프린트라 사실 마음이 풀린 것도 있었고, 처음 AWS를 접했을 땐 너무 어렵게만 느껴졌었다.

하지만 2번의 프로젝트를 진행하고 난 지금, AWS를 활용한 배포에는 큰 두려움이 없다.
또다시 느낀다. 모든 기술은 써보기 전과 처음 써볼 때가 가장 어렵게 느껴진다. 두 번째부터는 어떻게든 적응을 한다. 여러 번 진행되면 쉬워진다.
이런 플로우는 모든 학습에 적용할 수 있다. 정말, 시작이 반이다. 일단 시작하고 경험이 생기면, 어떻게든 경험치가 생긴다.

이 진리, 잊지말자 정빈. 무엇이든, 처음이라는 두려움에 괜히 지지말자. 눈 딱 감고 3번만 반복하자. 그러면 내 것이 될 거다.

profile
Back-end. You'll Never Walk Alone.

0개의 댓글