Як пройшов цей тиждень
Цей тиждень був присвячений стратегії та виконанню. Я досліджував Infrastructure as Code (IaC), проектував ефективні VPC, освоював IAM, працював з S3 та RDS, а також спрощував розгортання за допомогою CloudFormation. Моя навчальна подорож включала практичний досвід роботи з AWS Console та переклад цих налаштувань в автоматизацію. Ось детальніше про те, що я вивчав:
Що таке Infrastructure as Code (IaC)?
Infrastructure as Code (IaC) — це сучасний підхід до управління хмарною інфраструктурою через визначення її в коді, замість ручної конфігурації. Такий підхід не лише економить час, але й забезпечує узгодженість середовище.
Основні переваги:
- Узгодженість: Усі середовища — розробка, тестування та продукція — однакові, що мінімізує помилки.
- Автоматизація: Розгортання цілих налаштувань займає хвилини, а не години чи дні.
- Відтворюваність: Легко відтворювати середовища в різних регіонах чи облікових записах.
- Контроль версій: Відслідковуйте зміни в інфраструктурі разом із кодом додатків.
Чому це важливо для DevOps: IaC з’єднує розробку та операції, дозволяючи зміни в інфраструктурі бути частиною CI/CD конвеєра. Коли оновлення додатку розгортаються, IaC гарантує, що інфраструктура адаптується безперешкодно, масштабуючи ресурси або оновлюючи конфігурації за потребою.
Глобальна інфраструктура AWS
Інфраструктура AWS охоплює весь світ, тому важливо розуміти, як регіони, зони доступності та крайові локації впливають на проектування систем.
Основні вивчення:
- Регіони: Незалежні географічні зони, що забезпечують ізоляцію помилок.
- Зони доступності (AZ): Центри обробки даних в межах регіону для високої доступності.
- Крайові локації: Покращують латентність, кешуючи контент ближче до користувачів.
Практичний досвід:
- Досліджував, як регіони та AZ покращують стійкість до помилок.
- Тестував різниці в латентності за допомогою крайових локацій.
Рефлексивні питання:
- Яка різниця між AZ і крайовою локацією?
- Як вибір конкретного регіону впливає на продуктивність додатку?
- Чому важлива наявність надлишковості в межах AZ?
Публічні vs Приватні підмережі
Підмережі є основою для побудови Virtual Private Cloud (VPC). Вони дозволяють сегментувати ресурси залежно від вимог доступності.
Основні висновки:
- Публічні підмережі мають прямий доступ до інтернету.
- Приватні підмережі використовують NAT Gateways для вихідного доступу, залишаючись при цьому безпечними.
Огляд консолі: Налаштував підмережі вручну в AWS Console, визначивши CIDR блоки, асоціюючи таблиці маршрутизації та активуючи публічні IP для публічних підмереж.
Рефлексивні питання:
- Як NAT Gateway забезпечує безпеку вихідного інтернет-трафіку?
- В яких сценаріях потрібні ресурси в приватних підмережах?
- Як підмережі оптимізують безпеку та масштабованість додатків?
Amazon VPC
Центр мережевих рішень AWS, VPC дозволяє створювати ізольовані середовища для ваших додатків.
Кроки в консолі:
- Створив VPC з налаштованими CIDR блоками.
- Додав публічні та приватні підмережі.
- Налаштував таблиці маршрутизації для керування трафіком.
Автоматизація: Переклав це налаштування у файл CloudFormation YAML для автоматизації розгортань.
Рефлексивні питання:
- Як таблиці маршрутизації покращують керування трафіком?
- Чому Internet Gateway важливий для публічних підмереж?
- Які переваги визначення власного CIDR блоку?
IAM (Управління ідентифікацією та доступом)
IAM керує безпечним доступом до ресурсів AWS за допомогою користувачів (users), груп (groups), ролей (roles) та політик (policies).
Ось простий посібник, щоб зрозуміти, коли використовувати що.
Користувачі
- Що: Індивідуальні акаунти з обліковими даними для входу.
- Коли використовувати: Для реальних людей, яким необхідний прямий доступ до AWS.
- Приклад: Розробник, який входить в AWS Console, щоб керувати екземплярами EC2.
Групи
- Що: Спосіб організації кількох користувачів.
- Коли використовувати: Щоб надати однакові дозволи команді або відділу.
- Приклад: Група "Розробники" з доступом до EC2 та S3.
Ролі
- Що: Тимчасові дозволи для AWS сервісів або зовнішніх користувачів.
- Коли використовувати: Коли ресурси AWS, такі як EC2 або Lambda, потребують доступу до інших ресурсів, як-от S3.
- Приклад: Роль для екземпляра EC2, щоб безпечно отримати доступ до S3 бакету.
Політики
- Що: Правила, що визначають дозволи (наприклад, хто може доступатися до чого).
- Коли використовувати: Щоб дозволити або заборонити конкретні дії для користувачів, груп або ролей.
- Приклад: Політика, що дозволяє доступ лише для читання до S3 бакету.
Приклади
- Доступ команди:
Створіть групу "Розробники", надайте їй дозволи для EC2 та S3, а потім додайте всіх розробників до цієї групи.
Чому? Це зручніше, ніж управляти дозволами для кожної людини окремо. - Доступ до ресурсів:
Створіть роль для екземпляра EC2, щоб читати/записувати в S3 бакет.
Чому? Ролі безпечніші, тому що на екземплярі не зберігаються облікові дані. - Користувацький доступ:
Напишіть політику, щоб обмежити користувача тільки завантаженням файлів у конкретний S3 бакет.
Прикріпіть політику безпосередньо до користувача.
Чому? Користувацькі політики дають детальний контроль над доступом.
Проект: Створення безпечного VPC з Bastion Host
Цей проект передбачав створення безпечного Virtual Private Cloud (VPC) з публічними та приватними підмережами. У публічній підмережі було налаштовано bastion host для забезпечення безпечного SSH доступу до екземплярів EC2 в приватних підмережах. Ця настройка підкреслює важливість безпеки та масштабованості.
Основні характеристики:
- Bastion Host: Служить безпечним шлюзом для доступу до приватних ресурсів.
- EC2 екземпляри в приватних підмережах: Захищені від прямого доступу з інтернету.
- Security Groups: Контролюють трафік між bastion host та приватними екземплярами.
- Маршрутизація: Налаштовані маршрути для контрольованої комунікації між публічними та приватними підмережами.
Тестування налаштування:
- SSH доступ до Bastion Host: Доступ до bastion host через його публічну IP-адресу за допомогою безпечної пари ключів.
- Доступ до приватних екземплярів: Переніс приватний ключ до bastion host і використовував його для доступу до приватних EC2 екземплярів через SSH.
- Ping-тест: Перевірив з'єднання між приватними екземплярами, дозволивши ICMP трафік.
Рефлексивні питання:
- Чому bastion host є критично важливою частиною безпечної архітектури?
- Які заходи безпеки повинні бути вжиті для управління парами ключів?
- Як маршрутизація та Security Groups працюють разом, щоб захистити приватні ресурси?
Основи CloudFormation
AWS CloudFormation дозволяє визначати та управляти інфраструктурою як кодом, забезпечуючи однакове розгортання у різних середовищах.
Основні концепції:
- Шаблони: Написані на YAML або JSON, шаблони описують ресурси, які ви хочете розгорнути.
- Стек (Stack): Колекція ресурсів, створених із шаблону.
- Change Sets: Дозволяють переглядати зміни в інфраструктурі перед застосуванням оновлень.
CLI команди, які я практикував:
aws cloudformation validate-template
: Перевірка синтаксису шаблону.aws cloudformation create-stack
: Розгортання стека з використанням вказаного шаблону.aws cloudformation update-stack
: Оновлення існуючого стека з новими конфігураціями.
4.
aws cloudformation describe-stacks`: Надає інформацію про поточний стан стека.
Практика:
- Створив шаблон CloudFormation для налаштування VPC, підмереж і екземплярів EC2.
- Перевірив шаблони, щоб забезпечити безпомилкове розгортання.
Рефлексивні питання:
- Як використання Change Sets покращує безпеку розгортання?
- Які переваги перевірки шаблонів перед створенням стека?
- Як CloudFormation може спростити управління інфраструктурою в великих проектах?
Amazon EC2
Amazon Elastic Compute Cloud (EC2) надає масштабовані обчислювальні потужності в хмарі AWS, що дозволяє користувачам розгортати віртуальні сервери за потребою.
Основні характеристики:
- Типи екземплярів: Широкий вибір типів екземплярів, оптимізованих для обчислень, пам'яті або зберігання.
- Загальне призначення (наприклад, t3, m5): Баланс між обчисленням, пам'яттю та мережею.
- Оптимізовані для обчислень (наприклад, c5): Ідеальні для завдань з високими вимогами до ЦП.
- Оптимізовані для пам'яті (наприклад, r5): Розроблені для додатків, що вимагають великої кількості пам'яті.
- Оптимізовані для зберігання (наприклад, i3): Найкраще підходять для високої продуктивності введення/виведення.
- Прискорене обчислення (наприклад, p3, g4): Використовують GPU для машинного навчання та графіки.
- Еластичність: Можна масштабувати вгору або вниз залежно від навантаження.
- Безпека: Інтегровано з ролями IAM та Security Groups для контрольованого доступу.
- Скрипти користувацьких даних: Автоматизують налаштування екземплярів під час їх запуску.
Практика:
- Розгорнув екземпляри EC2 в публічних та приватних підмережах.
- Налаштував екземпляри для використання Security Groups, які дозволяють доступ по SSH тільки з bastion host.
- Використав скрипти користувацьких даних для встановлення програмного забезпечення під час запуску.
Рефлексивні питання:
- Як типи екземплярів впливають на продуктивність додатків та вартість?
- Яку роль відіграють скрипти користувацьких даних в автоматизації налаштувань EC2?
- Як EC2 інтегрується з іншими сервісами AWS, такими як S3 та RDS?
Автоматичне масштабування та Elastic Load Balancing
Автоматичне масштабування та Elastic Load Balancing (ELB) забезпечують доступність і відповідь додатків, незалежно від коливань трафіку.
Автоматичне масштабування:
- Автоматично регулює кількість екземплярів EC2 відповідно до попиту.
- Підтримує динамічне масштабування (на основі реальних показників) та прогностичне масштабування (на основі історичних даних).
- Тести на стан здоров'я забезпечують автоматичну заміну нездорових екземплярів.
Elastic Load Balancing:
- Розподіляє вхідний трафік між кількома екземплярами EC2.
- Типи балансувальників навантаження:
Application Load Balancer (ALB): Працює на рівні 7 для HTTP/HTTPS трафіку.
Network Load Balancer (NLB): Працює на рівні 4 для надзвичайно низької затримки.
Classic Load Balancer (CLB): Підтримує як рівень 4, так і рівень 7 для застарілих додатків.
Практика:
- Налаштував Auto Scaling Group для динамічного коригування екземплярів EC2 на основі використання ЦП.
- Налаштував Application Load Balancer для розподілу трафіку між екземплярами.
- Тестував сценарії відмов, щоб переконатися, що трафік автоматично перенаправляється на здорові екземпляри.
Рефлексивні питання:
- Як Auto Scaling зменшує витрати, зберігаючи продуктивність?
- В яких сценаріях необхідно використовувати NLB замість ALB?
- Як тести на стан здоров'я покращують надійність додатків?
Amazon S3
S3 — це об'єктне сховище AWS, ідеальне для зберігання статичних файлів, резервних копій та навіть хостингу статичних вебсайтів.
Основні характеристики:
- Бакети (Buckets): Контейнери для зберігання об'єктів.
Кожен бакет має унікальну назву та знаходиться в певному регіоні. - Об'єкти (Objects): Дані, збережені в бакетах, кожен з яких має унікальний ключ.
- Класи зберігання (Storage Classes): Оптимізують витрати в залежності від частоти доступу, такі як Standard, Infrequent Access (IA) та Glacier.
- Політики бакетів (Bucket Policies): Визначають дозволи для того, хто може отримувати доступ до даних та які дії вони можуть виконувати.
Практика:
- Створив бакет через AWS Console.
- Завантажив HTML файл та налаштував його для хостингу статичного вебсайту.
- Застосував політики бакетів для дозволу публічного доступу до сайту.
Рефлексивні питання:
- Як класи зберігання S3 зменшують витрати на рідко доступні дані?
- В чому різниця між політиками бакетів та списками контролю доступу (ACL)?
- Як S3 може інтегруватися з CloudFront для доставки контенту?
Amazon RDS
Amazon Relational Database Service (RDS) спрощує управління базами даних, автоматизуючи рутинні завдання, такі як резервне копіювання, масштабування та оновлення. Підтримує кілька баз даних, включаючи MySQL, PostgreSQL, MariaDB, Oracle та SQL Server.
Основні характеристики:
- Multi-AZ Розгортання: Забезпечує високу доступність та відновлення після катастрофи шляхом реплікації даних між Availability Zones.
- Читання реплік (Read Replicas): Покращує продуктивність, розподіляючи навантаження на читання між реплікаційними екземплярами.
- Автоматичне резервне копіювання (Automated Backups): Підтримує відновлення до конкретного часу, дозволяючи відновити базу даних до певного моменту.
- Шифрування (Encryption): Захищає дані під час зберігання та передачі, використовуючи ключі, керовані AWS Key Management Service (KMS).
Практика:
- Розгорнув базу даних MySQL за допомогою AWS Management Console.
- Налаштував базу даних для підтримки Multi-AZ для підвищення надійності.
- Підключив екземпляр EC2 до бази даних, використовуючи безпечну конфігурацію Security Group.
- Тестував автоматичне резервне копіювання та відновив базу даних до попереднього стану.
Рефлексивні питання:
- Чому розгортання Multi-AZ критично важливе для баз даних у виробництві?
- Як читання реплік покращує продуктивність додатків?
- Які переваги надає автоматичне резервне копіювання в RDS?
Дякую, що приєдналися до цього навчального подорожі! Цього тижня ми глибоко занурилися в основи AWS, починаючи від проектування безпечних VPC до автоматизації розгортання з CloudFormation. Незалежно від того, чи ви тільки починаєте, чи хочете поглибити свої знання, сподіваюся, що ці ідеї та рефлексивні питання надихнуть вас експериментувати з сервісами AWS.
Щасливого використання хмари і побачимося в наступному блозі! 🚀
Перекладено з: From Ground to Cloud: AWS Fundamentals