EngX Code Review: почни писати код іще краще й побудуй ефективний процес код-рев’ю.

час читання: 4 хв

Як використовувати Amazon CloudFront на проєктах

Якщо ви хочете ефективно й швидко доставляти контент кінцевим користувачам, зверніть увагу на Amazon CloudFront. У статті розглянуті переваги послуг AWS, розяснено, що таке CDN, і наведений практичний приклад налаштування та використання Amazon CloudFront.

Автор статті — senior systems engineer EPAM Девід Хурадо.

Дедалі частіше можна почути про сервіси Amazon Web Services (AWS) та їхні хмарні рішення, які дають клієнтам низку переваг. Але якщо подивитися на те, як ці сервіси інтегруються в складні технологічні архітектури, можна побоятися застосовувати AWS у своїх проєктах, оскільки налаштування здається непростим. У цій статті ми спробуємо розібратися, як використовувати один із найвідоміших сервісів AWS — Amazon CloudFront, щоб скоротити затримку доставки статичного контенту.

Впровадження хмарних технологій із точки зору управління проєктами

Що таке мережа доставки контенту та як вона працює

Мережа доставки контенту (англ. Content Delivery Network, CDN) — це мережа взаємопов’язаних серверів у різних географічних зонах. Її мета — збільшення швидкості доставки контенту, наприклад, вихідних файлів сайту або мультимедійного контенту. Ця територіально-розподілена мережа працює здебільшого на принципі кешування, що значно покращує завантаження контенту.

Кешування в цій мережі працює таким чином:

  • CDN встановлює вихідний сервер, з якого буде витягнуто оригінальний контент.
  • Користувач робить перший запит контенту до CDN із будь-якого місця розташування.
  • CDN витягує запитаний контент із вихідного сервера для відповіді користувачеві, водночас надсилаючи копію контенту на сервер CDN, який розташований географічно ближче до користувача.
  • Сервер CDN, вказаний як найближчий, зберігає копію у вигляді кешованого файлу.
  • Надалі, якщо той самий або навіть новий користувач робить запит із цієї географічної області, сервер, який раніше зберігав копію у своєму кеші, відповідатиме на запит замість вихідного сервера.

На зображенні наочно показано процес, описаний вище:

Кешування в мережі CDN
Джерело зображення: cloudflare.com

Як можна помітити, для наступних запитів контенту не потрібно долати великі відстані, що істотно знижує затримку його доставки.

Глобальна інфраструктура AWS

Регіони та зони доступності AWS

Глобальна інфраструктура AWS відноситься до доступних по всьому світу центрів опрацювання даних, через які AWS забезпечує можливість використання своїх сервісів. Їхня інфраструктура складається з регіонів (англ. Regions), які, зі свого боку, складаються з зон доступності (англ. Availability Zones). На зображенні показано поточний глобальний розподіл інфраструктури AWS:

Глобальний розподіл інфраструктури AWS
Джерело зображення: aws.amazon.com

Регіони та зони доступності, мабуть, є найбільш згадуваними елементами інфраструктури AWS. Однак існує ще одна важлива складова — AWS Edge Locations.

Граничні локації AWS

Граничні локації AWS (англ. Edge Locations) — ще одна частина глобальної інфраструктури AWS, що складається зі спеціально розроблених центрів опрацювання даних, які призначені для максимально швидкої доставки послуг. Amazon має велику кількість таких дата-центрів, розподілених по всьому світу, що знаходяться до користувачів ближче, ніж регіони або зони доступності. Граничні локації доступні в географічних областях навіть поза регіонами AWS. Важливо уточнити, що Edge Locations використовують тільки деякі специфічні сервіси, зокрема CloudFront.

На зображенні ви можете побачити розташування граничних локацій Amazon CloudFront:

Розташування граничних локацій Amazon CloudFront
Джерело зображення: aws.amazon.com

Amazon CloudFront

Беручи до уваги всі попередні поняття, ми переходимо до Amazon CloudFront. Це сервіс CDN від AWS, який надає нам швидкий і простий доступ до всіх переваг CDN і навіть більше. CloudFront використовує граничні локації AWS як свою мережу серверів для глобальної доставки контенту.

Як використовувати сервіс

Давайте розглянемо невеликий практичний приклад того, як ми можемо використовувати сервіс і його переваги. В якості вихідного сервера я буду використовувати сховище Amazon S3, в яке вже завантажена фонова картинка (wallpaper). Сховище S3 розташоване в східній частині США (Північна Вірджинія).

Amazon S3 bucket

Коли я відкриваю цю картинку у своєму браузері за допомогою вбудованих інструментів розробника, я бачу, скільки часу потрібно для отримання контенту з мого місця розташування (Колумбія):

Скільки часу потрібно для отримання контенту

У середньому після кількох тестів загальний час варіюється від 250 до 350 мс. Тепер налаштуємо дистрибуцію CloudFront для сховища S3 і подивимося, які її переваги.

Налаштування дистрибуції CloudFront

Створити дистрибуцію CloudFront досить просто: вкажіть джерело контенту й введіть його назву:

Створення дистрибуції CloudFront

AWS дає мені змогу створити власну мережу CDN, просто вказавши домен джерела (моє сховище S3) і назву дистрибуції CloudFront (tech-talk-cloudfront-distribution):

Створення власної мережі CDN

Після створення дистрибуції ви отримаєте URL, який можна використовувати для запиту контенту замість вихідного URL, наданого вихідним сервером. Тепер, запитуючи контент через CDN замість прямого запиту до вихідного сервера, ми отримаємо такі результати:

У нашому першому запиті контенту через CDN ми отримаємо схожий — якщо порівнювати з безпосереднім запитом до вихідного сервера — час відповіді (400 мс). Це пов’язано з тим, що ми робимо перший запит із місця мого географічного розташування. Але тепер ми бачимо новий заголовок у списку з назвою X-Cache і значенням "Miss from cloudfront":

Miss from cloudfront

Це означає, що CloudFront не знайшов копію контенту в кеші, який ви запитуєте, і контент довелося запросити безпосередньо у вихідного сервера. Це нормально, враховуючи описаний раніше процес, але це також означає, що CloudFront сам відправив копію контенту в найближчу локацію, звідки була відповідь. Надалі всі запити, які здійснюються з тієї ж географічної області для цього контенту, будуть оброблятися цією граничною локацією. Ми можемо побачити новий статус X-Cache "Hit from cloudfront", а також значне поліпшення часу, який після кількох тестів варіювався від 60 до 100 мс:

Hit from cloudfront

Таким чином Amazon CloudFront допомагає скоротити затримку доставки контенту.

Висновки

Amazon CloudFront — це сервіс CDN від Amazon Web Services, який використовує глобальну інфраструктуру AWS для швидкої доставки контенту. Він має низку плюсів, зокрема поліпшену безпеку та менші витрати на пропускну здатність. Особисто я рекомендую сервіс через його переваги та простоту використання: він чудово підходить для проєктів, як-от сайти, застосунки для стримінгу контенту (наприклад, відео або музики), поширення оновлень програмного забезпечення тощо.

Тепер я пропоную вам самостійно ознайомитися з цим сервісом і його численними перевагами. Ви можете почати з тестування концепції, оскільки сервіс входить у безкоштовну версію AWS.