[커리어스팟] EC2로 배포 준비하기

짧게나마 기록해보려는 AWS로 배포하기 .. (feat.EC2)

 

운영 서버와 AWS 소개

운영서버는 개발이나 테스트 목적이 아닌 실제 사용자들을 서비스하는 서버

→ 트래픽 대응도 해야하고 빠른 응답 속도와 높은 가용성을 보장해야함

운영 서버 관리의 세 단계

환경 구성, 코드 배포, 모니터링

  1. 환경구성

    서비스할 코드를 구동시킬 수 잇는 서버 인프라 구축

  2. 코드 배포

    구성한 환경에 최신 버전의 코드를 빠르고 안전하게 배포

  3. 모니터링

    안정적인 서비스 운영을 위해 서버와 코드에 어떤 이상이 없는지 바로 파악하고 대응해야됨

운영 서버 아키텍처의 이해 (운영 서버가 어떻게 구성돼 있는지....)

단일 서버 구성

요청 보내는 클라이언트 → 요청 처리하는 서버 한대, 디비와 애플리케이션이 같은 서버에서 실행되고 있음. 별도의 네트워크 설정 할 필요 없이 걍 로컬 호스트 대상으로

단점이 있음

  1. 서비스에 장애가 생길 확률이 높음.. 디비랑 서버가 같은 자원을 공유하기 때문에 문제 생기면 전체 서비스가 죽어버림
  2. 서버 자원을 효율적으로 사용하기 어려움..
  3. 보안성이 떨어짐

EC2를 이용한 서버 인스턴스 생성과 관리

쉽게 사양을 고르고 원하는 시간만큼 사용할 수 있는 '가상 서버' CentOS 이런 것 처럼

  • AMI (Amazon Machine Image)

    인스턴스의 기반이 되는 이미지.. 그니깐 PC에 맥, 리눅스, 윈도우나 이런 운영체제 깔아주는 거라고 생각하면됨. 재사용도 가능

  • 보안그룹

    보안을 위해서 IP랑 포트번호를 이용해서 정의하는 서버 접속 규칙. 특정 IP 포트에 대해서만 서버에

  • 키페어

    서버에 접속하기 위한 열쇠 서버에는 공개키 / 사용자는 개인키

인스턴스 생성

ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#Instances:sort=instanceId

 

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#Instances:sort=instanceId

 

ap-northeast-2.console.aws.amazon.com

인스턴스 접속

# 권한주기
chmode 400 /path/to/인증서.pem

# ssh로 접속하기
ssh -i /path/to/인증서.pem ec2-use@ec2-52-79-180-113.ap-northeast-2.compute.amazonaws.com

HTTP, HTTPS 접근 가능하도록 보안그룹 설정

이런식으로 HTTP와 HTTPS를 열어주자

깃허브로 배포 준비

# root 권한주기 
sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-develd 

# 디렉토리 생성 
cd /var 

# www 폴더 생성 
sudo mkdir www 

# /var/www 경로를 ec2-user의 소유로 변경해줘야됨 
sudo chown ec2-user www

깃허브로 배포 과정

# 깃 클론해주기 (서버코드랑 클라이언트 코드 둘다)
git clone https://github.com/Re-Coder-3/career-spot-client.git
git clone https://github.com/Re-Coder-3/career-spot-server.git

# 서버코드에 .env 추가해주기
touch .env
vi .env  # 환경변수들 추가해주기

# 서버, 클라이언트 동일
npm install
npm start

포트 열어주기

클라이언트 코드를 3000 번 포트로 열어뒀음.

보안규칙에 가서 3000번 포트를 열어주자!

http://52.79.180.113:3000/

접속완료 !!

마무리 단계

  1. nginx를 이용해서 백그라운드에서 접속 가능하도록 변경해주기
  2. AWS Route 를 이용해서 도메인 변경해주기
  3. RDS 용량 관리
  4. 배포 자동화 시도해보기