AWS

Вступ до хмарних обчислень та AWS

Що таке хмарні обчислення, чим відрізняються IaaS, PaaS, SaaS та FaaS, як влаштована глобальна інфраструктура AWS і чому саме Amazon є лідером хмарного ринку.

Вступ до хмарних обчислень та AWS

Де живе ваш застосунок?

Уявіть, що ви написали свій перший веб-застосунок. Він працює у вас на ноутбуці: відкрили термінал, запустили dotnet run — і сервер підняв API на localhost:5000. Ви відкриваєте браузер, вводите адресу, і все працює. Відчуття чудове.

Але тепер постає питання: як зробити так, щоб ваш застосунок побачив хтось інший? Ваш друг в іншому місті, клієнт в іншій країні, тисячі користувачів одночасно?

Найочевидніша відповідь, яка спадає на думку: «Залишу ноутбук увімкненим». Але ноутбук не розрахований на безперервну роботу 24/7, у нього обмежена пам'ять і процесор, він може перегрітись або вийти з ладу, а коли ви закриєте кришку — сервер зупиниться. Можна купити сервер — потужний комп'ютер без дисплея, розрахований на безперервну роботу. Але де його розмістити? Потрібне приміщення з кондиціонуванням, безперебійне живлення, надійний інтернет-канал, команда, яка стежитиме за обладнанням у разі поломки...

Ось тут і з'являється поняття хмарних обчислень (cloud computing) — концепції, яка вирішила цю проблему раз і назавжди.

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

Що таке хмарні обчислення

Хмарні обчислення (cloud computing) — це модель надання обчислювальних ресурсів (серверів, сховищ даних, мереж, програмного забезпечення) через інтернет на вимогу (on-demand), з оплатою лише за фактичне використання.

Щоб зрозуміти цю концепцію, скористаймось аналогією з електроенергією.

Аналогія: електростанція проти розетки

Уявіть, що вам потрібна електроенергія для вашого будинку. Є два підходи:

Підхід 1 (традиційний — on-premises): Ви купуєте власний генератор, встановлюєте його, запускаєте, обслуговуєте, заправляєте паливом, ремонтуєте, коли ламається. Ви маєте повний контроль, але несете всю відповідальність і всі витрати — незалежно від того, скільки електроенергії реально споживаєте.

Підхід 2 (хмарний — cloud): Ви просто вставляєте вилку в розетку. Електроенергія приходить від електростанції десь далеко — вам байдуже, де вона знаходиться і як саме виробляється. Ви платите лише за те, що спожили (кіловат-годин), і не думаєте про обслуговування генераторів.

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

Loading diagram...
@startuml
skinparam style plain
skinparam backgroundColor #ffffff

package "Традиційний підхід (On-Premises)" #fff3cd {
    node "Власний сервер" as OwnServer {
        [CPU / RAM / Storage]
        [ОС та ПЗ]
        [Мережеве обладнання]
    }
    note bottom of OwnServer
        Ви відповідаєте за все:
        купівлю, налаштування,
        обслуговування, оновлення
    end note
}

package "Хмарний підхід (Cloud)" #d1fae5 {
    cloud "AWS Cloud" as Cloud {
        [Тисячі серверів]
        [Резервування]
        [Глобальна мережа]
    }
    note bottom of Cloud
        Ви платите лише
        за те, що використовуєте.
        Інфраструктурою керує AWS.
    end note
}

actor "Ви (розробник)" as Dev
Dev -right-> Cloud : Інтернет-запит
@enduml

::

Ключові характеристики хмарних обчислень

Національний інститут стандартів і технологій США (NIST) визначає п'ять обов'язкових характеристик хмарних обчислень. Розглянемо кожну на конкретних прикладах.

On-demand self-service

Самообслуговування на вимогу. Ви можете самостійно замовити новий сервер або збільшити обсяг пам'яті прямо через веб-інтерфейс або API — без дзвінків в службу підтримки і без очікування. Порівняйте: раніше замовлення сервера в корпоративному IT-відділі могло займати тижні.

Broad network access

Широкий мережевий доступ. Ресурси доступні через стандартні мережеві протоколи з будь-якого пристрою: ноутбука, телефону, планшета — з будь-якої точки світу.

Resource pooling

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

Rapid elasticity

Швидка еластичність. Ресурси можна збільшити або зменшити за лічені хвилини. Якщо ваш сайт потрапив на першу сторінку Reddit і до вас прийшло в 100 разів більше відвідувачів — хмара може масштабуватись автоматично.

Measured service

Вимірювана послуга. Ви платите лише за те, що реально використовуєте. Запустили сервер на 2 години — оплатили 2 години. Зупинили — оплата зупиняється.

Моделі хмарних послуг: IaaS, PaaS, SaaS та FaaS

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

Уявіть аналогію з транспортом: ви можете купити власний автомобіль (on-premises), орендувати машину (IaaS), взяти таксі (PaaS), або просто сісти в автобус (SaaS). Рівень контролю та відповідальності різний у кожному випадку.

Модель відповідальності

Loading diagram...
@startuml
skinparam style plain
skinparam backgroundColor #ffffff

skinparam rectangle {
    BackgroundColor #f8f9fa
    BorderColor #dee2e6
}

rectangle "On-Premises\n(власний сервер)" as OP #fef3c7
rectangle "IaaS\n(оренда заліза)" as IAAS #dbeafe
rectangle "PaaS\n(платформа)" as PAAS #d1fae5
rectangle "SaaS\n(готовий продукт)" as SAAS #ede9fe
rectangle "FaaS\n(функції)" as FAAS #fce7f3

note bottom of OP : Ви керуєте ВСІМ
note bottom of IAAS : AWS керує залізом
note bottom of PAAS : AWS керує залізом\n+ середовищем виконання
note bottom of SAAS : AWS керує всім,\nви лише використовуєте
note bottom of FAAS : Ви пишете лише функцію,\nAWS керує всім іншим
@enduml

IaaS — Infrastructure as a Service (Інфраструктура як послуга)

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

Це схоже на оренду порожньої квартири: стіни, підлога і стеля є — але меблі, ремонт і побут — ваша відповідальність.

Що ви отримуєте: Віртуальний сервер (VM) з певною кількістю CPU, RAM, диску. До нього можна підключитись через SSH або RDP, як до звичайного комп'ютера.

Ваша відповідальність: Встановити ОС, .NET Runtime, Nginx/IIS, ваш застосунок. Слідкувати за оновленнями безпеки. Налаштовувати резервне копіювання.

Приклади AWS: Amazon EC2 (Elastic Compute Cloud) — саме тут запускаються ваші віртуальні сервери. Amazon EBS (Elastic Block Store) — диски для цих серверів.

Коли використовувати: Коли потрібен повний контроль над середовищем, специфічні налаштування ОС, або коли ви переносите legacy-застосунок, який не може працювати в іншому середовищі.


PaaS — Platform as a Service (Платформа як послуга)

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

Аналогія: орендований автомобіль. Двигун, коробка передач, колеса — все є і обслуговується. Вам залишається лише сісти і їхати куди потрібно.

Приклади AWS: AWS Elastic Beanstalk — завантажуєте .zip з вашим .NET або Node.js застосунком, і Beanstalk сам запускає EC2, налаштовує Load Balancer та Auto Scaling. Amazon RDS — керована база даних: AWS встановлює PostgreSQL, керує бекапами, оновленнями, реплікацією.

Коли використовувати: Коли ви хочете зосередитись на розробці коду, а не на DevOps. Для більшості стандартних веб-застосунків PaaS є оптимальним вибором.


SaaS — Software as a Service (Програмне забезпечення як послуга)

SaaS — найвищий рівень абстракції. Ви отримуєте готовий продукт, доступний через браузер або API. Провайдер керує абсолютно всім: від серверів до бізнес-логіки застосунку. Аналогія: автобус — ви просто їдете.

Приклади AWS: Amazon WorkMail (корпоративна пошта), Amazon Chime (відеоконференції). За межами AWS — Google Workspace, Salesforce, Slack — це все SaaS.


FaaS — Function as a Service (Функція як послуга)

FaaS — модель serverless (безсерверних) обчислень. Ключова ідея: ви пишете окремі функції (невеликі шматки коду), а хмара запускає їх лише тоді, коли вони потрібні — у відповідь на певну подію. Ви платите лише за мілісекунди виконання.

Приклад AWS: AWS Lambda — ви пишете C#-функцію, яка обробляє нові файли у S3. Коли файл з'являється — Lambda запускається, обробляє і зупиняється.

Serverless ≠ без серверів. Сервери є — але ви про них не думаєте. AWS сам вирішує, де запустити вашу функцію, масштабує до тисяч паралельних виконань і зупиняється, коли нічого немає.

Порівняльна таблиця моделей

ХарактеристикаOn-PremisesIaaSPaaSSaaSFaaS
Фізичне залізоВиAWSAWSAWSAWS
Операційна системаВиВиAWSAWSAWS
Середовище виконанняВиВиAWSAWSAWS
ЗастосунокВиВиВиAWSВи (функція)
МасштабуванняРучнеРучне/AutoАвтоматичнеАвтоматичнеАвтоматичне
ОплатаКапітальні витратиГод/місГод/місПідпискаPer-запит
Приклад AWSEC2Elastic Beanstalk, RDSWorkMailLambda

AWS, Azure та Google Cloud: три лідери хмарного ринку

Сьогодні ринок хмарних послуг очолюють три компанії: Amazon Web Services (AWS), Microsoft Azure та Google Cloud Platform (GCP). Усі три є повноцінними платформами, здатними задовольнити потреби від невеликого стартапу до транснаціональної корпорації.

Amazon Web Services (AWS) — найстарший і найбільший хмарний провайдер. AWS запустився у 2006 році, коли Amazon вирішила продати зовнішнім клієнтам обчислювальні потужності, які сама розробила для власної інфраструктури інтернет-магазину. Сьогодні AWS займає близько 32% ринку хмарних послуг, має найширший каталог сервісів (понад 200) і найбільшу глобальну мережу дата-центрів.

Microsoft Azure (~23% ринку) має очевидну перевагу: глибока інтеграція з екосистемою Microsoft. Якщо ваша компанія використовує Windows Server, Active Directory, SQL Server або Office 365 — Azure буде природним вибором. Особливо актуально для корпоративного сектору та команд на .NET Framework.

Google Cloud Platform (~12% ринку) привніс колосальний досвід Google у розподілених обчисленнях. GCP вважається найсильнішим у сфері машинного навчання (BigQuery, Vertex AI) та аналітики великих даних. Kubernetes — також розробка Google, і GKE (Google Kubernetes Engine) є еталонною реалізацією.

AWS — чому ми вивчаємо його

  • Найбільша кількість вакансій на ринку праці
  • Найширша документація та спільнота — відповідь на будь-яке питання легко знайти
  • Концепції переносяться: IAM, VPC, S3, Lambda — прямі аналоги є у Azure та GCP
  • Першокласна підтримка .NET: AWS SDK for .NET, Lambda .NET Runtime, AWS Toolkit для Rider/VS

Коли обирають Azure

  • Компанія вже використовує продукти Microsoft (Office 365, AD, SQL Server)
  • .NET Framework (не .NET Core) застосунки
  • Корпоративний сектор, банківська сфера
  • Потреба в Azure DevOps (колишній VSTS)

Коли обирають GCP

  • Машинне навчання і AI є ключовою складовою продукту
  • Аналітика великих обсягів даних (BigQuery)
  • Компанія вже використовує Google Workspace
  • Потреба у Kubernetes (GKE — найзріліший managed K8s)

Глобальна інфраструктура AWS: Regions, AZ та Edge Locations

Щоб розуміти, як AWS забезпечує надійність і низькі затримки по всьому світу, необхідно вивчити трирівневу архітектуру фізичної інфраструктури.

Рівень 1: Регіони (Regions)

Регіон (Region) — це фізична географічна зона, де AWS розгорнув кластер дата-центрів. Станом на 2024 рік AWS має понад 33 регіони по всьому світу. Кожен регіон є повністю незалежною одиницею інфраструктури: якщо в одному регіоні стається катастрофа — це ніяк не впливає на інші.

Приклади регіонів: us-east-1 (N. Virginia) — найбільший і найстаріший, eu-central-1 (Frankfurt), eu-west-1 (Ireland), ap-southeast-1 (Singapore), me-south-1 (Bahrain).

Чому вибір регіону важливий для вас як розробника?

  • Latency (затримка мережі): Чим ближче регіон до ваших користувачів — тим швидше відповідає застосунок. Якщо 90% ваших користувачів у Польщі — обирайте eu-central-1 (Frankfurt), а не us-east-1.
  • Compliance (відповідність законодавству): GDPR вимагає, щоб персональні дані громадян ЄС зберігались у межах ЄС. Деякі країни мають власні вимоги до локалізації даних.
  • Ціна: Вартість одних і тих самих сервісів може відрізнятись між регіонами. us-east-1, як правило, найдешевший.
  • Доступність сервісів: Нові сервіси AWS завжди з'являються спочатку в us-east-1, і лише потім поширюються в інші регіони.

Рівень 2: Зони доступності (Availability Zones)

Зона доступності (Availability Zone, AZ) — це один або кілька окремих фізичних дата-центрів всередині одного регіону. Кожен регіон має мінімум три зони доступності.

Це ключова концепція для розуміння надійності AWS. Уявіть: ви розгорнули свій .NET Web API на EC2 інстансі в зоні eu-central-1a. У цьому дата-центрі стається пожежа і всі сервери виходять з ладу. Якщо ваш застосунок розгорнутий лише в 1a — він недоступний. Але якщо ви розгорнули три екземпляри API — в eu-central-1a, eu-central-1b та eu-central-1c — кожна AZ є окремою будівлею з незалежним живленням і мережею. Якщо горить 1a1b та 1c продовжують обробляти запити. Користувачі навіть не помітять.

Важлива технічна деталь: Зони всередині регіону з'єднані надшвидкісними приватними оптоволоконними каналами з затримкою менше 1 мс. Реплікація даних між AZ відбувається практично миттєво — ви можете мати синхронну репліку бази даних в іншій зоні без помітного впливу на продуктивність. Сервіси на кшталт RDS Multi-AZ та Application Load Balancer використовують кілька AZ автоматично.

Рівень 3: Вузли присутності (Edge Locations)

Edge Location (Вузол присутності) — це невеликий кеш-сервер, розміщений у великих містах — набагато ближче до кінцевих користувачів, ніж регіональні дата-центри. Станом на 2024 рік AWS має понад 600 Edge Locations у більш ніж 90 містах.

Edge Locations використовуються двома ключовими сервісами:

  • Amazon CloudFront (CDN — Content Delivery Network): ваш React-додаток або статичні файли кешуються у Edge Locations. Користувач у Берліні отримує файл не з дата-центру в Сінгапурі, а з найближчого вузла у Варшаві або Берліні.
  • Amazon Route 53 (DNS-сервіс): DNS-запити вирішуються на найближчому Edge Location для мінімальної затримки.

Аналогія: Edge Location — це як склад Amazon Prime у вашому місті. Замість доставки з центрального складу (регіону) — товар з місцевого складу за день.

Loading diagram...
@startuml
skinparam style plain
skinparam backgroundColor #ffffff

package "eu-central-1 (Frankfurt Region)" #e9ecef {

    package "AZ: eu-central-1a" #dbeafe {
        node "Data Center A" {
            [EC2 Instance]
            database "RDS Primary"
        }
    }

    package "AZ: eu-central-1b" #d1fae5 {
        node "Data Center B" {
            [EC2 Instance]
            database "RDS Standby"
        }
    }

    package "AZ: eu-central-1c" #fce7f3 {
        node "Data Center C" {
            [EC2 Instance]
        }
    }
}

cloud "Edge Locations 600+" as EL #fff3cd {
    [CloudFront]
    [Route 53]
}

actor "User (Berlin)" as User

User -up-> EL : Static files (JS/CSS/images)
User -right-> "eu-central-1 (Frankfurt Region)" : API requests

note bottom of EL
  Nearest to the user.
  Reduces latency for static assets.
end note
@enduml

AWS Well-Architected Framework

AWS Well-Architected Framework — це набір офіційних принципів та кращих практик AWS для проектування хмарних систем. Фреймворк складається з п'яти стовпів (pillars). Важливо розуміти: ці принципи — не абстрактна теорія, а практичні орієнтири, які AWS рекомендує враховувати при побудові кожного застосунку.

Не потрібно запам'ятовувати всі деталі зараз — у процесі курсу ви будете постійно стикатись із цими принципами на практиці.


Інструменти роботи з AWS

AWS надає три основних способи взаємодії з хмарними сервісами. Кожен з них має своє місце — і ви будете використовувати всі три протягом курсу.

AWS Management Console — графічний інтерфейс

AWS Management Console — це веб-додаток, доступний за адресою console.aws.amazon.com. Це перше, що ви бачите після входу в AWS. Консоль надає графічний інтерфейс для управління всіма сервісами AWS.

Для чого вона підходить:

  • Ознайомлення з новими сервісами — все наочно і з підказками
  • Одноразові операції (перевірити стан інстансу, переглянути логи)
  • Моніторинг та дашборди

Де вона не підходить:

  • Повторювані операції — вручну натискати одні й ті ж кнопки неефективно
  • Автоматизація — консоль не підходить для CI/CD pipelines
  • Відтворюваність — складно документувати і повторити точну послідовність дій
На першому занятті рекомендується провести 10–15 хвилин, просто клікаючи по різних розділах консолі. Знайдіть EC2, S3, RDS, Lambda, IAM. Просто відкрийте кожний — подивіться, що там є. Це сформує загальне розуміння того, що вас чекає.

AWS CLI — інтерфейс командного рядка

AWS CLI (Command Line Interface) — це офіційний інструмент для управління AWS через термінал. Замість того, щоб клікати мишею у браузері, ви вводите команди у командному рядку.

Чому CLI важливий:

  • Автоматизація: команди можна записати у shell-скрипт і виконувати автоматично
  • Відтворюваність: команду можна скопіювати та виконати в іншому середовищі
  • Швидкість: досвідчений інженер виконує операції в CLI значно швидше, ніж через консоль
  • CI/CD: GitHub Actions, GitLab CI та інші pipeline-інструменти використовують AWS CLI для деплою

Встановлення AWS CLI:

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
aws --version

Або через Homebrew:

brew install awscli
aws --version

Конфігурація AWS CLI:

Після встановлення необхідно налаштувати credentials — ключі доступу для вашого IAM-користувача.

aws configure

CLI задасть чотири питання:

AWS Access Key ID [None]: AKIA...
AWS Secret Access Key [None]: wJalrXUtnFEMI...
Default region name [None]: eu-central-1
Default output format [None]: json

Після цього credentials зберігаються у файлі ~/.aws/credentials.

Ніколи не завантажуйте файл ~/.aws/credentials у репозиторій GitHub. Додайте його до .gitignore. Якщо ключі потраплять у публічний репозиторій — їх знайдуть боти за лічені хвилини і рахунок може сягнути тисяч доларів.

Перші команди AWS CLI:

AWS CLI — базові команди
$ aws --version
aws-cli/2.15.0 Python/3.11.6 Darwin/23.1.0 exe/x86_64
$ aws sts get-caller-identity
{
    "UserId": "AIDA...",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/student"
}
$ aws s3 ls
2024-01-15 10:23:45 my-first-bucket
2024-01-20 14:55:01 my-react-app
$ aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId"
["i-0a1b2c3d4e5f6g7h8"]

Команда aws sts get-caller-identity — це ваш перший тест. Вона перевіряє, чи CLI правильно налаштований і показує, під яким обліковим записом ви авторизовані.


AWS CloudShell — термінал прямо у браузері

AWS CloudShell — це хмарний термінал, доступний безпосередньо в AWS Management Console (кнопка у верхньому меню). Він надає готове Linux-середовище з встановленим AWS CLI, Python, Node.js та іншими інструментами — без необхідності щось встановлювати локально.

Головна перевага: AWS CloudShell вже авторизований під вашим AWS акаунтом. Вам не потрібно вводити aws configure — CLI вже знає, хто ви є. Це особливо зручно для швидкого тестування команд або роботи з чужого комп'ютера.

Обмеження: CloudShell надає 1 GB постійного сховища для вашого home-директорію. Сесія завершується через 20 хвилин неактивності. Не підходить для довготривалих операцій.


Лабораторна робота

Частина 1: Перший EC2 інстанс через Management Console

У цій частині ви вперше запустите справжній сервер у хмарі. EC2 (Elastic Compute Cloud) — це віртуальна машина в AWS. Тип t2.micro є безкоштовним у межах Free Tier і є стандартним вибором для навчання.

Відкрийте EC2 Dashboard

Увійдіть у AWS Console → знайдіть сервіс EC2 (через пошук або меню «Compute»). Оберіть регіон eu-central-1 (Frankfurt) у верхньому правому куті — він найближчий до України та більшості країн ЄС.

Запустіть майстер створення інстансу

Натисніть «Launch instance». Введіть ім'я інстансу, наприклад my-first-server.

Оберіть AMI (Amazon Machine Image)

AMI — це шаблон операційної системи. Для початку оберіть Amazon Linux 2023 AMI — офіційний Linux-образ від Amazon, оптимізований для AWS і входить у Free Tier. Архітектура: 64-bit (x86).

Оберіть тип інстансу

У списку оберіть t2.micro — він позначений міткою «Free tier eligible». Цей тип має 1 vCPU та 1 GB RAM — достатньо для ознайомлення.

Створіть Key Pair для SSH-доступу

Key Pair — це пара ключів (публічний + приватний) для безпечного підключення до вашого сервера. Натисніть «Create new key pair», введіть ім'я (наприклад, my-aws-key), тип RSA, формат .pem (для Mac/Linux) або .ppk (для PuTTY на Windows). Збережіть файл — він знадобиться для підключення через SSH.

Налаштуйте Network Settings

Залиште налаштування за замовчуванням. Переконайтесь, що галочка «Allow SSH traffic from Anywhere» встановлена — це дозволить підключатись до сервера через SSH.

Запустіть інстанс

Натисніть «Launch instance». AWS розпочне запуск сервера — зазвичай це займає 30–60 секунд. Статус зміниться з pending на running.

Підключіться до сервера через SSH

Після того як інстанс перейде у стан running, скопіюйте його публічну IP-адресу та виконайте у терміналі:

# Спочатку обмежте права доступу до ключа (обов'язково на Mac/Linux!)
chmod 400 ~/Downloads/my-aws-key.pem

# Підключіться до сервера
ssh -i ~/Downloads/my-aws-key.pem ec2-user@<PUBLIC_IP>

Якщо підключення пройшло успішно — ви побачите вітальне повідомлення Amazon Linux.

ОБОВ'ЯЗКОВО: зупиніть інстанс після завдання

Перейдіть до EC2 Dashboard → оберіть ваш інстанс → «Instance state» → «Stop instance». Не «Terminate» (це видалення), а саме «Stop» (зупинка). Зупинений інстанс не споживає годинний ліміт Free Tier.


Частина 2: Базові команди AWS CLI

Виконайте ці команди у вашому терміналі (після налаштування aws configure) або у AWS CloudShell.

# Перевірте поточний акаунт та регіон
aws sts get-caller-identity

# Перегляньте список ваших EC2 інстансів
aws ec2 describe-instances \
    --query "Reservations[*].Instances[*].{ID:InstanceId,State:State.Name,Type:InstanceType}" \
    --output table

# Перегляньте список S3 buckets (якщо є)
aws s3 ls

# Перевірте поточні витрати Free Tier
aws support describe-trusted-advisor-check-result \
    --check-id "eW7HH0l7J9"
Ключ --query у AWS CLI використовує синтаксис JMESPath для фільтрації JSON-відповіді. Це потужний інструмент, який ми будемо використовувати постійно. Не лякайтесь складного вигляду — практика зробить його звичним.

Резюме

У цьому модулі ми заклали фундаментальну теоретичну базу:

  • Хмарні обчислення — це модель надання IT-ресурсів через інтернет на вимогу, з оплатою за фактичне використання. Аналогія: електроенергія від розетки замість власного генератора.
  • IaaS, PaaS, SaaS, FaaS — чотири рівні хмарних послуг із різним розподілом відповідальності між провайдером і клієнтом.
  • AWS є лідером хмарного ринку з найширшим каталогом сервісів та найбільшою спільнотою.
  • Regions → Availability Zones → Edge Locations — трирівнева архітектура, яка забезпечує надійність, низькі затримки та відповідність законодавству.
  • AWS Well-Architected Framework визначає п'ять принципів якісної хмарної архітектури: Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimization.
  • Console, CLI, CloudShell — три інструменти взаємодії з AWS для різних сценаріїв.

У наступному модулі ми перейдемо до першого «реального» хмарного сервісу — IAM (Identity and Access Management): як правильно керувати доступом до AWS-ресурсів і чому принцип найменших привілеїв є наріжним каменем безпеки.


Практичні завдання

Рівень 1 (Базовий)

Завдання 1. Поясніть власними словами різницю між IaaS та PaaS, використовуючи приклад розгортання ASP.NET Core Web API. Що ви робите самі в кожному випадку? Що робить AWS?

Завдання 2. Ваш застосунок повинен обслуговувати користувачів у Японії, США та Німеччині з мінімальною затримкою. У яких регіонах AWS ви б розгорнули його? Назвіть код кожного регіону та поясніть вибір.

Рівень 2 (Аналіз)

Завдання 3. Визначте, яка модель хмарних послуг (IaaS/PaaS/SaaS/FaaS) найкраще підходить для кожного з таких сценаріїв:

  • а) Корпоративна пошта для 200 співробітників
  • б) .NET API, де потрібні специфічні налаштування ОС та кастомні модулі Nginx
  • в) Обробка зображень, завантажених користувачами — запускати лише коли є нове зображення
  • г) Сайт на ASP.NET Core з PostgreSQL — швидкий запуск без DevOps-досвіду

Завдання 4. Розгорніть EC2 інстанс t2.micro з Amazon Linux 2023. Підключіться через SSH. Виконайте команди: uname -a, free -h, df -h. Зробіть скріншот результатів та зупиніть інстанс.

Рівень 3 (Архітектурне мислення)

Завдання 5. Ви проектуєте веб-застосунок для медичної компанії, яка зберігає персональні дані пацієнтів із ЄС (GDPR). Застосунок має:

  • Гарантоване 99.99% uptime
  • Час відповіді < 200 мс для 95% запитів від користувачів у Західній Європі
  • Всі дані зберігаються виключно на серверах у межах ЄС

Опишіть, які регіони та скільки Availability Zones ви б використали. Який рівень хмарних послуг (IaaS/PaaS) обрали б для бекенду та чому? Яку роль відіграють Edge Locations у вашій архітектурі?