[AWS] Webhosting using Route53 + CloudFront + ALB

[1] Background & Purpose

AWS #01 계정(서비스 계정)
- Oregon Region(us-west-2)
- AWS EC2, ALB, S3, CloudFront 가 서비스되고 있다.

AWS #02 계정(도메인 계정)
- Seoul Region(ap-northeast-2)
- Web-Hosting Domain에 AWS-DNS로 연결된 Route53 Record를 관리하고 있다.

1. 서울 리젼의 사용자를 대상으로 한 서비스의 긴 로딩 시간(단순 메인 페이지가 전체 로딩되는데 30 초의 시간이 넘음)
2. CloudFront 로 호스팅하고, Route53에 연결하고자 합니다.(CloudFront 의 DNS이름을 Route53 레코드의 CNAME으로 할당)
3. CloudFront 원본 오리진을 ALB로 연결합니다.
4. 서울 등 전체 글로벌 영역에서 매우 짧은 로딩 시간으로 오레곤에 위치한 웹서비스를 로딩할 수 있어야 한다.

본 프로젝트의 주요 목적은 AWS(Amazon Web Services) 환경에서 구축된 서비스의 글로벌 접근성과 성능을 향상시키는 것입니다.

서비스는 현재 AWS의 Oregon(us-west-2) 리젼에서 EC2와 ALB(Application Load Balancer)를 활용하여 운영되고 있습니다.

그러나, 이 서비스는 Seoul 지역에서 접근할 때 로딩 시간이 상당히 길게 걸리며, 단순 메인 페이지 로딩에만 30초 이상의 시간이 소요되고 있습니다.

이러한 문제를 해결하기 위해, 본 프로젝트에서는 AWS의 CloudFront와 Route 53을 활용하여 서비스의 글로벌 접근성과 성능을 개선하고자 합니다.

CloudFront를 통해 콘텐츠를 빠르게 전달할 수 있으며, Route 53을 통해 DNS를 관리하여 사용자의 요청을 효율적으로 처리할 수 있습니다.

[2] Task Details

2-1. AWS Certificate Manager 인증서 설정

  1. 버지니아 북부(us-east-1) 리젼의 AWS ACM 에서 ALB의 HTTPS 인증서로 연결한 SSL/TLS 인증서를 Import 진행한다.
  2. 보유하고 있는 SSL/TLS 인증서 없이, Amazon 발급으로 진행할 경우에는 해당 us-east-1 리전에서 발급한다.

2-2. 배포 설정

– 대체 도메인 인증은 해당 서비스의 호스트 도메인 풀 네임을 작성한다.

– service.example.com 등과 같이, 레코드에 업데이트하는 서브도메인명을 풀로 기재하여야 한다.

– 이때, us-east-1에 등록한 ACM 인증서를 추가한다.

2-3. 동작 편집 설정

– 원본 및 원본 그룹에는 ALB(DNS Name)을 선택합니다.

– 뷰어 프로토콜 정책은 HTTP and HTTPS

– 허용된 HTTP 방법은 모두 선택합니다.

– 캐시 키 및 원본 요청

헤더: 사용자의 요청 헤더를 기반으로 캐시 결정이 이루어집니다.
쿼리 문자열: URL의 쿼리 문자열 파라미터를 기반으로 캐시 결정이 이루어집니다.
쿠키: 사용자의 쿠키를 기반으로 캐시 결정이 이루어집니다.

글로벌 리젼으로 레이턴시를 줄이기 위한 효과적인 방법을 제시합니다.

[장점]

기대효과:
개별화된 콘텐츠 제공:
사용자별로 다른 헤더, 쿼리 문자열, 쿠키 값을 가질 수 있으므로, 각 사용자에게 맞춤화된 콘텐츠를 제공할 수 있습니다.

캐시 효율성 향상:
다양한 조합의 캐시 키를 사용하면, 더욱 세밀한 캐시 정책을 구현할 수 있어, 캐시 효율성이 향상됩니다.

원본 서버 부하 감소:
캐시를 효율적으로 활용하면, 원본 서버로의 요청이 감소하여 서버 부하를 줄일 수 있습니다.

응답 시간 개선:
적절한 캐시 정책을 통해 사용자에게 빠르게 콘텐츠를 제공할 수 있어, 사용자 경험을 향상시킬 수 있습니다.


[단점]
모든 헤더, 쿼리 문자열, 쿠키를 캐시 키로 사용하면, 캐시의 다양성이 증가하여 캐시 히트율이 감소할 수 있습니다.
따라서, 실제 사용 사례에 맞게 적절한 캐시 키를 선택하는 것이 중요합니다.

2-4. Route53 연결

1. Route53 서비스를 메인으로 하고 있는 AWS 계정으로 접속합니다.

2. 대체도메인으로 설정한 도메인 레코드를 생성하거나 기존 레코드를 수정합니다.

3. 이때, CNAME으로 CloudFront의 DNS Name 을 변경하면 됩니다.

2-5. CloudFront 무효화 & 캐시 새로고침

AWS CloudFront에서는 캐시된 콘텐츠를 무효화하여 새로고침하려면 “무효화 생성(Invalidation)”을 사용할 수 있습니다. (/* 통해 쉽게 전체 재배포 진행 가능합니다.)

무효화를 생성하면, 지정한 콘텐츠가 CloudFront 엣지 로케이션에서 삭제되어, 다음 사용자 요청이 오면 원본 서버에서 새로운 콘텐츠를 가져와 캐시합니다.

무효화 생성을 통해 특정 파일이나 전체 디렉토리를 대상으로 캐시를 초기화할 수 있으며, 이를 통해 사용자들에게 최신의 콘텐츠를 빠르게 제공할 수 있습니다.

하지만, 무효화는 비용이 발생할 수 있으며, 빈번한 무효화는 원본 서버에 부하를 줄 수 있는 단점이 있기 때문에 조직의 정책을 신중하게 고려해야합니다.(당사자 협의 필요)

[3] Learnings & Results

3-1. Learnings

본 프로젝트를 통해, AWS의 다양한 서비스를 활용하여 글로벌 접근성과 성능이 향상된 서비스를 구축하였습니다. 이를 통해 사용자는 더욱 빠르고 안정적인 서비스를 이용할 수 있게 되었으며, 서비스 제공자는 비용 효율적으로 글로벌 서비스를 제공할 수 있게 되었습니다. 이러한 경험을 통해, 클라우드 서비스의 중요성과 효율성을 한층 더 깊이 이해하게 되었습니다.

3-2. Results

글로벌 접근성 향상:

서비스가 전 세계 어디에서나 빠르게 접근 가능해지므로, 사용자 경험은 크게 향상됩니다. 특히, 서비스의 주 사용자층이 위치한 Seoul 지역에서의 접근성이 개선되어, 서비스의 만족도와 이용률이 증가할 것으로 예상됩니다.

성능 개선:

CloudFront와 Route 53의 도입으로 서비스의 로딩 시간이 단축되며, 이로 인해 사용자는 더욱 원활하게 서비스를 이용할 수 있게 됩니다. 이는 사용자의 만족도 향상과 더불어 서비스의 전반적인 품질을 높이게 됩니다.

비용 효율성:

AWS의 글로벌 인프라를 활용하면, 별도의 글로벌 인프라 구축 비용 없이 서비스를 글로벌로 확장할 수 있습니다. 이는 서비스의 비용 효율성을 높이며, 자원을 더 효과적으로 활용할 수 있게 해줍니다.

5 1 vote
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x