Przejdź do treści
JZ Technology
05Automatyczna walidacja danych i testy w środowisku enterprise

Data Reliability Platform

Najgroźniejsze awarie danych są ciche: procesy kończą się „sukcesem”, a raporty pokazują nieprawdę. Ta platforma w środowisku enterprise na AWS wychwytuje takie niespójności codziennie — automatyczną walidacją, testami integracyjnymi i monitoringiem, z wynikami, które można sprawdzić, zamiast brać je na wiarę. Założyciel firmy pracował przy niej jako inżynier w większym zespole, odpowiadając za automatyzację walidacji danych i testy.

Klient
Międzynarodowe środowisko enterprise — szczegóły projektu objęte poufnością
Usługi
Testowanie oprogramowaniaBazy danych i daneDevOps i chmura
Poglądowy schemat przepływu danych i punktów walidacji — na otwartych narzędziach, nie na architekturze klienta

Kontekst projektu

Firmy podejmują decyzje na podstawie raportów, a raporty są dokładnie tak dobre, jak dane, które przez pipeline'y do nich dopływają. Najgroźniejsze awarie danych są ciche: procesy kończą się „sukcesem”, dashboardy dalej się renderują — tylko pokazują nieprawdę. Ten projekt dotyczył platformy, której zadaniem jest wykrywanie takich sytuacji, zanim ktokolwiek zdąży na ich podstawie podjąć decyzję.

Platforma działa w środowisku enterprise na AWS i w sposób ciągły waliduje dane przepływające przez chmurowe pipeline'y: sprawdza schematy, kompletność, spójność między etapami przetwarzania i świeżość danych, a odchylenia zgłasza zespołowi, zanim zauważą je odbiorcy raportów.

Nasza część pracy dotyczyła inżynierskiej strony tej niezawodności: automatyzacji walidacji, testów integracyjnych pipeline'ów i monitoringu. Opisujemy ją w zakresie, na jaki pozwala poufność — bez nazwy klienta, bez jego danych i bez szczegółów jego systemów.

Wyzwanie biznesowe

Skala i różnorodność danych wykluczały kontrolę ręczną: wiele zbiorów z różnych źródeł, przetwarzanych etapami, z zależnościami między etapami. Do tego najpoważniejsze błędy nie wywracają procesu — brakujące wiersze, duplikaty czy zerwane powiązania między zbiorami przechodzą przez pipeline bezszelestnie i wypływają dopiero w raportach.

Walidacja nie mogła przy tym spowalniać dostarczania. Kontrole musiały działać wewnątrz pipeline'ów i procesu CI, a nie obok nich — z jasnym rozróżnieniem, które problemy zatrzymują przepływ danych, a które tylko podnoszą alarm. Zbyt czułe reguły blokowałyby pracę, zbyt luźne przepuszczałyby błędy.

Zakres realizacji

Nasz zakres w tym projekcie obejmował automatyzację walidacji danych i testy: projektowanie kontroli jakości danych, implementację frameworku testowego w Pythonie i PyTest oraz wpięcie go w pipeline'y i proces CI/CD. Platforma jako całość była dziełem większego zespołu — opisujemy tu wyłącznie tę część.

Do zakresu należało też to, żeby wyniki kontroli były użyteczne: metryki i alerty w Amazon CloudWatch oraz raportowanie, które pokazuje zespołowi, co dokładnie się nie zgadza, gdzie i od kiedy.

Rola założyciela

Zakres realizował osobiście założyciel firmy, Jakub Zając, pracując jako inżynier w większym zespole klienta i odpowiadając za automatyzację walidacji danych oraz testy.

Zaangażowane kompetencje

Inżynieria jakości
Wiedza, co jest przetestowane — i co świadomie nie jest.
Automatyzacja testów
Regresja sprawdzana przy każdej zmianie, nie raz przed wydaniem.
DevOps i chmura
Powtarzalne wdrożenia i środowiska, które da się odtworzyć.
Bazy danych
Model danych i zapytania, które nie zwalniają razem ze wzrostem firmy.
Niezawodność danych
Kontrole, które wychwytują błąd w danych przed raportem zarządu.

Lista dyscyplin, których wymagała ta realizacja — nie lista stanowisk.

Rozwiązanie

01

Framework walidacji danych w Pythonie

Kontrole jakości danych zbudowaliśmy jako kod: sprawdzenia schematów, kompletności, unikalności, spójności referencyjnej między zbiorami i świeżości danych. Silnikiem wykonawczym jest PyTest, więc walidacje uruchamia się, raportuje i utrzymuje tak samo jak zwykłe testy — bez autorskiego narzędzia, którego trzeba by się osobno uczyć.

02

Testy integracyjne pipeline'ów danych

Ścieżka przetwarzania — od plików w Amazon S3, przez zadania AWS Glue, po tabele w Amazon Redshift — jest testowana od końca do końca na kontrolowanych zbiorach danych. Test przepuszcza dane przez rzeczywisty pipeline i sprawdza, czy na wyjściu jest dokładnie to, co powinno być, a nie tylko czy proces „się wykonał”.

03

Walidacja wbudowana w proces, nie obok niego

Kontrole działają w dwóch trybach: w CI (GitHub Actions) przy każdej zmianie logiki przetwarzania oraz cyklicznie na produkcyjnych przepływach danych. Poważne naruszenia zatrzymują pipeline, mniejsze odchylenia generują ostrzeżenie — dzięki temu błędy nie przechodzą dalej, a zespół nie jest blokowany przez każdą drobną anomalię.

04

Monitoring i alerty jakości danych

Wyniki walidacji zasilają metryki i alarmy w Amazon CloudWatch. Zespół widzi stan kontroli w czasie i dostaje powiadomienie, gdy coś odbiega od normy — o problemie z danymi informuje monitoring, a nie zdziwiony odbiorca raportu tydzień później.

05

Raportowanie i obsługa niespójności

Wykryta niespójność ma swoją ścieżkę: raport pokazuje, która kontrola zawiodła, na którym zbiorze i od kiedy, co skraca diagnozę z godzin przeszukiwania danych do przejrzenia wyniku. To zamienia jakość danych z tematu „wszyscy wiedzą, że bywa różnie” w mierzalny, obsługiwany proces.

06

Powtarzalna infrastruktura testowa

Środowiska, w których działają walidacje, są opisane w Terraformie i konteneryzowane w Dockerze. Framework można dzięki temu uruchomić w kolejnym środowisku bez ręcznej konfiguracji, a infrastruktura testowa podlega review tak samo jak kod kontroli.

Stos technologiczny

Testy i walidacja

  • Python
  • PyTest
  • SQL

Chmura i dane (AWS)

  • Amazon S3
  • AWS Glue
  • Amazon Redshift

Bezpieczeństwo i monitoring

  • AWS IAM
  • Amazon CloudWatch

Infrastruktura i CI/CD

  • Docker
  • Terraform
  • GitHub Actions

Podejście techniczne

  • 01

    Walidacje są kodem, wersjonowanym razem z logiką pipeline'ów. Każda reguła przechodzi review i ma historię — wiadomo, kto ją dodał, dlaczego i co dokładnie sprawdza.

  • 02

    Dwa poziomy powagi zamiast jednego: twarde naruszenia zatrzymują przepływ danych, miękkie anomalie tylko alarmują. To rozróżnienie chroni jednocześnie przed cichymi błędami i przed ciągłym blokowaniem zespołu.

  • 03

    Testy integracyjne pracują na deterministycznych, kontrolowanych zbiorach danych, a nie na kopiach produkcji — wynik testu jest powtarzalny, a dane wrażliwe nie krążą po środowiskach.

  • 04

    Kontrole zaprojektowaliśmy tak, żeby były tanie i idempotentne — da się je uruchamiać często. Częsta, automatyczna weryfikacja wygrywa z gruntowną kontrolą robioną raz na miesiąc.

  • 05

    Postawiliśmy na standardowe narzędzia — PyTest zamiast autorskiego runnera. Każdy inżynier znający Pythona może dopisać kontrolę pierwszego dnia pracy z platformą.

Jakość i niezawodność

  • Dostępy według zasady najmniejszych uprawnień w AWS IAM: komponenty walidacyjne czytają wyłącznie te zbiory danych, które sprawdzają — nic ponadto.
  • Dane produkcyjne nie opuszczają kontrolowanego środowiska. Testy korzystają ze zbiorów syntetycznych lub zanonimizowanych, przygotowanych specjalnie do tego celu.
  • Sekrety i poświadczenia są obsługiwane przez zarządzane mechanizmy chmury i CI — nie występują w kodzie ani w plikach konfiguracyjnych repozytorium.
  • Zmiany w infrastrukturze przechodzą przez Terraform i review kodu, co daje pełną ścieżkę audytu — istotną w środowisku enterprise nie mniej niż samo działanie systemu.

Efekt

Niespójności danych wychodzą na jaw na etapie pipeline'u, a nie w raportach. Cała klasa cichych błędów, wcześniej wykrywanych przypadkiem, jest wychwytywana systematycznie.

Zespół ma powtarzalny sposób obejmowania kontrolą nowych zbiorów danych — platforma rośnie razem z danymi, zamiast być jednorazowym projektem.

Zaufanie do danych przestaje być kwestią wiary: odbiorcy mogą sprawdzić stan kontroli, zamiast zakładać, że „pewnie jest dobrze”.

Galeria

Powiązane usługi

Zakres, z którego korzystał ten projekt — opisany szerzej na stronach usług.

  • Testy manualne i automatyczne, testy API, UI i regresji oraz strategia testów — proces jakości, który realnie zabezpiecza wydania.

  • Projektowanie i optymalizacja PostgreSQL, migracje, raportowanie i automatyczna walidacja danych — żeby liczby w firmie wreszcie się zgadzały.

  • CI/CD, Docker, Terraform i AWS — żeby wdrożenia były jednym kliknięciem, a o awariach wiedzieć przed klientami, nie od nich.

Inne realizacje

Porozmawiajmy o Twoim projekcie

Chętnie opowiemy, jak podobne podejście sprawdziłoby się u Ciebie — i czego byśmy uniknęli.