Тестування та розгортання ваших API

Розроблення застосунків на AWS

Ricardo Sueiras

Principal Technologist

Infrastructure-as-Code для розробників

 

iac

  • Хмарні нативні застосунки розгортаються через Infrastructure-as-Code (IaC).
  • Описуйте хмарні ресурси у конфігураційних файлах.
  • Уникає ручного налаштування в AWS Management Console (clickops).
Розроблення застосунків на AWS

AWS CloudFormation

 

cloudformation

  • Базовий сервіс IaC в AWS.
  • Визначайте ресурси AWS шаблонами YAML або JSON.
Розроблення застосунків на AWS

AWS Cloud Development Kit (CDK)

 

cdk

  • CDK описує IaC кодом.
  • Пишіть Python, TypeScript або Java замість YAML чи JSON.
  • Під час розгортання застосунок синтезується у шаблони CloudFormation.
Розроблення застосунків на AWS

AWS Serverless Application Model (SAM)

  • Розширює CloudFormation.
  • Спрощений синтаксис для безсерверних ресурсів і API.
  • Працює як шар трансформації.
  • Перетворює синтаксис SAM на повні шаблони CloudFormation.

 

sam

Розроблення застосунків на AWS

Можливості SAM

  • Автогенерує IAM-ролі з мінімальними правами, з можливістю тонкого налаштування.
  • Описуйте конвеєр розгортання як конфігурацію.
  • Пакуйте й розгортайте за допомогою sam build та sam deploy.
  • Рано виявляйте помилки шаблонів через sam validate.
  • Емулюйте Lambda локально за допомогою sam local start-lambda.
    • Надає сталу локальну кінцеву точку

 

sam features

Розроблення застосунків на AWS

Тестування з SAM

  • Збирайте, викликайте й тестуйте безсерверні застосунки локально перед розгортанням.
  • Тестуйте функції Lambda та інтеграції API Gateway.
  • Викликайте функцію локально через sam local invoke.
    • Одноразовий виклик
  • Емулюйте API Gateway за допомогою sam local start-api.

 

testing with sam

Розроблення застосунків на AWS

Модульні тести

 

unit tests

  • Використовуйте SAM з модульними тестами, щоб перевірити поведінку Lambda.
  • Локальне тестування пришвидшує цикли розробки.
  • Поєднуйте з фреймворками pytest, JUnit або Jest.
Розроблення застосунків на AWS

Процес тестування

 

test workflow

  • Генеруйте тестові події командою sam local generate-event.
  • Вона створює JSON-файли подій.
  • Викликайте локально: sam local invoke FunctionName -e event.json.
  • Додайте твердження фреймворку, щоб перевірити відповідь до розгортання.
Розроблення застосунків на AWS

Мокування сервісів AWS

 

mocking tests

  • Поєднуйте локальне тестування з бібліотеками моків, як-от moto.
  • Працюйте з емульованими сервісами AWS без реальних викликів.
  • Підвищує швидкість тестів.
  • Зменшує вартість тестування.
  • Перевіряє помилки, як-от обмеження швидкості чи збої.
Розроблення застосунків на AWS

Безперервна інтеграція та розгортання (CI/CD)

  • Застосунки SAM зазвичай розгортають через конвеєри CI/CD.
  • Автоматизуйте збірку, тестування, пакування та розгортання.
  • AWS CodeCommit зберігає код і шаблони SAM.
  • AWS CodeBuild запускає тести та sam build.
  • AWS CodePipeline оркеструє робочий процес.

 

cicd

Розроблення застосунків на AWS

Робочий процес CI/CD

  • Комітьте вихідний код і шаблон SAM у репозиторій.
  • Запускайте автоматичні тести та валідацію.
  • Пакуйте застосунок командою sam build.
  • Розгортайте ресурси через sam deploy.
  • Моніторте після розгортання за допомогою CloudWatch.

 

workflow

Розроблення застосунків на AWS

Усунення проблем під час розгортання

  troubleshooting

  • Усунення несправностей — ключова операційна навичка.
  • Поширені збої розгортання:
  • Проблеми з дозволами IAM.
  • Некоректні шаблони SAM або CloudFormation.
  • Помилки пакування Lambda чи відсутні залежності.
  • Неправильні конфігурації API Gateway.
Розроблення застосунків на AWS

Усунення проблем під час розгортання

  troubleshooting

  • Розгортання SAM працюють поверх CloudFormation.
  • Надає події стеку та автоматичний відкат.
  • Допомагає виявляти збої розгортання.
  • Відкочує, відновлюючи попередній стан середовища.
Розроблення застосунків на AWS

Усунення проблем під час розгортання

  troubleshooting

  • Усунення проблем спирається на:
  • CloudWatch Logs.
  • Журнали виконання API Gateway.
  • Журнали Lambda.
  • Метрики CloudWatch.
Розроблення застосунків на AWS

Давайте потренуємось!

Розроблення застосунків на AWS

Preparing Video For Download...