Dlaczego warto zintegrować Databricks z repozytorium kodu?

Od prawie 3 lat pracuję z Azure Databricks. Bardzo chwalę sobie to środowisko - jest wygodne do dewelopmentu, wydajne i dobrze pomyślane do pracy zespołowej.
Początkowo, gdy robiłem dewelopment, zmodyfikowany notebook wrzucałem do gita w ten sposób, że pobierałem go na swój komputer. Później przy użyciu SourceTree wrzucałem do repozytorium. Jakoś ciągle brakowało mi jednak czasu na połączenie Databricks bezpośrednio z gitem (choć oczywiście nie ma przy tym dużo roboty).
Kiedy kończyłem dzień pracy, czasami brakowało z kolei 5-10 minut, żeby zmodyfikowany kod wrzucić do repozytorium. To niby niewielki problem, bo zmieniona wersja znajdowała się na środowisku deweloperskim, a jednak tego nie robiłem.
Pewnego dnia pojawiły się jednak nieoczekiwane problemy - najpierw z odpaleniem klastra Databricksowego, potem przez chwilę nie chciał uruchomić się cały workspace. Po jakiejś godzinie wszystko zaczęło działać. Z przerażeniem zauważyłem jednak, że notebooki, które intensywnie dewelopowałem przez ostatnie dni są w starej wersji i nie zawierają zmian z kilku ostatnich dni! Na szczęście po 2-3 godzinach pojawiły się właściwe wersje. Domyślam się, że gdzieś po Azure’owej stronie padł workspace Databricks, na którym pracowałem. Po awarii podniesiono go z backupu sprzed kilku dni, a najnowsze zmiany zostały odzyskane pewnie z przyrostowych backupów. Zajęło to jednak kilka godzin. Cała sytuacja skończyła się dobrze, ale wystarczająco się wystraszyłem, żeby od razu zintegrować Databricks z repozytorium kodu i dzięki temu zapisywać zmianę prostym Save now.

Rys. 1. Połączenie Databricks z repozytorium kodu umożliwia wygodne zapisywanie zmiany przy użyciu "Save now"
Każdy z nas, informatyków, zdaje sobie sprawę z oczywistości takich rzeczy jak wersjonowanie kodu, nierobienie zmian bezpośrednio na produkcji, dokumentowanie kodu, itd. Czasami jednak z powodu pilności wprowadzanej poprawki, kolejnego zadania czekającego w kolejce, a może po prostu z lenistwa, zapominamy o tych oczywistościach. Zakładamy, że to uzupełnimy w wolnej chwili, ale ta wolna chwila często (na ogół?) jakoś nie chce nadejść.
Rozwiązaniem jest zastąpienie wytycznych dla programisty/testera/administratora możliwie jak najszerszą automatyzacją. W przypadku pracy w chmurze Azure naturalnym rozwiązaniem do zarządzania kodem, weryfikacji jego poprawności i automatyzacji wdrożenia jest Azure DevOps.
Na koniec, chciałbym zachęcić do obejrzenia filmiku o Databricks, w którym razem z Bartkiem Graczykiem z Microsoft opowiadamy, jak rozszerzyć procesy tego oprogramowania funkcjonalnościami Azure DevOps.
Andrzej Szczechla BI/BigData Architect w BitPeak andrzej.szczechla@bitpeak.pl