*도메인 구매경로 : Route 53 -> 도메인 -> 도매인 등록
위와 같이 도메인 구매를 하여야한다. 다음 스탭으로 e-mail과 연락처를 작성하게 되어있고, email에서 인증을 해주어야만 도메인 등록이 정상적으로 처리된다.
호스팅 영역이란, 내가 구입한 도메인에 WAS에서 생성한(ex, s3 로드밸런서 cloud front) 서비스에 연결하거나, 인증서 등록을 하는등 전방적인 내가 구입한 도메인을 관리하는 영역이다.
* 호스팅 영역에 제대로 등록을 하지 않으면 도메인으로 서비스에 연결을 할 수 없다.
cloud front, 로드밸런서 부분은 후술
나는 S3를 Cloud front에 연결하고, EC2의 로드밸런서 기능을 이용할 예정이다. 기본적으로 서울리전에서 작업하기 때문에 서울리전에 인증서 발급을 하면 되겠지만, Cloud front는 한국리전의 인증서로 인증할 수 없기에 버지니아 북부에 인증서를 발급해서, 총 2개의 인증서를 발급 하였다.
인증서 발급 경로 : Certificate Manager -> 인증서 요청
* [중요]도메인 이름은 2개로 발급을 하였는데, *.apptest123.click의 *은 와일드카드라는 의미로 붙이고 있으며, 뜻은 앞에오는 서브도메인에도 인증서를 발급하겠다는 의미이다. 와일드카드 없이 발급을 하게 되면, apptest.click는 인증을 받을 수 있지만, www.apptest123.click는 미인증 상태일 것 이다.
인증서를 발급 받게되면 Route 53(아까 생성한 도메인)에서 라우팅 테이블에 이인증서를 등록하도록 하자.
로드밸런서 생성 경로 : EC2 -> 로드밸런서 -> 로드밸런서
로드밸런서 대상 그룹 생성 경로 : EC2 -> 로드밸런서 -> 대상 그룹
AWS에서는 로드 밸런서타입을 4개로 정의하고 있다(2023. 4월 기준). 위의 3개의 로드밸런서와 클래식 로드밸런서로 총 4개로 정의하고 있으며, 클래식 로드밸런스는 현재는 거의 사용하지 않는다.
나는 HTTPS에 대한 로드밸런서를 사용하고자 하기 때문에 1번 Application Load Balancer를 선택했다.
로드밸런서의 이름을 정의해준다. 로드밸런서 이름은 중복될 수 있으나, Key값으로 찾아야하기에 내가 찾을 수 있게 지정해주어야한다.
VPC와 가용영역을 설정해준다. 가용영역은 2개 이상 설정해주어야하며, 로드밸런서의 오토스케일링 기능을 이용할시 선택된 가용영역에서만 인스턴스가 증감한다.
보안그룹을 설정한다. 내가 원하는 포트를 인바운드, 아웃바운드 해야하기 때문에 미리설정이 되어있지않다면, 신규 생성하는것이 좋다.
로드밸런서의 리스너를 설정해준다. 나는 80포트와 443포트에서 들어오는 트래픽을 타겟그룹으로 넘길것이기 때문에 두개의 리스너를 설정해주었다.
내가 받았던 인증서를 로드밸런서에 등록해준다.
[참고] 로드밸런서에 타겟그룹설정이 안되어있다면 타겟그룹생성이 안된것이거나, 다른 로드밸런서에서 사용 중인것으로, 신규작성하거나 기존 타겟그룹에 로드밸런서를 제외하여야한다.
타겟그룹은 인스턴스, IP, LAMBDA, 혹은 다른 로드밸런서가 될 수 있다. 나는 EC2의 인스턴스로 로드밸런서를 통해 트래픽을 넘겨줄 예정이기 때문에 인스턴스로 생성하였다.
Cloud front 생성 및 배포 경로 : Cloud Front -> 배포 -> 배포 생성
원본 도메인 : cloud front에서 가져올 S3의 경로를 입력해준다.(이름이 도메인과 같아야 한다는것을 꼭 기억하자)
이름 : 이 cloud front의 이름을 지정한다.
해당 프론트에서 받을 HTTP의 메서드를 지정하고 뷰어프로토콜 정책에서 리다이렉트를 설정한다(나는 80번으로 오는 트래픽을 443으로 넘겨줄것이기 때문)
SSL인증서를 넣어준다. 처음에 만들었던 버지니아 북부 리전에 인증서가 존재하여야만 선택할 수 있다.
Cloud front를 생성하고 다음 스탭으로 넘어간다
설정의 편집에 들어가서 대체 도메인을 설정해줄 것 이다.
나는 프론트를 불러오는 도메인을 www.도메인으로 작성하였다. 이게 가능한 이유는 우리가 인증서 발급(버지니아북부)를 받을때, '*.도메인'이런 식으로 와일드 카드를 넣은 도메인도 인증서를 넣었기 때문에 인증이 가능한 것이다.
Route 53레코드 등록 경로 : Route53 -> 호스팅 영역 -> 호스팅 영역
내가 위에서 작성한 로드밸런서와 Cloude Front를 도메인에 호스팅 해 주어야 www나 api등 서브도메인으로 접속이 가능하다.
레코드 이름을 지정해준다.
나는 로드밸런서(백앤드)를 api로 서브도메인을 지정했다. 별칭을 체크해주고 하단에 내가 생성한 로드밸런서를 찾아서 지정한다.
Cloud Front도 레코드 생성을 진행한다.
모든 설정을 완료하면
1. S3 버킷에 있는 프론트앤드의 코드를 Cloud Front로 받아와 실행하고
2. Cloud Front에서 백앤드로 요청하는 트래픽을 로드밸런서가 받아서 EC2 인스턴스(백앤드)로 넘겨주고
3. EC2인스턴스에서는 RDS와 연결이 되어 데이터베이스에 데이터를 기록하는 3티어 아키텍쳐가 클라우드 서비스로 실행이 된 것이다.
여기에 추가로 도메인을 구입해 Route 53에서 라우팅을 했기에, 임의의 도메인이아닌 내가 구입한 도메인으로 접속이 가능한 상태가 되는것이다.
3티어 아키택쳐 클라우드 서비스로 배포를 마치며, AWS는 친절하게 몇번의 클릭으로 서비스를 사용할 수 있게 해준다. 다만, 내가 그 서비스의 기능을 알지 못하고 넘어간다면 분명히 다른과정에서 문제가 생겨서 돌아오는 상황이 생기게 되어있다. 모든 옵션을 이해하고, 내가 선택한 옵션에서 따라올 부가적인 문제에 대해 학습할 필요성을 크게 느낀다.
3-티어 아키텍처 WAS로 만들어보기 ( S3, EC2, RDS) (1) | 2023.04.17 |
---|---|
1차 팀프로젝트 ] LMS(학습관리시스템) (0) | 2023.04.05 |
ElephantSQL 과 PostgreSQL을 사용하여 로그 파이프라인 작성하기. (0) | 2023.03.30 |
API 문서화 / yaml파일과 sheety (0) | 2023.03.23 |
Postman) HTTP 응답 코드 확인 Message States (0) | 2023.03.17 |