그동안은 로컬 환경에서 클라이언트, 서버, 데이터베이스를 띄워 작성한 코드를 구동했었다. 우리가 개발한 서비스를 외부 사용자가 접속할 수 있도록 하려면 어떻게 해야할까?
개발한 서비스를 유저가 이용할 수 있도록 하는 것
클라이언트
AWS에서 제공하는 S3 서비스를 통해 사용자에게 클라이언트를 제공할 수 있다.
클라이언트 앱을 정적파일로 빌드하여 제공한다. 따라서 S3를 이용해 클라이언트를 배포한다.
빌드
npm run build
와 같은 명령을 사용해서 정적 파일 형태의 결과물을 만들어 낸 후 배포하면 된다. 사용하고 있는 환경에 따라 빌드 과정은 다를 수 있다.버킷 생성하기
서버
AWS EC2 서비스를 통해 서버를 구성하고 서비스를 제공할 수 있다.
AMI 선택하기
필요한 컴퓨터 운영체제, CPU 등을 선택할 수 있다.
키 페어 선택 또는 생성하기
생성한 인스턴스를 원격으로 제어하기 위해서는 SSH 연결을 통해 원격접속이 필요하다. 키페어 다운로드를 눌렀을때 생성되는 .pem 파일은 파라이빗 키 파일이며 퍼블릭 키는 AWS에 저장된다. 이 둘을 모두 이용해야 SSH를 통해 인스턴스에 접근할 수 있다. 따라서 .pem 파일을 잘 관리해야한다.
SSH 프로토콜
서로 다른 PC가 인터넷과 같은 public network를 통해 통신할때 보안상 안전하게 통신하기 위한 통신 규약이다. 주고받는 데이터를 암호화해서 해당 키 페어를 가지지 않은 사람은 통신되는 데이터를 알아볼 수 없으므로 보안산 안전한 통신 방법이다.
ex. cd Downloads
) chmod 400 <pem파일명>.pem
을 해주어야한다.ssh -i
명령어를 이용해 인스턴스에 연결한다.개발환경 구축하기
npm install
해준다.sudo npm start
명령어를 입력해야한다. 그냥 npm start
를 할 경우, EACCESS: permission denied
에러가 발생한다.//패키지 매니저가 관리하는 패키지의 정보를 최신 상태로 업데이트
sudo apt update
//nvm 설치
//참고 링크https://github.com/nvm-sh/nvm
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
//node.js 설치
nvm install node
//npm 설치
sudo apt install npm
데이터베이스
AWS의 데이터베이스 특화 서비스 RDS를 이용해 EC2를 통해 배포된 Server Application의 데이터를 저장, 제공하는 데이터베이스를 배포할 수 있다.
DBMS와 템플릿 선택하기
DBMS로는 Mysql, MariaDb, Oracle, SQL Server, PostgreSQL 등이 있고 템플릿으로는 프로덕션, 개발/테스트, 프리티어 등을 고를 수 있다.
설정
RDS의 DB에 연결하기
mysql -u [마스터 이름] --host [엔드포인트 주소] -P 13306(포트번호) -p
를 입력한 후 엔터를 친 후 설정해놓은 비밀번호를 입력하면 접속된다. show databases
명령어를 입력했을때 설정한 데이터베이스의 이름이 존재한다면 정상적으로 연결된 것이다. 보안그룹 설정하기
RDS의 추가연결 구성 토글에서 사용하기로 한 포트(기본은 3306)에 대한 인바운드 규칙을 수정해주어야한다. 13306번 포트를 사용할 경우, 다음과 같이 사용자 지정 TCP로 설정해 13306번 포트에 대한 IPv4와 IPv6에 대한 접근을 허용해주어야한다.