IM Sprint #8 - AWS로 배포하기

윤슬기·2020년 1월 8일
0

for IM Sprint

목록 보기
8/8

IM Sprint

IM Sprint 시리즈는, 코드 스테이츠의 웹 개발 심화 코스인 Immersive 코스에서 수강생들과 함께 이야기 나눌 주제에 대해 빠르게 학습하고 정리한 글이다.


배포하기

지금까지 내 컴퓨터, 로컬 환경에서 실행되던 클라이언트, 서버와 데이터베이스를 사용자가 접근 가능한 환경에 올리는 일. 이를 배포(Deployment)라고 하며, AWS(아마존 웹 서비스)가 제공하는 다양한 서비스를 이용하면 보다 쉽게 실현할 수 있다. 심플한 웹 어플리케이션을 배포할 때 중심이 되는 AWS 서비스는 S3, EC2, RDS가 있다. 이 서비스들을 이용해서 이전 스프린트에서 작성한 간단한 프로젝트를 어떻게 배포할 수 있는지 알아보았다.
프로젝트는 클라이언트에 React, 서버에 Node.js와 Express.js, 데이터베이스에 MySQL과 Sequelize를 사용했다.

1. S3

[ Amazon Simple Storage Service 시작하기 | AWS ]
... Amazon Simple Storage Service(Amazon S3)는 인터넷 상에 있는 스토리지입니다. Amazon S3를 사용하면 웹을 통해 언제 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있습니다. ...

정적 파일을 업로드하고 관리할 수 있는 저장공간이다. 정적 웹 호스팅 시 클라이언트를 구성하는 파일들을 이곳에 업로드한다.
S3에서는 파일을 담는 개별적인 공간인 '버킷'을 생성하고, 각 버킷 별로 환경설정을 할 수 있다. 버킷에 업로드하는 파일은 객체 형태로 담기며, 검색 시 사용되는 ID인 고유한 key를 부여받는다. 구조화되지 않은 데이터를 저장하기에 알맞다.

리액트로 작성한 클라이언트, 그 중 Create React App으로 생성한 프로젝트는 build라는 명령이 있다. 이를 사용하면 작성한 코드와 파일들을 webpack이 하나로 묶어서 정적인 HTML, CSS, JS 파일로 만들어준다. 만들어진 파일들을 S3 버킷에 업로드하고, 외부에서 확인할 수 있도록 권한을 설정해준다.

2. EC2

[ Amazon EC2란 무엇입니까? | AWS ]
... Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장식 컴퓨팅을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 통해 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능합니다. 또한 Amazon EC2는 요구 사항이나 갑작스러운 인기 증대 등 변동 사항에 따라 신속하게 규모를 확장하거나 축소할 수 있어 서버 트래픽 예측 필요성이 줄어듭니다. ...

EC2는 가상 컴퓨터, 가상 운영체제(머신 이미지)로 24시간 켜져 있는 한 대의 컴퓨터라고 할 수 있다. 이 컴퓨터를 대여해서 원하는 운영체제와 사양 및 웹 서비스에 필요한 프로그램들을 설치해 사용한다. 여기에는 서버만을 설치할 수도, 서버와 데이터베이스를 함께 설치할 수도 있다.
서버만 설치하는 경우에는, 우선 Git 레포지토리에 작성한 서버 코드를 업로드해야한다. 가상 컴퓨터에서 해당 레포지토리를 clone하여 서버를 시작할 것이기 때문이다. 그리고 EC2에서 몇 가지 환경설정이 필요하다.

EC2에 새로운 컴퓨터(이를 '인스턴스'라고 한다)를 빌린 후, 해당 컴퓨터에 접근할 수 있는 pem키를 다운로드한다. 그리고 가상 컴퓨터에 접속하여 작성한 Git 레포지토리를 clone, 필요한 모듈들을 설치하고 서버를 시작한다.

3. RDS

[ Amazon Relational Database Service(Amazon RDS)란 무엇입니까? | AWS ]
[ AWS RDS vs EC2 차이점, 간단히 파악하기 | Bespin ]

... Amazon Relational Database Service(Amazon RDS)는 AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스입니다. 본 서비스는 업계 표준 관계형 데이터베이스에 필요한 용량을 제공하면서 비용 효율적이고 크기 조정이 가능할 뿐만 아니라 데이터베이스 관리를 위한 공통 작업까지 관리합니다. ...

RDS는 데이터베이스를 이용, 관리, 설치 및 운영할 수 있는 서비스이다. DB 인스턴스(데이터베이스 저장 공간)와 DB엔진(데이터베이스 종류)를 선택해 대여해서 이용한다.

AWS를 이용하는 이유

위의 세 가지 서비스, 그리고 AWS와 다른 클라우드 서버가 제공하는 대부분의 서비스의 공통적인 장점은 '원하는 만큼 공간을 빌려 사용한다'는 점이다. 물리적으로 파일, 서버와 데이터베이스를 저장할 공간을 개인이 마련하거나 서버 호스팅 서비스를 통해 서버를 운용한다면, 서비스가 확장되거나 혹은 축소될 때 자유롭게 규모를 조절하기는 어렵다. 하지만 AWS를 이용한다면 필요한 규모만큼만 빌려서 사용할 수 있고, 서버 스펙을 변경할 수도 있기 때문에 비교적 가볍게 서비스를 시작할 수 있다.

profile
👩🏻‍💻

0개의 댓글