6 프로덕션 배포
6.1 서비스 아키텍처
6.1.1 EC2 (Elastic Compute Cloud)
컴퓨터
6.1.2 라우트 53 - DNS
DNS
도메인 이름과 주소를 매핑해 놓은 시스템
one of many DNS is Route 53
ISP (Internet Service Provider)
6.1.3 애플리케이션 로드 밸런서
로드밸런서
연결된 여러 서버의 트래픽을 균형있게 처리하도록 도와줌
즉 트래픽을 서버에 적절히 분배
6.1.4 오토 스케일링 그룹
오토 스케일링 그룹 (ASG)
자동으로 스케일 해 줌
ASG에 min, max, desired 인스턴스 수 정할 수 있음
트래픽 변동에 따라 자동으로 스케일 인 또는 스케일 아웃 해줌
6.1.5 VPC와 서브넷
VPC
독립된 가상의 네트워크
특별한 설정을 하지 않는 이상 이 네트워크 안에서 생성되는 EC2는 외부에서 접근 못함
VPC 안에는 서브넷이라는 여러 개로 쪼개진 네트워크가 존재
우리는 VPC의 한 서브넷 내에 EC2 서버를 생성할 거임
6.1.6 일라스틱 빈스톡
일라스틱 빈스톡
환경 구축을 대신 해주는 서비스
일라스틱 빈스톡에게 필요한 리소르들을 말해주면 일라스틱 빈스톡이 알아서 구축하고 실행해줌
6.2 AWS와 EB CLI 설치
6.2.1 AWS 계정 생성
AWS 리소스에 접근하는 방법
[x] AWS 콘솔
[x] AWS DLI
[ ] AWS SDK
6.2.2 파이썬 설치
6.2.3 AWS CLI 설치
AWS CLI 설치
위의 공식문서 따라서 설치







6.2.4 AWS CLI 설정
6.3.5 pip를 이용해 EB CLI 설치
6.2.6 윈도우 사용자를 위한 환경 변수 설정
6.3 AWS의 일라스틱 빈스톡을 이용한 백엔드 배포
6.3.1 일라스틱 빈스톡이란 ?
6.3.2 eb init 을 이용해 애플리케이션 생성
6.3.3 백엔드 애플리케이션 설정
application-prod.yaml
build.gradle
HealthCheck API
target jar 설정
./elasticbeanstalk/config.yml 설정
6.3.4 eb create를 이용해 AWS에 환경 생성
6.3.5 애플리케이션 배포
6.3.6 환경 구성
6.3.7 엔드포인트 테스팅
6.3.8 프론트엔드 통합 테스팅
6.4 AWS의 일라스틱 빈스톡을 이용한 프론트엔드 배포
6.4.1 eb init을 이용해 애플리케이션 생성
6.4.2 eb create를 이용한 애플리케이션 배포
6.4.3 크로스-오리진 문제
6.5 Route 53 도메인 설정
인증과 인가를 구현할 때 JWT는 반드시 HTTPS와 사용해야 한다.
HTTPS 인증서를 받기 이전에 도메인을 구입해야 하는데, 인증서는 자기 자신이 소유한 도메인에 대해서만 추가할 수 있기 때문이다.
6.5.1 도메인 구매
Route 53
도메인과 호스팅 관리를 도와주는 서비스
AWS console → Route 53
도메인 등록
도메인 구매
6.5.2 호스팅 영역 생성
AWS console → Route 53 → 왼쩍 탭에서 호스팅 영역 추가
구매한 도메인 이름 기입하고 호스팅 영역 생성 버튼 클릭
호스트 영역
DNS 영역 파일
DNS 영역이란 DNS spdlatmvpdltm wmr, <도메인 이름>이 관리할 영역
DNS 영역을 생성하는 이유는 여러 개의 레코드를 한 곳에서 관리하기 위해서임
레코드
이름과 IP를 연결해 놓은 파일 혹은 엔트리
여러 종류가 존재
호스트 영역을 생성하면 SOA와 NS가 각각 하나씩 자도 ㅇ생성
SOA (Start of Aututhority) 레코드 : 이 영역을 관리하는 관리자의 정보를 가지고 있음
NS (Name Server) 레코드 : 해당 도메인
A 레코드 : 해당 도메인으로 프론트엔드 도메인 혹은 백엔드 도메인을 특정 IP 또는 다른 도메인(로드 밸런서의 도메인)으로 연결하는 레코드
서브 도메인 추가 (프론트, 백)
레코드 생성
단순 라우팅 선택
로드 밸런서의 이름은 AWS 콘솔 → EC2 → 로드밸런서에서 확인
6.5.3 백엔드 재배포
http://<도메인>, https://<도메인> 추가하연 CORS 문제 해결
6.5.4 프론트엔드 재배포
http://<도메인>, https://<도메인> 추가하연 CORS 문제 해결 (프론트, 백)
6.6 백엔드/프론트엔드 AWS Certificate Manager 를 이용한 https설정
6.6.1 인증서 요청
AWS console → Certificate Manager
인증서 프로비저닝의 시작하기 또는 인증서 요청
공인 인증서 요청
*.<도메인이름> 기입
DNS 검증
확인 및 요청
이후 테이블에 검증 보류 상태의 도메인 이름이 추가 된다. 이 레코드를 검증하려면 Route 53에서 레코드를 생성해야 한다.
Route 53에서 레코드 생성 버튼을 클릭
6.6.2 백엔드 애플리케이션 HTTPS 설정
AWS console → Elastic Beanstalk
환경창 → 백엔드 애플리케이션 → 구성
로드 밸런서 → 편집 → 리스너 추가
HTTPS가 있으니 HTTP, 즉 80포트를 비활성화
적용 클릭
6.6.3 프론트엔드 애플리케이션 HTTPS 설정
AWS console → Elastic Beanstalk
환경창 → 프론트엔드 애플리케이션 → 구성
로드 밸런서 → 편집 → 리스너 추가
HTTPS가 있으니 HTTP, 즉 80포트를 비활성화
적용 클릭
여기까지 ACM으로 SSL 인증서를 만들고 인증서를 로드 밸런서에 추가하였다.
이제 백엔드와 프론트엔드 API 모두 HTTPS로만 접근할 수 있으며, JWT를 네트워크 중간에 누가 가로채로 암호화됐기 때문에 토큰을 사용할 수 없다
Last updated