SlideShare a Scribd company logo
Jak migrować dane pomiędzy dwoma systemami z pomocą AWS?
Migracje danych serverless
Jakub Cała
Senior Node.js Developer
jakub.cala@tsh.io
Niewspierany system
Nowy system
Wyzwania
Liczba danych
Prawie 24 240 000 operacji sumarycznie
Wydajność systemu
API nowego systemu miało swój limit procesowania
Działające środowisko
Migracja na środowisko, na którym pracował klient
Czas migracji
Migracja mogła najdłużej zajmować niecałe 40 godzin
Różne rozmiary danych
Każda migracja miała inny rozmiar danych do zmigrowania
Różne zasady migracji
Pojedynczych migracji było wiele i różniły się, były praktycznie osobnymi
projektami w kontekście mapowania danych
E T L
Extract Transform Load
AWS SQS FIFO
Usługa kolejki wiadomości, która zapewnia przetwarzanie
wiadomości w kolejności ich wysyłania, co umożliwia
skuteczne zarządzanie przepływem danych w systemach
rozproszonych.
AWS Lambda
AWS Lambda może wykorzystać MessageGroup w
kolejce SQS FIFO do kontrolowania ilości
przetwarzanych wiadomości w jednostce czasu, co jest
potrzebne w rate limitingu.
Sleep time
x = (60000 / y) * z
y - liczba requestów / min dla 1 lambdy
z - liczba requestów do zewnętrznego
API
x = y / z
y - liczba requestów na minutę
z - liczba współbieżnych lambd
AWS SQS
W 2023 roku została dodana możliwość ustawiania
Maximum Concurrency dla lambdy, gdy źródłem
zdarzenia jest AWS SQS. Pozwala to na implementacje
rate limitingu przy pomocy zwykłych kolejek SQS.
AWS Step Functions
Narzędzie do koordynacji procesów w AWS. Posiada limit
historii zdarzeń wynoszący 25 tysięcy rekordów per jedno
wywołanie.
AWS Step Functions
Istnieje możliwość wykorzystania Distributed Map w celu
przetwarzania wielkiej ilości danych w tym samym czasie.
Zwykły krok typu Map pozwala na 40 współbieżnych
wywołań, kiedy Distributed Map wspiera do 10 tysięcy
wywołań jednocześnie.
Jeden rekord = Jedna operacja
Resource może być zmigrowany tylko raz
AWS DynamoDB
Baza danych NoSQL udostępniona przez AWS. Na
podstawie tej bazy został opracowany koncept Single
Table Design pozwalający na przechowywanie danych o
różnych strukturach w pojedynczej tabeli.
Czemu nie użyć getItem bez
Single Table Design?
Raporty :)
Liczba
zmigrowanych
rekordów
Liczba
zmigrowanych
rekordów
Liczba
nieobsłużonych
rekordów
Liczba
zmigrowanych
rekordów
Liczba
nieobsłużonych
rekordów
Lista wszystkich
błędów podczas
migracji
Liczba
zmigrowanych
rekordów
Liczba
nieobsłużonych
rekordów
Lista wszystkich
błędów podczas
migracji
I to wszystko z podziałem na
grupy
Podsumowanie
Opieramy migracje na
producencie i konsumencie
Przechowujemy aktualny stan
migracji
Duże zbiory danych dzielimy
na mniejsze
Tworzymy wynik migracji w
postaci raportu
Link do artykułu:
https://tsh.io/blog/data-migration-plan/

More Related Content

Similar to Migracje danych serverless

Tomasz Kopacz: Architektura i service fabric - jak budować aplikacje w paas v2
Tomasz Kopacz: Architektura i service fabric - jak budować aplikacje w paas v2Tomasz Kopacz: Architektura i service fabric - jak budować aplikacje w paas v2
Tomasz Kopacz: Architektura i service fabric - jak budować aplikacje w paas v2
AnalyticsConf
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OSLukasz Kaluzny
 
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
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
kraqa
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
twitch.tv/katmpb
 
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
 
Wprowadzenie do Microsoft Azure
Wprowadzenie do Microsoft AzureWprowadzenie do Microsoft Azure
Wprowadzenie do Microsoft Azure
Michal Furmankiewicz
 
4 lata z Azure okiem Architekta
4 lata z Azure okiem Architekta4 lata z Azure okiem Architekta
4 lata z Azure okiem Architekta
Lukasz Kaluzny
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
Michal Furmankiewicz
 
Api design - slajdy
Api design - slajdyApi design - slajdy
Api design - slajdy
Szymon Janikowski
 
Co z czym i do czego w Microsoft Azure - poznajemy usługi
Co z czym i do czego w Microsoft Azure - poznajemy usługiCo z czym i do czego w Microsoft Azure - poznajemy usługi
Co z czym i do czego w Microsoft Azure - poznajemy usługi
Emil Wasilewski
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
Adrian Kalbarczyk
 
Maciej Rak - HP - Matrix for hosting
Maciej Rak - HP - Matrix for hostingMaciej Rak - HP - Matrix for hosting
Maciej Rak - HP - Matrix for hostingWebhosting.pl
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynski
duchowe50k
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PROIDEA
 
PLNOG 3: Łukasz Buczyński - Migracja kolokacji w praktyce
PLNOG 3: Łukasz Buczyński - Migracja kolokacji w praktycePLNOG 3: Łukasz Buczyński - Migracja kolokacji w praktyce
PLNOG 3: Łukasz Buczyński - Migracja kolokacji w praktyce
PROIDEA
 
4Developers: Krzysztof Staruch, Kamil Piechociak- Pracuj.pl - SOA zrobione (p...
4Developers: Krzysztof Staruch, Kamil Piechociak- Pracuj.pl - SOA zrobione (p...4Developers: Krzysztof Staruch, Kamil Piechociak- Pracuj.pl - SOA zrobione (p...
4Developers: Krzysztof Staruch, Kamil Piechociak- Pracuj.pl - SOA zrobione (p...
PROIDEA
 
[PL] Chmura hybrydowa - w poszukiwaniu zewnętrznych zasobów IT
[PL] Chmura hybrydowa - w poszukiwaniu zewnętrznych zasobów IT[PL] Chmura hybrydowa - w poszukiwaniu zewnętrznych zasobów IT
[PL] Chmura hybrydowa - w poszukiwaniu zewnętrznych zasobów IT
Piotr Pietrzak
 
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
Paweł Kucharski: Oswajamy Słonia czyli po co nam HadoopPaweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
AnalyticsConf
 
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Chris Suszyński
 

Similar to Migracje danych serverless (20)

Tomasz Kopacz: Architektura i service fabric - jak budować aplikacje w paas v2
Tomasz Kopacz: Architektura i service fabric - jak budować aplikacje w paas v2Tomasz Kopacz: Architektura i service fabric - jak budować aplikacje w paas v2
Tomasz Kopacz: Architektura i service fabric - jak budować aplikacje w paas v2
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OS
 
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...
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
 
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...
 
Wprowadzenie do Microsoft Azure
Wprowadzenie do Microsoft AzureWprowadzenie do Microsoft Azure
Wprowadzenie do Microsoft Azure
 
4 lata z Azure okiem Architekta
4 lata z Azure okiem Architekta4 lata z Azure okiem Architekta
4 lata z Azure okiem Architekta
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
Api design - slajdy
Api design - slajdyApi design - slajdy
Api design - slajdy
 
Co z czym i do czego w Microsoft Azure - poznajemy usługi
Co z czym i do czego w Microsoft Azure - poznajemy usługiCo z czym i do czego w Microsoft Azure - poznajemy usługi
Co z czym i do czego w Microsoft Azure - poznajemy usługi
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
Maciej Rak - HP - Matrix for hosting
Maciej Rak - HP - Matrix for hostingMaciej Rak - HP - Matrix for hosting
Maciej Rak - HP - Matrix for hosting
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynski
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 
PLNOG 3: Łukasz Buczyński - Migracja kolokacji w praktyce
PLNOG 3: Łukasz Buczyński - Migracja kolokacji w praktycePLNOG 3: Łukasz Buczyński - Migracja kolokacji w praktyce
PLNOG 3: Łukasz Buczyński - Migracja kolokacji w praktyce
 
4Developers: Krzysztof Staruch, Kamil Piechociak- Pracuj.pl - SOA zrobione (p...
4Developers: Krzysztof Staruch, Kamil Piechociak- Pracuj.pl - SOA zrobione (p...4Developers: Krzysztof Staruch, Kamil Piechociak- Pracuj.pl - SOA zrobione (p...
4Developers: Krzysztof Staruch, Kamil Piechociak- Pracuj.pl - SOA zrobione (p...
 
[PL] Chmura hybrydowa - w poszukiwaniu zewnętrznych zasobów IT
[PL] Chmura hybrydowa - w poszukiwaniu zewnętrznych zasobów IT[PL] Chmura hybrydowa - w poszukiwaniu zewnętrznych zasobów IT
[PL] Chmura hybrydowa - w poszukiwaniu zewnętrznych zasobów IT
 
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
Paweł Kucharski: Oswajamy Słonia czyli po co nam HadoopPaweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
 
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
 

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
 
Uszanowanko Podsumowanko
Uszanowanko PodsumowankoUszanowanko Podsumowanko
Uszanowanko Podsumowanko
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 Chime
The 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 AWS
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 JavaScript
The Software House
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScript
The Software House
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
The Software House
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danych
The 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ęci
The Software House
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case study
The 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 Krzemowej
The Software House
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzach
The Software House
 
Jak poskromić AWS?
Jak poskromić AWS?Jak poskromić AWS?
Jak poskromić AWS?
The Software House
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.js
The 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 chmurze
The 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 kodu
The 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
 
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
 
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
 
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ć?
 

Migracje danych serverless