Вступний посібник з AWS Fargate

AWS Fargate — це інноваційна технологія, яка інтегрується з Amazon ECS та Amazon EKS, дозволяючи вам запускати контейнери без необхідності керувати серверами або кластерами Amazon EC2.

Fargate звільняє вас від клопоту з налаштування, масштабування та забезпечення кластерів віртуальних машин для виконання контейнерів. Більше не потрібно вибирати типи серверів, планувати масштабування кластера або оптимізувати використання ресурсів кластера.

Для виконання ваших завдань і сервісів Amazon ECS можна використовувати тип запуску Fargate або постачальника обчислювальних потужностей Fargate. Щоб скористатися Fargate, вам достатньо упакувати свою програму в контейнери, вказати необхідні ресурси (операційна система, процесор та пам’ять), налаштувати мережеві параметри та політики IAM, а потім запустити її.

Більше немає необхідності підтримувати базові обчислювальні потужності та оперативну пам’ять для розміщення контейнерів. Ви повідомляєте AWS, скільки ресурсів потрібно завданню, а решту бере на себе AWS. Кожне завдання Fargate має свій власний рівень ізоляції, тому воно не використовує спільне ядро, процесор, пам’ять або мережевий інтерфейс з іншими завданнями.

Принцип роботи Fargate

Fargate працює, дозволяючи розгортати контейнери без необхідності налаштовувати та керувати інфраструктурою, на якій вони будуть працювати. Ви просто вказуєте Fargate, які образи контейнерів ви хочете запустити та скільки ресурсів процесора та пам’яті ви хочете їм виділити. Після цього Fargate автоматично надає хост-сервери. Коли ваші контейнери працюють, ви платите лише за фактично використані ресурси.

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

Які переваги Fargate?

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

Це дозволяє вам оплачувати лише ресурси, необхідні для роботи ваших контейнерів, фактично за їх використання, уникаючи надмірного забезпечення та оплати непотрібних серверів.

Завдання Fargate (pods) виконуються у власних ізольованих ядрах, створюючи безпечне обчислювальне середовище з відокремленими робочими навантаженнями та підвищеним рівнем безпеки.

Завдяки цьому команди можуть проектувати та запускати програми з використанням ECS або EKS-контейнерів, не витрачаючи час на трудомісткі операції з управління інфраструктурою, такі як масштабування, захист серверів або оновлення операційних систем.

Завдяки вбудованим можливостям інтеграції з іншими сервісами AWS, такими як Amazon CloudWatch Container Insights, AWS Fargate забезпечує високий рівень спостережуваності. Ви також можете використовувати різноманітні сторонні технології для збору журналів та метрик.

Крім того, можна ефективно використовувати широкий спектр сервісів AWS, застосовуючи контейнери з Fargate.

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

Компоненти Fargate

Кластери

Логічна група завдань або сервісів — це кластер Amazon ECS. Кластери можна використовувати для ізоляції ваших програм. Коли ви використовуєте Fargate для виконання завдань, він бере на себе управління ресурсами кластера.

Визначення завдань

Визначення завдання — це текстовий файл, який містить опис хоча б одного з контейнерів вашої програми. Зазвичай це файл у форматі JSON. У ньому можна описати до десяти контейнерів одночасно. Визначення завдання є планом для вашої програми. Воно визначає безліч параметрів програми.

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

Завдання

Завдання — це екземпляр визначення завдання, запущений у кластері. Створивши визначення завдання для програми в Amazon ECS, ви можете обрати кількість завдань, які будуть виконуватися у вашому кластері. Завдання можна запустити як частину сервісу або як окремий процес.

Сервіси

У кластері Amazon ECS ви можете скористатися сервісом Amazon ECS для одночасного виконання та підтримки бажаної кількості завдань. Планувальник сервісу Amazon ECS запускає інший екземпляр на основі визначення вашого завдання, якщо одне із завдань перестає працювати або завершується з будь-якої причини. Він робить це для того, щоб замінити його та підтримувати потрібну кількість завдань у сервісі.

Операційна система та архітектура процесора

Fargate підтримує такі операційні системи, як Amazon Linux 2, Windows Server 2019 Full та Windows Server 2019 Core.

Для визначення завдань Amazon ECS доступні дві архітектури: ARM та X86_64. Якщо ви використовуєте контейнери Windows, вам потрібна архітектура процесора X86_64. Натомість, якщо ви використовуєте контейнери Linux, ви можете використовувати архітектуру ARM64 для ARM-програм та архітектуру процесора X86_64.

ECS з екземплярами EC2 проти ECS з AWS Fargate

У моделі з екземплярами EC2 контейнери розгортаються на віртуальних машинах EC2 (VM) кластера. ECS управляє ними разом із завданнями, що є частиною визначення завдання.

Переваги 👍

  • Ви повністю контролюєте тип екземпляра EC2, який використовується.
  • Можна використовувати спотові екземпляри, що зменшує витрати до 90%.

Недоліки 👎

  • Потрібно самостійно дбати про встановлення патчів безпеки, мережеву безпеку екземплярів, а також відповідати за їхнє масштабування в кластері.

У моделі Fargate вам більше не потрібно турбуватися про екземпляри або сервери EC2. Ви просто вибираєте потрібну конфігурацію процесора та пам’яті, а Fargate розгортає ваші контейнери.

Переваги 👍

  • Немає необхідності керувати серверами.
  • AWS несе відповідальність за доступність та масштабованість. Важливо правильно обрати обсяг пам’яті та процесор, інакше додаток може стати недоступним.
  • Використовуючи Fargate Spot, ви можете заощадити до 70% від ціни Fargate.

Недоліки 👎

  • ECS з AWS Fargate підтримує лише один мережевий режим – awsvpc. Це обмежує ваш контроль над мережевим рівнем.

EKS без Fargate проти EKS з Fargate

У моделі EKS без Fargate ви повинні заздалегідь визначити потрібний розмір кластера. Згодом можна вручну змінити розмір вузлів, але це складніше, ніж визначити ідеальний розмір із самого початку.

Переваги 👍

  • Ця модель надає більше можливостей контролю, таких як, наприклад, можливість вказати змінні конфігурації HostNetwork і HostPort.
  • Fargate підтримується не у всіх регіонах, тому використання EKS без Fargate може бути кращим варіантом, якщо потрібна доступність вашого контейнера в більшій кількості регіонів.

Недоліки 👎

  • EKS без Fargate складніше у використанні.

У моделі EKS з Fargate немає необхідності заздалегідь визначати розмір кластера.

Переваги 👍

  • EKS із Fargate є безпечнішим, оскільки працює на виділених віртуальних машинах. Відсутність підтримки привілейованого режиму є додатковою функцією безпеки.
  • У перспективі використання EKS з Fargate є економічно вигіднішим.

Недоліки 👎

  • Забезпечує менше контролю в різних аспектах.

Висновок

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