Jak dostarczyć kuloodporne DAG jak szef? Rozwój lokalny przy użyciu Apache Airflow i Docker Compose

Milena Kapciak
Milena Kapciak
May 6, 2025
5 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

W świecie, w którym coraz więcej organizacji kieruje się danymi, ilość danych intensywnie rośnie, a platformy analityczne przechodzą do chmury i stają się coraz bardziej skomplikowane w wdrażaniu, inżynierowie danych nadal chcą dostarczać najwyższej jakości odpowiedzi na pytania biznesowe. Apache Airflow jest dobrze znanym narzędziem do tworzenia, planowania i monitorowania przepływów pracy danych. W tym artykule opisuję ulepszenie wprowadzone w naszym projekcie, które sprawia, że szybciej dostarczamy DAG lepszej jakości.

  1. Dlaczego potrzebujemy lokalnego środowiska?
  2. Lokalne środowisko dla Apache Airflow
  3. Docker Compose jako rozwiązanie
  4. Zalety lokalnego środowiska Airflow opartego na Docker Compose w porównaniu ze środowiskiem zdalnym
  5. Przypadki użycia dla lokalnego środowiska przepływu powietrza opartego na Docker Compose

Dlaczego potrzebujemy lokalnego środowiska?

Jako programiści i inżynierowie danych chcemy dostarczać wysokiej jakości produkt gotowy do wdrożenia produkcyjnego bez błędów i problemów z wydajnością. Aby osiągnąć ten cel, wykorzystujemy lokalne środowiska do opracowywania, testowania i optymalizacji naszego kodu.

Lokalne środowisko dla Apache Airflow

Czasami środowiska produkcyjne są bardzo złożone, na przykład wykorzystują Kubernetes klastry i połączenia z usługami w chmurze, a wdrożenie zajmuje dużo czasu. Jak dokonać rozsądnego uproszczenia i przetestować swój kod? Uczmy się na przykładzie Przepływ powietrza ApacheW poprzednim artykule pisaliśmy o przypadkach użycia i ogólnym przeznaczeniu Apache Airflow.Jeśli jesteś nowy w tym temacie gorąco polecam przyjrzeć się https://dsstream.com/when-should-you-consider-using-apache-airflow-use-cases/Zakładam, że znasz Airflow, używasz go stale i zastanawiasz się, jaki jest lepszy sposób pisania i testowania DAG. Nie jesteś sam, mamy ten sam temat podczas naszych spotkań retro 😊 Nasze środowisko produkcyjne i preprod działa w chmurze przy użyciu silnika Kubernetes, synchronizacja DAG zajmowała nam za każdym razem około 2 do 5 minut, więc dla wydajnego rozwoju jest to o wiele zbyt długa.Aby szybciej dostarczać wysokiej jakości rurociągi, postanowiliśmy rozwinąć lokalne środowiska Airflow. Lokalne korzystanie z Kubernetes było dla nas zbyt dużym obciążeniem, ponieważ chcemy skupić się na rozwoju DAG, a nie na konfiguracji. Wybraliśmy prostsze rozwiązanie i użyliśmy Docker Compose.

Docker Compose jako rozwiązanie

Docker Compose to narzędzie do definiowania i uruchamiania aplikacji Docker z wieloma kontenerami. Dzięki Compose możesz ustawić żądaną liczbę kontenerów, ich kompilacje i projekty pamięci masowej, a następnie za pomocą jednego zestawu poleceń możesz budować, uruchamiać i konfigurować wszystkie kontenery. Jest to świetne rozwiązanie do tworzenia i testowania.Istnieje oficjalny plik Docker Compose, który udostępnił nam Społeczność Airflow, jednak aby lepiej odzwierciedlać ustawienia produkcji, dostosowujemy go trochę. Dodaliśmy biblioteki takie jak black, pylint i pytest, aby sprawdzić kod i skrypty pomagające nam w odbudowie obrazu i ustawieniach połączenia w chmurze.

Zalety lokalnego środowiska Airflow opartego na Docker Compose w porównaniu ze środowiskiem zdalnym

Główne zalety, które odkryliśmy przy użyciu lokalnego środowiska Airflow na Docker-Compose to: - szybka aktualizacja DAG - katalog z DAG jest montowany jako wolumen, aktualizacja DAG jest tak szybka jak wartości parametru SCHEDULER_DAG_DIR_LIST_INTERVAL EASY LOGS ACCESS, który może być sekundy - łatwy dostęp do dzienników - katalog z logami jest również montowany jako wolumen i daje nam możliwość szybkiego grep, to może po prostu czytać pliki dziennika - łatwe do zmiany konfiguracji - używamy konfiguracji w pliku.env, pozwala nam na przejrzystą zmianę parametrów bez zastąpienia airflow.cfg i daje nam możliwość posiadamy wiele plików.env i łatwo przełączaj się między konfiguracją.- łatwy do ponownego wdrożenia obrazu - mamy pełną kontrolę nad środowiskiemPrzeczytaj więcej o konfiguracji Airflow 2.0 z wersją i serializacją DAG tutaj.

Przypadki użycia dla lokalnego środowiska przepływu powietrza opartego na Docker Compose

Lokalne środowisko Airflow z Docker-Compose było dla nas pomocne nie tylko przy tworzeniu DAG, ale również było bardzo pomocne, gdy chcemy: - uaktualnić wersję Airflow, - dodać zależności Pythona, - przetestować nowe wersje bibliotek - przetestować nową integrację (jak BigQuery), kiedy zastanawialiśmy się od czego zacząć, użyliśmy Cloud SDK z osobistymi poświadczeniami i sprawić, aby rozwój był szybki i wydajny.Jeśli spotkasz podobne wyzwania w swojej pracy i chciałbyś wymienić doświadczenia lub skorzystaj z naszego wsparcia Skontaktuj się z nami.

Share this post
Cloud Computing
Milena Kapciak
MORE POSTS BY THIS AUTHOR
Milena Kapciak

Curious how we can support your business?

TALK TO US