SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Amazon Step Functions
Sposób na implementację procesów w chmurze
Krzysztof Łoś
Node.js Developer
The Software House
2
Jak się koduje w AWS?
● Poprzez lambdy (AWS Lambda)
● Lambda = prosta funkcja / program
● Lambda = nanoserwis
● Łatwy deployment, wbudowane logi
● Komunikacja z DB, kolejkami, bucketami
● Wywoływanie innych lambd
3
Jak się koduje w AWS?
● Poprzez lambdy (AWS Lambda)
● Lambda = prosta funkcja / program
● Lambda = nanoserwis
● Łatwy deployment, wbudowane logi
● Komunikacja z DB, kolejkami, bucketami
● Wywoływanie innych lambd
4
Czy mamy jakiś problem?
● Tracing (wygodny)
5
Czy mamy jakiś problem?
● Tracing (wygodny)
6
Użyjmy Step Functions!
● Sekwencja, maszyna stanu
● Koordynacja procesu (różne typy kroków)
● Bezpośrednia komunikacja z usługami AWS
● Tracing kroków
● Piszemy w ASL
● Less-code
7
Jak zacząć zabawę?
8
Jak zacząć zabawę?
9
No nieźle…
10
Może coś prostszego
11
Szybki deploy
12
Odpalamy
13
Jak to wygląda?
14
Jak to wygląda?
15
No i w końcu ten tracing
16
Historia wywołań
17
Projektowanie wizualne
18
Jak z tym pracować?
19
Narzędzia
● Serverless Framework
● Visual Studio Code
● AWS Toolkit for VSC
20
Serverless Boilerplate
https://github.com/TheSoftwareHouse/serverless-boilerplate
21
AWS Toolkit
22
Nowy proces Ctrl+N
23
● Zamówienie
● Różna obsługa - klient prywatny vs. biznesowy
● Sprawdzenie stanów magazynowych - integracja kilku systemów
● Wybór magazynu
● Integracja z serwisem wysyłki
● Powiadomienie klienta
Wybór klienta
24
Step output:
Step input:
Obsługa klienta
25
arn:aws:lambda:us-west-2:123456789012:function:my-function
Step output:
Step input:
Sprawdzenie stanów magazynowych
26
Step input:
Step output:
Wybór magazynu
27
Step input:
Step output:
Integracja z serwisem wysyłki - kolejka
28
Step input: Step output:
Integracja z serwisem wysyłki - odpowiedź
29
Step input: Step output:
Integracja z serwisem wysyłki - aktualizacja statusu
30
Step input:
Step output:
Powiadomienie klienta
31
Step input:
Step output:
Jak to ulepszyć?
32
● Catch
Jak to ulepszyć?
33
● Retry
Jak to testować?
34
● Przez deployment
Jak to testować?
35
● Lokalnie
arn:aws:lambda:us-east-1:101010101010:function:tshExampleApp-dev-example-step-lambda
Jak to testować?
36
● Lokalnie
37
Podsumowanie
● Procesy lubią Step Functions
● Stosunkowo niskie koszty
● Nie wszystko się da
● Uwaga na ponawianie workflow!
38
Dzięki!

Contenu connexe

Plus de The 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
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case studyThe 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
 
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
 
Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?
Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?
Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?The Software House
 
Pierwsza wycieczka nad jezioro (danych)
Pierwsza wycieczka nad jezioro (danych)Pierwsza wycieczka nad jezioro (danych)
Pierwsza wycieczka nad jezioro (danych)The Software House
 
A w więc chcesz zostać frontend developerem?
A w więc chcesz zostać frontend developerem?A w więc chcesz zostać frontend developerem?
A w więc chcesz zostać frontend developerem?The Software House
 
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
 
Komunikacja oparta o zdarzenia z wykorzystaniem AWS Event Bridge
Komunikacja oparta o zdarzenia z wykorzystaniem AWS Event BridgeKomunikacja oparta o zdarzenia z wykorzystaniem AWS Event Bridge
Komunikacja oparta o zdarzenia z wykorzystaniem AWS Event BridgeThe 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
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 

Plus de The Software House (20)

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
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case study
 
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
 
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ć?
 
Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?
Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?
Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?
 
Pierwsza wycieczka nad jezioro (danych)
Pierwsza wycieczka nad jezioro (danych)Pierwsza wycieczka nad jezioro (danych)
Pierwsza wycieczka nad jezioro (danych)
 
A w więc chcesz zostać frontend developerem?
A w więc chcesz zostać frontend developerem?A w więc chcesz zostać frontend developerem?
A w więc chcesz zostać frontend developerem?
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
Komunikacja oparta o zdarzenia z wykorzystaniem AWS Event Bridge
Komunikacja oparta o zdarzenia z wykorzystaniem AWS Event BridgeKomunikacja oparta o zdarzenia z wykorzystaniem AWS Event Bridge
Komunikacja oparta o zdarzenia z wykorzystaniem AWS Event Bridge
 
DIY: React.js od zera
DIY: React.js od zeraDIY: React.js od zera
DIY: React.js od zera
 
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
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 

Amazon Step Functions. Sposób na implementację procesów w chmurze