Apache wydał nową wersję Airflow. Każdy, kto korzysta z tego narzędzia, wie, że nawet drobne zmiany mogą całkowicie zmienić sposób działania DAG-ów lub całkowicie je zablokować. Apache Airflow w wersji 2.0 nie jest jeszcze dostępny na platformach chmurowych, ale Data Pipeline to nasza domena, więc recenzujemy nowości. Poniżej opisujemy nasze pierwsze wrażenia i zmiany, na które warto się przygotować w głównej wersji.

Airflow 2.0 już jest – największe różnice między Airflow 1.10.x a 2.0
Nowy interfejs użytkownika, Airflow
Airflow 2.0 otrzymał zupełnie nowy wygląd oparty na module Flask app builder, więc teraz, dzięki nowemu dashboardowi, łatwiej jest znaleźć potrzebne informacje i nawigować po swoich DAG-ach. W tej wersji pojawiły się dodatkowe filtry ułatwiające wyszukiwanie konkretnych diagramów i wyświetlanych tagów.


Ekran Dag Run również zyskał nowy układ z dodatkowymi informacjami, takimi jak „Run type”, „External Trigger” czy informacje o zastosowanej konfiguracji.
Na ekranie zadania znajdziesz pole z sekcją dokumentacji, co może być bardzo pomocne w przekazywaniu wiedzy z fazy developmentu do fazy wsparcia. Pojawił się także bardzo przydatny przełącznik „Auto-refresh” na ekranie DAG. Jeśli monitorujesz wykonanie kodu na wykresie, możesz go włączyć i skupić się na innych zadaniach.
Jeśli tworzysz bardzo złożony DAG z wieloma zadaniami, możesz agregować zadania w logiczne grupy. To rozwiązanie pomaga zidentyfikować, na którym etapie proces się zatrzymał. Pomyśl, jak trudno byłoby określić, w którym kroku proces ETL się nie powiódł, jeśli Twój DAG ma setki zadań. Teraz możesz grupować je w sekcje, a nawet zagnieżdżać sekcje w sekcjach, by łatwiej znaleźć problematyczną grupę logiczną.


Czasem nawet zespół programistów stosujący standardy kodowania ma trudność ze znalezieniem, gdzie wykorzystywane są połączenia. Nowa wersja Airflow, oprócz dodania nowych typów połączeń, posiada także pole opisu, które ułatwia identyfikację, do czego dane połączenie służy.

Kolejną ciekawą częścią są „plugins” dostępne w menu „Admin”. Ta strona dostarcza informacji o zainstalowanych pluginach. Może nie jest to pełny silnik zarządzania pluginami, ale oferuje informacje o zainstalowanych rozszerzeniach i pomaga programistom zidentyfikować konflikty, jeśli nie mają dostępu administracyjnego do systemu.

Airflow jest coraz częściej wykorzystywany jako komponent większych systemów. Jeśli rozważasz integrację swojego systemu z Airflow, wiedz, że obecnie masz do dyspozycji dobrą dokumentację API. Używasz Swaggera? Proszę bardzo. Nie znasz Swaggera, ale znasz Redoc? Nie ma problemu. Nowa wersja Airflow zapewnia dobrze udokumentowane API dla obu komponentów. Dzięki temu możesz korzystać z Airflow bez części interfejsu użytkownika.


Przeprojektowany scheduler, Airflow
W poprzednich wersjach mogłeś doświadczyć problemów z wykonywaniem wielu DAG-ów z powodu błędów schedulera, np.:
- opóźnienia w podjęciu zadania (lag przy przełączaniu z jednego zadania na kolejne),
- problemy z retry lub dystrybucją do workerów.
Scheduler to kluczowa funkcjonalność Apache Airflow. W drugiej wersji skupiono się na poprawie kluczowych elementów, by zredukować opóźnienia i umożliwić uruchamianie wielu schedulerów jednocześnie (horizontal scaling) bez utraty zadań podczas replikacji schedulera. Nowa wersja optymalizuje także zużycie zasobów – scheduler działa szybciej bez zwiększania zużycia CPU czy pamięci. Wersja 2.0 zapewnia manifest High-Availability, więc jeśli system używa więcej niż jednego schedulera, oczekujemy zerowych przestojów. Jest to możliwe, ponieważ każdy scheduler działa w trybie niezależnym.
To rozwiązanie poprawia wydajność wykonywania wielu DAG-ów równolegle; w niektórych testach wydajność wzrosła dziesięciokrotnie.

REST API
Airflow może być teraz pełnoprawnym narzędziem do zarządzania. Dzięki REST API możesz sprawdzać wszystkie DAG-i, uruchamiać je i zarządzać instancjami zadań. To tylko niewielka część możliwości tego API. Pozwala ono dodawać nowe połączenia, ale także je listować. API dostarcza informacji o istniejących połączeniach, więc możesz wykorzystać to w innych systemach. Możliwe jest odczytywanie zmiennych przechowywanych w Airflow lub wyników XCom, więc możesz śledzić wyniki niektórych zadań podczas przetwarzania DAG-a. Oczywiście możesz także łatwo kontrolować wykonanie DAG-ów, w tym uruchamianie DAG run z określoną konfiguracją lub przeglądać prostą reprezentację DAG-a.
Smart Sensor
Airflow 2.0 oferuje rozszerzony operator Sensor o nazwie SmartSensor operator. SmartSensor operator potrafi sprawdzać status zadań w trybie batch i przechowywać informacje o tym sensorze w bazie danych. Poprawia to wydajność i rozwiązuje wcześniejsze problemy z obciążeniem sensorów.
DAG Versioning
Poprzednia wersja Airflow pozwalała dodawać nowe zadania do istniejącego DAG-a, ale miało to niepożądane skutki, takie jak osierocone zadania (tasks without status) w DagRun, co oznaczało, że mogłeś znaleźć zadania dodane w nowej wersji DAG-a w poprzednim wykonaniu. Dlatego mogły pojawić się problemy z przeglądaniem logów lub kodu przypisanego do aktualnego DagRun. W wersji 2.0 pojawiło się dodatkowe wsparcie dla przechowywania wielu wersji zserializowanych DAG-ów, poprawnie pokazując relacje między DagRun a DAG-ami.
DAG Serialization
Nowa wersja zmieniła sposób, w jaki serwer systemowy parsuje DAG-i. W poprzedniej wersji WebServer i Scheduler musiały mieć dostęp do pliku DAG. W nowej wersji Airflow tylko scheduler potrzebuje dostępu do pliku DAG, a do parsowania DAG-ów wystarczy dostęp do Metadata Database, a Web Server potrzebuje tylko dostępu do metadanych. Z tej zmiany wynika:
- High availability dla schedulera
- DAG versioning
- Szybsze wdrażanie DAG-ów
- Lazy DAG loading
- Web server jest teraz stateless
Nowy sposób definiowania DAG-ów
Nowa wersja oferuje nowy sposób definiowania DAG-ów z użyciem TaskFlow API. Teraz możesz używać dekoratorów Pythona do definiowania swojego DAG-a.
W odniesieniu do powyższego przykładu, możesz szybciej pisać proste DAG-i w czystym Pythonie z czytelnym zarządzaniem zależnościami. XCom push jest także łatwiejszy w użyciu. Dodatkowo nowa wersja oferuje dekoratory zadań i obsługuje własny backend XCom.
Co jeszcze?
Airflow 2.0 nie jest monolitem. Został podzielony na core i 61 pakietów providerów. Każdy z tych pakietów jest przeznaczony dla konkretnej usługi zewnętrznej, bazy danych (MySQL, Postgres) lub protokołu (HTTP/FTP). Dzięki temu możesz wykonać customową instalację Airflow i zbudować narzędzie zgodnie z własnymi wymaganiami.
Dodatkowo zyskujesz:
- Rozszerzone wsparcie dla Kubernetes Executor
- Plugin manager
- KEDA Queues
Stream processing vs batch processing- przewodnik
Cloud backup services jak wybrac najlepsza opcje
Najlepszy cloud storage- dla biznesu w 2021