SlideShare a Scribd company logo
1 of 23
Download to read offline
Testowanie rozwiązań
serverless z LocalStack
Maciej Żelek
O mnie
- Starszy Programista Node.js @
The Software House
- ostatnimi czasy: serverless
framework, aws, terraform
- w wolnym czasie również:
python, react, react-native
- po godzinach motocyklista
Agenda
1. Czym jest LocalStack?
2. Krótko o Serverless Boilerplate by TSH
3. Konfiguracja projektu
4. Przykład testów integracyjnych: API Gateway, Lambda, DynamoDB,
StepFunctions
5. CI z LocalStack
6. Wady / Zalety LocalStack
7. Kiedy używać LocalStack?
8. Kiedy nie używać LocalStack?
9. Przemyślenia
Czym jest LocalStack?
- framework do testowania i mockowania
serwisów chmury AWS
- udostępnia funkcjonalności i API serwisów
- możliwa komunikacja przez aws-cli, aws-sdk
- łatwe lokalne deployowanie aplikacji w
Dockerze
- usługi tworzone w oparciu o definicję
CloudFormation
- integrowalne z serverless, terraform, aws-cdk,
sam
https://localstack.cloud
Czym jest LocalStack?
dostępne w trzech wariantach:
- Community Edition - wsparcie dla większości serwisów: Lambda,
APIGateway, StepFunctions, CloudFormation, SNS, SQS, DynamoDB ...
- Pro Edition + wsparcie: Multi-Region, Lambda Layers, dodatkowe i
rozszerzone usługi AWS, np: RDS, IAM, Cognito, ElastiCache, XRay, Web UI,
Analityka kosztów / oszczędności
- Enterprise Edition + dedykowane wsparcie techniczne, funkcjonalności na
życzenie
Krótko o Serverless Boilerplate by TSH
https://github.com/TheSoftwareHouse/serverless-boilerplate
Zawiera wstępną konfigurację projektu:
- Serverless Framework
- StepFunctions plugin
- Node.js
- TypeScript
- Mocha + Supertest
- StepFunctions
- PostgreSQL
Konfiguracja projektu
https://github.com/MacZel/uszanowanko-localstack
Boilerplate TSH wzbogacony o:
- konfiguracja LocalStack (docker-compose + plugin serverless-localstack)
- konfiguracja CI (github actions)
- przykłady testów
- przykładowe lambdy
- przykładowy workflow step functions
- dynamodb-toolbox, mocha + chai
Konfiguracja projektu
- konfiguracja docker-compose
Konfiguracja projektu
- konfiguracja serverless framework
- npm i --save-dev serverless-localstack
Konfiguracja projektu
- stawiamy kontenery z docker compose
- docker compose up -d
Konfiguracja projektu
- puszczamy lokalny
deploy stacka serverless
- serverless deploy --stage
local
Przykłady testów: API Gateway + Lambda
- w wariancie PRO
Edition wsparcie dla
Lambda Layers
- brak wsparcia dla
walidacji requestów
Przykłady testów: DynamoDB
przekazując zmienną
DYNAMODB_ERROR_PROBABILITY
możemy sterować losowym
wstrzykiwaniem błędów
(ProvisionedThroughputExceededException)
w odpowiedziach z API
Przykłady testów:
StepFunctions
Przykłady testów: StepFunctions
CI z LocalStack
CI z LocalStack
Wady i Zalety LocalStack
zalety:
- umożliwia zapoznanie się z API
wspieranych serwisów
- uruchamianie testów
integracyjnych w izolacji
- zmniejszenie generowanych
kosztów
- każdy deweloper ma prywatne
lokalne środowisko do testów
wady:
- dodatkowa konfiguracja do
utrzymania
- występują niezgodności między
prawdziwym serwisem a
mockowanym
- brak wsparcia dla wszystkich
funkcjonalności
Kiedy używać LocalStack?
- testy integracyjne są pracochłonne
- każdy dodatkowy test ma wyraźny wpływ na wydłużenie czasu kroku CI
- testujemy krytyczne funkcjonalności naszej aplikacji
- testujemy to co niemożliwe do pokrycia testami jednostkowymi
- nie testujemy szczegółów aplikacji
Kiedy nie używać LocalStack?
- rozwijamy proste RESTowe API,
przykładowo z użyciem usług
(APIGateway, Lambda, DynamoDB) =>
dynamodb-local
- myślimy bardziej o niezależnym workflow
testowym e2e => aws-cli / aws-sdk
Przemyślenia
- doświadczenie zespołu w technologiach aws
- użycie narzędzi jak dynamoose/dynamodb-toolbox
- etap projektu
- stopień skomplikowania architektury, handlerów etc.
Przydatne materiały
LocalStack:
- https://github.com/UlisesGascon/sample-terraform-localstack
- https://levelup.gitconnected.com/local-testing-aws-applications-at-no-cost-c0bdd00
9d1d0
- https://www.simongilbert.net/
- https://github.com/localstack/awscli-local
DynamoDB:
- https://hub.docker.com/r/amazon/dynamodb-local
- https://github.com/jeremydaly/dynamodb-toolbox
- https://github.com/dynamoose/dynamoose
- https://rh-web-bucket.s3.amazonaws.com/index.html
Dziękuję za uwagę

More Related Content

What's hot

Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JSDawid Rusnak
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGBart Zaremba
 
Kubernetes: from zero to be hero
Kubernetes: from zero to be heroKubernetes: from zero to be hero
Kubernetes: from zero to be heroThe Software House
 
Jak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsJak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsThe Software House
 
Ansible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITAnsible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITKamil Grabowski
 
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxAplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxDawid Rusnak
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychThe Software House
 
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.Meet Magento Poland
 
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Michał Kurzeja
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Lukasz Kaluzny
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wojciech Barczyński
 
Kontenery w Azure
Kontenery w AzureKontenery w Azure
Kontenery w AzureChmurowisko
 

What's hot (20)

Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JS
 
Ansible w praktyce
Ansible w praktyceAnsible w praktyce
Ansible w praktyce
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Infrastructure As Code
Infrastructure As CodeInfrastructure As Code
Infrastructure As Code
 
Kubernetes: from zero to be hero
Kubernetes: from zero to be heroKubernetes: from zero to be hero
Kubernetes: from zero to be hero
 
Jak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsJak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.js
 
Ansible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITAnsible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań IT
 
Rundeck & Ansible
Rundeck & AnsibleRundeck & Ansible
Rundeck & Ansible
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxAplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/Redux
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
Projektowanie i implementacja usług sieciowych
Projektowanie i implementacja usług sieciowychProjektowanie i implementacja usług sieciowych
Projektowanie i implementacja usług sieciowych
 
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
 
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
 
SPA i .Net Core
SPA i .Net CoreSPA i .Net Core
SPA i .Net Core
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
Kontenery w Azure
Kontenery w AzureKontenery w Azure
Kontenery w Azure
 

Similar to Testowanie rozwiązań serverless z LocalStack

Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-aFuture Processing
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposeMariusz Bąk
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...HighSolutions Sp. z o.o.
 
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aUruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aLaravel Poland MeetUp
 
Nowości Windows Azure
Nowości Windows AzureNowości Windows Azure
Nowości Windows Azurepbubacz
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Natalia Stanko
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?Michał Dudak
 
Serverless w Chmurze. Azure Functions vs AWS Lambda. Porównanie dwóch najwięk...
Serverless w Chmurze. Azure Functions vs AWS Lambda. Porównanie dwóch najwięk...Serverless w Chmurze. Azure Functions vs AWS Lambda. Porównanie dwóch najwięk...
Serverless w Chmurze. Azure Functions vs AWS Lambda. Porównanie dwóch najwięk...Michal Furmankiewicz
 
Spa i .net core
Spa i .net coreSpa i .net core
Spa i .net coreVimanet
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?tkryskiewicz
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz
 
PLNOG19 - Emil Gągała - Przewodnik nowoczesnego sieciowca po pasjonującym, No...
PLNOG19 - Emil Gągała - Przewodnik nowoczesnego sieciowca po pasjonującym, No...PLNOG19 - Emil Gągała - Przewodnik nowoczesnego sieciowca po pasjonującym, No...
PLNOG19 - Emil Gągała - Przewodnik nowoczesnego sieciowca po pasjonującym, No...PROIDEA
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Droptica
 
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future ProcessingPROIDEA
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynskiduchowe50k
 

Similar to Testowanie rozwiązań serverless z LocalStack (20)

JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
 
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aUruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
 
Nowości Windows Azure
Nowości Windows AzureNowości Windows Azure
Nowości Windows Azure
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?
 
Serverless w Chmurze. Azure Functions vs AWS Lambda. Porównanie dwóch najwięk...
Serverless w Chmurze. Azure Functions vs AWS Lambda. Porównanie dwóch najwięk...Serverless w Chmurze. Azure Functions vs AWS Lambda. Porównanie dwóch najwięk...
Serverless w Chmurze. Azure Functions vs AWS Lambda. Porównanie dwóch najwięk...
 
Spa i .net core
Spa i .net coreSpa i .net core
Spa i .net core
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
 
PLNOG19 - Emil Gągała - Przewodnik nowoczesnego sieciowca po pasjonującym, No...
PLNOG19 - Emil Gągała - Przewodnik nowoczesnego sieciowca po pasjonującym, No...PLNOG19 - Emil Gągała - Przewodnik nowoczesnego sieciowca po pasjonującym, No...
PLNOG19 - Emil Gągała - Przewodnik nowoczesnego sieciowca po pasjonującym, No...
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]
 
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
 
Mongodb with Rails
Mongodb with RailsMongodb with Rails
Mongodb with Rails
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynski
 

More from The Software House

Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...The Software House
 
Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?The Software House
 
O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?The Software House
 
Chat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeChat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeThe Software House
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?The Software House
 
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSAnaliza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSThe Software House
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptThe Software House
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptThe Software House
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLThe Software House
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychThe Software House
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciThe Software House
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejThe Software House
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachThe Software House
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsThe Software House
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeThe Software House
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduThe Software House
 
Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?The Software House
 

More from The Software House (20)

Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
 
Uszanowanko Podsumowanko
Uszanowanko PodsumowankoUszanowanko Podsumowanko
Uszanowanko Podsumowanko
 
Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?
 
O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?
 
Chat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeChat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon Chime
 
Migracje danych serverless
Migracje danych serverlessMigracje danych serverless
Migracje danych serverless
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?
 
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSAnaliza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScript
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScript
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danych
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięci
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny Krzemowej
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzach
 
Jak poskromić AWS?
Jak poskromić AWS?Jak poskromić AWS?
Jak poskromić AWS?
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.js
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurze
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
 
Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?
 

Testowanie rozwiązań serverless z LocalStack

  • 1. Testowanie rozwiązań serverless z LocalStack Maciej Żelek
  • 2. O mnie - Starszy Programista Node.js @ The Software House - ostatnimi czasy: serverless framework, aws, terraform - w wolnym czasie również: python, react, react-native - po godzinach motocyklista
  • 3. Agenda 1. Czym jest LocalStack? 2. Krótko o Serverless Boilerplate by TSH 3. Konfiguracja projektu 4. Przykład testów integracyjnych: API Gateway, Lambda, DynamoDB, StepFunctions 5. CI z LocalStack 6. Wady / Zalety LocalStack 7. Kiedy używać LocalStack? 8. Kiedy nie używać LocalStack? 9. Przemyślenia
  • 4. Czym jest LocalStack? - framework do testowania i mockowania serwisów chmury AWS - udostępnia funkcjonalności i API serwisów - możliwa komunikacja przez aws-cli, aws-sdk - łatwe lokalne deployowanie aplikacji w Dockerze - usługi tworzone w oparciu o definicję CloudFormation - integrowalne z serverless, terraform, aws-cdk, sam https://localstack.cloud
  • 5. Czym jest LocalStack? dostępne w trzech wariantach: - Community Edition - wsparcie dla większości serwisów: Lambda, APIGateway, StepFunctions, CloudFormation, SNS, SQS, DynamoDB ... - Pro Edition + wsparcie: Multi-Region, Lambda Layers, dodatkowe i rozszerzone usługi AWS, np: RDS, IAM, Cognito, ElastiCache, XRay, Web UI, Analityka kosztów / oszczędności - Enterprise Edition + dedykowane wsparcie techniczne, funkcjonalności na życzenie
  • 6. Krótko o Serverless Boilerplate by TSH https://github.com/TheSoftwareHouse/serverless-boilerplate Zawiera wstępną konfigurację projektu: - Serverless Framework - StepFunctions plugin - Node.js - TypeScript - Mocha + Supertest - StepFunctions - PostgreSQL
  • 7. Konfiguracja projektu https://github.com/MacZel/uszanowanko-localstack Boilerplate TSH wzbogacony o: - konfiguracja LocalStack (docker-compose + plugin serverless-localstack) - konfiguracja CI (github actions) - przykłady testów - przykładowe lambdy - przykładowy workflow step functions - dynamodb-toolbox, mocha + chai
  • 9. Konfiguracja projektu - konfiguracja serverless framework - npm i --save-dev serverless-localstack
  • 10. Konfiguracja projektu - stawiamy kontenery z docker compose - docker compose up -d
  • 11. Konfiguracja projektu - puszczamy lokalny deploy stacka serverless - serverless deploy --stage local
  • 12. Przykłady testów: API Gateway + Lambda - w wariancie PRO Edition wsparcie dla Lambda Layers - brak wsparcia dla walidacji requestów
  • 13. Przykłady testów: DynamoDB przekazując zmienną DYNAMODB_ERROR_PROBABILITY możemy sterować losowym wstrzykiwaniem błędów (ProvisionedThroughputExceededException) w odpowiedziach z API
  • 18. Wady i Zalety LocalStack zalety: - umożliwia zapoznanie się z API wspieranych serwisów - uruchamianie testów integracyjnych w izolacji - zmniejszenie generowanych kosztów - każdy deweloper ma prywatne lokalne środowisko do testów wady: - dodatkowa konfiguracja do utrzymania - występują niezgodności między prawdziwym serwisem a mockowanym - brak wsparcia dla wszystkich funkcjonalności
  • 19. Kiedy używać LocalStack? - testy integracyjne są pracochłonne - każdy dodatkowy test ma wyraźny wpływ na wydłużenie czasu kroku CI - testujemy krytyczne funkcjonalności naszej aplikacji - testujemy to co niemożliwe do pokrycia testami jednostkowymi - nie testujemy szczegółów aplikacji
  • 20. Kiedy nie używać LocalStack? - rozwijamy proste RESTowe API, przykładowo z użyciem usług (APIGateway, Lambda, DynamoDB) => dynamodb-local - myślimy bardziej o niezależnym workflow testowym e2e => aws-cli / aws-sdk
  • 21. Przemyślenia - doświadczenie zespołu w technologiach aws - użycie narzędzi jak dynamoose/dynamodb-toolbox - etap projektu - stopień skomplikowania architektury, handlerów etc.
  • 22. Przydatne materiały LocalStack: - https://github.com/UlisesGascon/sample-terraform-localstack - https://levelup.gitconnected.com/local-testing-aws-applications-at-no-cost-c0bdd00 9d1d0 - https://www.simongilbert.net/ - https://github.com/localstack/awscli-local DynamoDB: - https://hub.docker.com/r/amazon/dynamodb-local - https://github.com/jeremydaly/dynamodb-toolbox - https://github.com/dynamoose/dynamoose - https://rh-web-bucket.s3.amazonaws.com/index.html