본문 바로가기

AWS deploy

S3, EC2, RDS

자신이 만든 웹 서비스는 배포가 되지 않는다면, 더 이상 의미를 가질 수가 없다. 따라서 웹 개발자는 배포에 대한 기본 지식을 탑재하고 있고 간단한 배포 정도는 혼자 할 수 있어야 한다. 웹 서비스의 배포는 AWS이전과 이후로 나누어진다.

AWS가 없었다면 아직도 직접 서버를 구축하고 관리를 했을지도 모른다. AWS에서는 웹 서비스의 제작 및 구현, 뿐만 아니라 배포를 통한 고객에게 직접 서비스를 제공한다. 

AWS 서비스는 프리티어로 이용하면 대부분 무료로 사용할 수 있다. 다만, AWS에서 요구하는 조건을 충족하지 않으면 소액 과금이 될 수 있으므로 단순 개발 공부하는 자에게는 주의를 요한다.

 

S3

Simple Storage Service의 약자로 파일 서버의 역할을 하는 서비스이다. 일반적인 파일서버는 트래픽이 증가함에 따라서 장비를 증설하는 작업을 해야 하는데 S3는 이와 같은 것을 대행한다. 트래픽에 따른 시스템적인 문제는 걱정할 필요가 없어진다. 또 파일에 대한 접근 권한을 지정할 수 있어서 서비스를 호스팅 용도로 사용하는 것을 방지할 수 있다.

버킷 - 객체가 파일이라면 버킷은 연관된 객체들을 그룹핑한 최상위 디렉터리라고 할 수 있다. 버킷 단위로 지역을 지정할 수 있고, 또 버킷에 포함된 모든 객체에 대해서 일괄적으로 인증과 접속 제한을 걸 수 있다.

React app 배포해보기

만들어진 리액트 app을 yarn build 명령어를 통해 build폴더를 생성한다. build는 웹팩을 통해서 리액트 app내용을 하나의 정적 파일로 만들어주는 역할을 한다.

aws 사이트로 로그인해서 S3 서비스로 들어간다음 버킷을 만든다.

만들어진 버킷에 build파일들을 업로드하고 버킷 속성 설정을 통해 배포를 할 수 있다.

EC2 

쉽게 생각해서 한대의 컴퓨터를 임대해주는 것이라고 생각하면 된다. 이 컴퓨터는 특별한 컴퓨터가 아니라 우리가 사용하고 있는 컴퓨터와 같은 컴퓨터이다. 여기서 자신이 선호하는 운영체제를 선택하고 웹 서비스를 위한 프로그램들(웹서버, 데이터베이스 등)을 설치하면 된다. 이 컴퓨터는 인터넷을 통해서만 접속할 수 있고, 삭제 즉시 제거되며, 초기 구입비가 전혀 없고, 사용한 만큼 비용을 지불하면 된다.

node server 배포해보기

먼저 만들어진 서버를 git 저장소에 업로드한다. aws EC2 서비스로 들어가 인스턴스 시작을 누르면 선택 가능한 다양한 운영체제들이 나온다. 여기서 프리티어가 가능한 운영체제를 사용해야 과금이 되지 않는다. 그리고 인스턴스를 시작하면 새로운 키를 만들어야 하고 만들어진 키는 한번 저장을 하면 다시는 키를 얻을 수 없기 때문에 신중한 관리가 필요하다.

만들어진 키를 적용시키기 위해서는 터미널에서 ssh폴더를 찾은 다음 폴더에 다운로드한 키를 옮겨준다. ssh 폴더가 없다면 최상위 루트에서 ssh폴더를 만들어 주면 된다. 그리고 터미널 창에 chmod 400 practice-server-deploy.pem을 입력해주고 권한을 부여해준다.

인스턴스 연결을 누르면 연결 방법이 나오고 그것을 참고하여 자신이 선택한 운영체제 컴퓨터로 연결한다.

처음 연결이 되면 git만 설치되어있는 상태이다. 그리고 git을 clone 하여 node.js를 실행하려고 하여도 node.js가 설치되어있지 않기 때문에 자신이 필요한 것들을 추가적으로 설치가 필요하다.

설치들이 다 끝나면 clone 한 node server에 들어간 다음 npm install을 통해 node module을 설치하고 EC2 보안 그룹에서 HTTP 유형을 추가하고 사용지 지정 TCP를 추가하고 node server이서 지정한 포트를 포트 범위에 적어준 뒤 저장을 하면 EC2로 서버 접속이 가능해진다.

PM2를 설치하면 터미널을 종료하여도 server는 계속 작동된다. 

 https://pm2.keymetrics.io/docs/usage/quick-start/

 

PM2 - Quick Start

Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.

pm2.keymetrics.io

 

RDS

애플리케이션 내에서 관계형 데이터베이스의 설정, 운영, 스케일링을 단순하도록 설계된 클라우드 내에서 동작하는 웹 서비스이다. 데이터베이스 소프트웨어를 패치하거나 데이터베이스를 백업 하거나 시점 복구를 활성화하는 것과 같은 복잡한 관리 프로세스들은 자동으로 관리된다. 스토리지와 연산 자원들을 스케일링하는 것은 하나의 API 호출로 수행할 수 있다.

데이터베이스 만들어보기

aws RDS 서비스로 들어가 프리티어로 만들 수 있는 데이터베이스를 생성한다. DB 버전은 가급적 최신 버전으로 선택한다. DB 인스턴스 식별자를 작성하고 마스터 사용자 이름을 작성한 뒤 비밀번호를 적고 다음 단계로 넘어간 뒤 초기 데이터베이스를 작성할 일이 많은 경우 퍼블릭 액세스 가능성을 예라고 체크한다.

데이터베이스 옵션에서 데어터 베이스 이름은 인스턴스 이름이 아니라 mySQL에 들어가는 DB이름이다. 그것을 작성하고 포트를 작성한 다음 데이터베이스를 생성한다.

터미널 창에서 mysql -u 마스터 이름 --host 엔드포인트 -P 지정 포트 -p를 입력하면 패스워드는 RDS생성 때 작성한 비밀번호를 치면 만들어진 database를 확인할 수 있다.