Testowanie i wdrażanie API

Tworzenie aplikacji na AWS

Ricardo Sueiras

Principal Technologist

Infrastructure-as-Code dla programistów

 

iac

  • Aplikacje natywne dla chmury wdraża się przy użyciu Infrastructure-as-Code (IaC).
  • Zasoby chmury definiujesz w plikach konfiguracyjnych.
  • Eliminuje ręczną konfigurację w AWS Management Console (clickops).
Tworzenie aplikacji na AWS

AWS CloudFormation

 

cloudformation

  • Podstawowa usługa IaC w AWS.
  • Zasoby AWS definiujesz za pomocą szablonów YAML lub JSON.
Tworzenie aplikacji na AWS

AWS Cloud Development Kit (CDK)

 

cdk

  • CDK pozwala definiować IaC za pomocą kodu.
  • Zamiast YAML lub JSON piszesz w Pythonie, TypeScript albo Javie.
  • Podczas wdrożenia aplikacje są kompilowane do szablonów CloudFormation.
Tworzenie aplikacji na AWS

AWS Serverless Application Model (SAM)

  • Rozszerza CloudFormation.
  • Uproszczona składnia dla zasobów bezserwerowych i API.
  • Działa jako warstwa transformacji.
  • Przekształca składnię SAM w pełne szablony CloudFormation.

 

sam

Tworzenie aplikacji na AWS

Funkcje SAM

  • Automatycznie generuje role IAM z najmniejszymi uprawnieniami, z możliwością dostosowania.
  • Potok wdrożeniowy definiujesz jako konfigurację.
  • Buduj i wdrażaj za pomocą sam build i sam deploy.
  • Wykrywaj błędy szablonu wcześnie dzięki sam validate.
  • Emuluj Lambda lokalnie za pomocą sam local start-lambda.
    • Udostępnia stały lokalny punkt końcowy.

 

sam features

Tworzenie aplikacji na AWS

Testowanie z SAM

  • Buduj, wywołuj i testuj aplikacje bezserwerowe lokalnie przed wdrożeniem.
  • Testuj funkcje Lambda i integracje API Gateway.
  • Wywołaj funkcję lokalnie za pomocą sam local invoke.
    • Jednorazowe wywołanie.
  • Emuluj API Gateway za pomocą sam local start-api.

 

testing with sam

Tworzenie aplikacji na AWS

Testy jednostkowe

 

unit tests

  • Używaj SAM z testami jednostkowymi, aby weryfikować działanie Lambda.
  • Lokalne testowanie przyspiesza cykl pracy.
  • Łącz z frameworkami takimi jak pytest, JUnit czy Jest.
Tworzenie aplikacji na AWS

Przepływ testowania

 

test workflow

  • Generuj zdarzenia testowe za pomocą sam local generate-event.
  • Polecenie zwraca pliki zdarzeń w formacie JSON.
  • Wywołuj lokalnie przez sam local invoke FunctionName -e event.json.
  • Dodaj asercje, aby zweryfikować odpowiedź przed wdrożeniem.
Tworzenie aplikacji na AWS

Mockowanie usług AWS

 

mocking tests

  • Łącz testy lokalne z bibliotekami do mockowania, takimi jak moto.
  • Korzystaj z symulowanych usług AWS bez rzeczywistych wywołań.
  • Przyspiesza wykonywanie testów.
  • Obniża koszty testowania.
  • Pozwala weryfikować scenariusze błędów, np. throttling lub awarie.
Tworzenie aplikacji na AWS

Ciągła integracja i ciągłe wdrażanie (CI/CD)

  • Aplikacje SAM są zwykle wdrażane przez potoki CI/CD.
  • Automatyzują budowanie, testowanie, pakowanie i wdrażanie.
  • AWS CodeCommit przechowuje kod i szablony SAM.
  • AWS CodeBuild uruchamia testy i sam build.
  • AWS CodePipeline orkiestruje cały przepływ pracy.

 

cicd

Tworzenie aplikacji na AWS

Przepływ CI/CD

  • Zatwierdź kod źródłowy i szablon SAM do repozytorium.
  • Uruchom automatyczne testy i walidację.
  • Spakuj aplikację za pomocą sam build.
  • Wdróż zasoby za pomocą sam deploy.
  • Monitoruj po wdrożeniu za pomocą CloudWatch.

 

workflow

Tworzenie aplikacji na AWS

Diagnostyka wdrożeń

  troubleshooting

  • Diagnostyka to kluczowa umiejętność operacyjna.
  • Najczęstsze przyczyny błędów wdrożenia:
  • Problemy z uprawnieniami IAM.
  • Nieprawidłowe szablony SAM lub CloudFormation.
  • Błędy pakowania Lambda lub brakujące zależności.
  • Niepoprawna konfiguracja API Gateway.
Tworzenie aplikacji na AWS

Diagnostyka wdrożeń

  troubleshooting

  • Wdrożenia SAM działają pod spodem na CloudFormation.
  • Udostępnia zdarzenia stosu i automatyczne wycofywanie zmian.
  • Pomaga zidentyfikować przyczyny błędów wdrożenia.
  • Wycofuje zmiany, przywracając poprzedni stan środowiska.
Tworzenie aplikacji na AWS

Diagnostyka wdrożeń

  troubleshooting

  • Do diagnostyki problemów używaj:
  • Logów CloudWatch.
  • Logów wykonania API Gateway.
  • Logów Lambda.
  • Metryk CloudWatch.
Tworzenie aplikacji na AWS

Czas na praktykę!

Tworzenie aplikacji na AWS

Preparing Video For Download...