Server-less Web Service (S3, CloudFront, Route53)
개요
이전 사내 웹 서비스를 서버리스로 호스팅 한 사례를 공유해보려 한다.
웹 개발자나 클라우드에 관심이 있는 사람들에게는 정말 기초적인 작업이지만 서버리스 환경을 처음 접하게 된 계기가 되어 준비하였다.
1. 신규 웹페이지 서비스 오픈
1. 웹 페이지는 개발이 완료되어 데이터 공유받음
2. 호스팅 방식 선택
3. 서비스 오픈 진행
2. 신규법인 웹페이지 호스팅
호스팅 방식
1. 본사 온프레미스에서 호스팅
2. Cloud에서 서버 생성하여 호스팅
3. AWS Service 활용하여 서버 없이 호스팅
1-1. 본사 VM 호스팅
금액: 0원(전기세...?)
관리: 서버 관리자 필요
난이도: 직접 웹서버를 구축해야 함
2-1. Cloud 서버 호스팅
금액: 약 $6.5 (NCP, 한 달 24시간 작동 기준으로 가장 낮은 스펙의 서버 1대)
관리: 서버 관리자 필요
난이도: 직접 웹서버를 구축해야 함
3-1 AWS, Server-less 호스팅 (서비스 활용)
금액: 약 $0.5 (S3, CloudFront, Route 53, 도메인 금액 제외)
관리: 수시로 확인할 정도의 관리 필요 x
난이도: AWS 서비스를 활용한 Server-less 호스팅으로 간편한 구축
**AWS, Server-less 호스팅 (서비스 활용) 채택 이유**
웹을 다른 사람들이 볼 수 있도록 하려면 배포과정이 필요하다.
AWS는 S3라는 저장소를 제공하는데 저렴한 비용으로 정적 호스팅을 할 수
있다는 장점이 있다.
하지만 S3에서 기본적으로 제공하는 URL은 **HTTPS와 도메인 설정이 불가능**하다.
이는 CloudeFront와 Route53을 이용해 해당 문제를 해결 가능하다.
CloudFront는 S3에서 제공하지 않는 HTTPS 배포를 가능하게 만들어 주며
전 세계에 있는 엣지 포인트를 이용해 캐싱처리를 하여 사용자가
가장 가까운 지역의 엣지 포인트로 접속하게 하여 더 빠른 속도를 제공한다.
**핵심적으로, S3보다 저렴한 비용을 지불하도록 도와준다.**
**(S3와 CloudFront 간 데이터 전송 비용은 지불x)**
Route53은 사용자가 소유한 도메인을 연결해주는 DNS서비스 역할을 한다
웹페이지 서비스 오픈
S3 버킷 생성
웹 서비스 데이터를 저장할 S3 버킷을 생성한다.
데이터를 업로드한다.
버킷의 모든 퍼블릭 액세스를 차단하였다.
현재 S3 버킷의 데이터는 외부에서 직접 접근이 불가능한 상태이며, CloudFront에서만 접근이 가능하도록 진행할 예정이다.
CloudFront Distribution 생성
AWS CloudFront 대시보드에서 배포 생성을 진행한다.
원본 도메인에 이전 생성한 버킷명을 찾아 등록 후 현재 S3 버킷은 외부에서 접근이 불가능한 상태이기 때문에 액세스 ID(OAI)를 생성하여 이를 바탕으로 버킷 정책 업데이트를 진행한다.
즉, S3에서 직접 정책 수정을 진행할 필요 없이, CloudFront 배포 생성에서 OAI 생성 후 업데이트를 진행하면 자동적으로 S3 버킷의 정책 업데이트가 진행된다.
자동 생성된 S3 버킷 정책. 위 CloudFront OAI의 s3:GetObject를 허용한다.
구매한 도메인이 존재한다면, CNAME 항목에서 추가해주면 된다.
CNAME 추가 시에는 SSL 인증서가 필요하다.
이후 기본값 루트 객체를 지정하며 배포를 생성한다.(index.html)
결과
Route 53
구매한 도메인을 Route 53에 등록한다.
(구매한 도메인이 없다면, Route53 에서도 간편하게 신청이 가능하다.)
Route 53 호스팅 영역을 생성 후 NS 유형의 AWS에서 제공하는 네임 서버를 확인한다.
이를 도메인 구매처에서 등록한다. 등록을 진행해야지만 사용이 가능하다.
등록한 도메인을 CloudFront에 적용하러면 SSL 인증서가 필요하다.
직접 인증서를 받아도 되지만, AWS Certificate Manager 서비스에서도 인증서 발급이 가능하다.
구매한 도메인을 입력한 뒤, 검증 방법을 선택한다.
DNS 검증으로 진행하면 이후 Route 53에 DNS 레코드를 추가하면 인증/발급이 완료된다.
요청 이후 DNS 레코드 생성 버튼을 통해 인증을 진행하면 발급이 완료된다.
(시간이 약간 소요된다. 1분~60분)
이후 발급받은 내용을 토대로 CloudFront에 CNAME으로 등록을 진행하면 된다.
'DevOps > Cloud_클라우드' 카테고리의 다른 글
[AWS] Canned, Custom Policy 사용하여 Signed URL 생성하기 (3) | 2023.11.06 |
---|---|
[AWS] CloudFront Signed URL 사용 설정 (1) | 2023.10.30 |
[AWS] CloudFront Signed URL 개념 + URL 구조 파악 (1) | 2023.10.19 |
[AWS] CloudFront 캐싱 확인, 무효화 생성, 삭제 (0) | 2023.10.19 |
[AWS] CloudFront 실전 구축 세팅 (EC2와 연동하기) (0) | 2023.09.07 |