BLOG

AWS Amplify Console이 모든 코드 커밋에서 즉각적인 캐시 무효화 및 델타 배포를 지원합니다.
작성일: 2019-04-02

*AWS Amplify Console 팀의 Nikhil Swaminathan과 Dan Green이 쓴 글을 전합니다.

 

Amplify Console은 CDN(content delivery network, 콘텐츠 전송망(콘텐츠를 여러 서버에 저장해 두고 사용자의 요청이 있을 때 가장 빠른 경로를 찾아 전송하는 시스템)) 캐싱(caching) 성능 향상을 포기하지 않고도 단일 페이지 또는 동적(static) 앱에 업데이트를 즉시 배포할 수 있는 즉각적인 캐시 무효화를 지원합니다. TTL(Time-to-Live) 값을 설정하거나 변경 내용을 적용하기 위해 캐시 무효화 요청을 기다리는 것을 걱정할 필요가 없어졌습니다. 사용자는 코드를 ‘git push’ 할 수 있고 빌드(build)가 성공하면 사용자는 무엇이 변했는지 바로 확인할 수 있습니다. 델타를 배포하면 수정된 파일만 다시 배포돼 대규모 웹 사이트를 구축하는 시간이 단축됩니다.

 

AWS Amplify Console은 re:Invent 론칭을 놓친 사용자들에게 완벽한 워크플로우를 제공합니다. 이 워크플로우는 서버리스 백엔드가 있는 단일 페이지 웹 앱 또는 동적(static) 사이트를 개발하고, 배포하고, 호스팅하기 위한 것입니다. 시작하려면 리포(repo)를 AWS Amplify Console에 연결하세요.

 

CDN에 호스팅

Amplify Console은 CloudFront CDN을 통해 최신 웹 앱(단일 페이지 앱 또는 동적(static) 사이트 생성기)을 위한 호스팅을 제공합니다. CDN은 전 세계 모든 엣지(edge)에서 파일을 캐시하는 분산 서버 네트워크입니다. CDN은 고정 자산(HTML, CSS, JavaScript, 이미지)을 모든 엣지에서 캐싱해 고성능 웹 호스팅을 가능하게 합니다. 그러면 일본에서 방문하는 사용자는 도쿄에서 콘텐츠를 받고, 브라질에서 방문하는 사용자는 상파울루에서 동일한 콘텐츠를 받을 수 있습니다. CDN은 TTL이라는 구성을 이용해 엣지에서 콘텐츠를 캐시하는 데 걸리는 시간을 결정합니다. 콘텐츠를 CDN에 업데이트하려면 개발자가 캐시를 무효화(또는 중단)해야 합니다.

 

CDN에서의 캐시 무효화 문제

컨텐츠를 업데이트하려면 CDN 캐시를 무효화해야 합니다. 캐시를 무효화하면 엣지가 오리진(원본)에서 새 콘텐츠를 가져오게 됩니다. 이것이 콘텐츠를 업데이트 하는 과정이라 할 수 있습니다. 자주 업데이트하기를 원한다면 다음과 같은 옵션들을 참고하세요.

 

  • 캐시에 대해 TTL(0–5초)을 느리게 설정 – 즉시 업데이트를 할 수 있게 해주지만 CDN 캐시가 오리진(원본)에서 새 콘텐츠를 가져오기 위해 5초마다 버스트(bust)되기 때문에 성능에 안 좋은 영향이 있을 수 있습니다. TTL이 길면 웹 성능이 향상되지만 업데이트를 배포하는 데에는 문제가 생깁니다.
  • 모든 업데이트에 대해 캐시를 수동으로 무효화 – 일 년에 한두 번 업데이트되는 웹 앱에 해당합니다. 하지만 지금은 프로토타이핑(prototyping)이 빨라지고 최소 실행 가능 제품들(minimum viable product, 완전한 제품 출시 전에 최소 실행 가능한 형태로 출시해 고객들의 반응을 살펴봄)이 나오는 시대입니다. 개발자들은 콘텐츠가 전파될 때까지 15~20분을 기다리지 않고 여러 번 업데이트하고 싶어 합니다.
  • 빌드 시 해시 파일명 – 파일을 업데이트하는 솔루션이 제공되지만 개발자가 이 솔루션을 빌드 단계에 추가하기 위해서는 수동으로 구현해야 합니다.

 

Amplify Console로 캐시를 즉시 무효화

 

캐시를 즉각 무효화하면 Amplify Console 사용자는 배포를 더 빨리 할지, 성능을 더 빠르게 할지를 놓고 고민하지 않아도 됩니다. Amplify Console은 다음과 같은 방법으로 캐시를 즉시 무효화합니다:

 

  • 모든 빌드 아티팩트(예: HTML, JavaScript 및 미디어 파일)에 대한 고유 참조(unique references) 생성하기
  • 요청이 있을 때마다 브라우저가 CDN에서 업데이트를 확인하도록 하기

 

사이트를 처음 배포할 때 Amplify Console은 모든 자산을 버전별로 생성해 각 파일에 대한 고유 참조를 생성합니다. 이 참조들은 오리진(원본)에 배포되며 TTL이 매우 높은 CDN 캐시에 제공됩니다. 모든 고정 자산 메타데이터에 캐시 제어 헤더를 설정해 요청이 있을 때마다 브라우저가 자산 업데이트를 확인하도록 합니다.

 

파일이 CDN에 있는 것과 일치하면 브라우저는 캐시에서 자산을 제공합니다. 만약 파일이 CDN에 있는 것과 일치하지 않으면 오리진(원본)에서 새 콘텐츠를 가져오게 됩니다. 업데이트를 배포하면 변경된 파일이 고유하게 식별되고 오리진(원본)으로 푸시됩니다. 그러면 비로소 다음 요청이 있을 시 파일이 넘어갈 준비가 된 것입니다.

 

Amplify Console에서 호스팅되는 웹 앱은 Amazon S3를 사용해 Amazon CloudFront에서 호스팅되는 것과 비슷한 수준으로 실행됩니다. Amplify를 이용하면 캐시를 즉각 무효화하고, 기능을 branch에 배포하고, 리다이렉션(redirection)을 하고, 암호를 보호하는 등 격이 다른 이점들을 얻을 수 있습니다.

 

 

 

델타 배포

 

Amplify Console은 델타가 배포되는 것을 지원합니다. 델타를 배포하는 기능을 쓰면 사용자가 매우 큰 사이트를 구축하는 데 걸리는 시간을 단축할 수 있습니다. 각 빌드 동안에 변경된 자산만 배포됩니다. 다음 사진은 빌드를 하는 중에 배포를 건너뛰는 파일들입니다.

 

 

시작

 

Amplify Console을 이미 사용하고 있다면 사이트를 다시 한 번 배포해 캐시를 즉시 무효화하는 기능을 활성화해보세요. Amplify Console을 처음 사용한다면 리포(repo)를 AWS Amplify Console에 연결해보세요.

 

원문 URL : https://aws.amazon.com/ko/blogs/mobile/aws-amplify-console-supports-instant-cache-invalidation-and-delta-deployments/

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.