Scroll to top
en pl

Porównanie narzędzi DevOps: GitLab i Azure DevOps


Piotr Zięba - 21 maja 2020 - 0 comments

Porównanie liderów rynku narzędzi DevOps, takich jak GitLab i Azure, może być dość skomplikowanym procesem, jeśli nie niemożliwym. Wynika to z faktu, że narzędzia DevOps są zazwyczaj bardzo rozbudowane i oferują szeroki wachlarz funkcji. W tym artykule postaramy się obiektywnie omówić różnice pomiędzy systemami GitLab self-managed i Azure DevOps Server. 

Na stronach internetowych producenci przedstawiają swoje narzędzia w jak najlepszym świetle. Według firmy GitLab, ich produkt ma więcej zalet niż produkt Microsoftu. Analogicznie – Microsoft, w porównaniu z narzędziem GitLab, ukazuje bardzo długą listę mocnych stron Azure DevOps.

Przyglądając się zestawieniom wad i zalet narzędzi DevOps, w obu przypadkach można odnieść wrażenie, że niektóre różnice są bardzo subtelne, a kluczowe funkcje dublują się na listach. Jedynym sposobem na wychwycenie nieścisłości i odarcie merytorycznej treści z marketingowej otoczki jest samodzielna weryfikacja każdego punktu. Pewną trudność stanowi brak obiektywnie ustalonych kryteriów – kategorii czy obszarów, w obrębie których można byłoby dokonać takiego porównania. W swoich artykułach GitLab uwzględnił 50 funkcji, podczas gdy Microsoft przedstawił ich aż 130. Aby jeszcze lepiej zobrazować skalę problemu porównania tych narzędzi, wystarczy wpisać w Google frazę: “Azure DevOps vs. GitLab”. Znalezienie obiektywnego porównania jest niemal niemożliwe.


Aby ustandaryzować to zestawienie, na cel porównania wybrałem wady i zalety przedstawione w artykułach GitLab i Microsoft. Porównałem również koszty obu rozwiązań.

Zalety GitLab

Wśród zalet, które potwierdziliśmy porównując funkcje obu rozwiązań, można wymienić:

  • zamykanie dyskusji,
  • komentowanie obrazów,
  • dyskusje i komentarze na merge/pull request,
  • tworzenie merge/pull request na podstawie wiadomości e-mail,
  • oznaczenie użytkownika, który po raz pierwszy dodaje coś do repozytorium,
  • podgląd zmian w dedykowanej aplikacji,
  • zasady dodawania zatwierdzeń przy code review,
  • łatwa migracja z rozwiązań innych dostawców,
  • limity wielkości (globalne, dla grup, dla projektów),
  • odrzucanie niepodpisanych commitów,
  • IDE w przeglądarce,
  • terminal Web w IDE w przeglądarce,
  • możliwość testowania zmian zrealizowanych w IDE przeglądarki przed dodaniem ich do repozytorium,
  • wersjonowanie merge/pull request,
  • chronione tagi,
  • wbudowane i własne schematy projektów,
  • tworzenie nowych projektów przy pomocy komendy git push,
  • brak duplikacji obiektów przy tworzeniu forka z brancha,
  • podgląd wyniku pipeline na widoku merge/pull request,
  • wsparcie dla podpisywania commitów dla standardu X.509,
  • wsparcie dla środowiska opartego na AWS i Google Cloud,
  • możliwość rozwiązywania konfliktów w przeglądarce,
  • opcja podglądu zmerge’owanych gałęzi.

GitLab wymienia również jako zaletę podpisywanie commitów kluczem GPG, jednak jest to duplikat innej funkcji wymienionej na liście.

Wady GitLab

Nie istnieją systemy doskonałe, a systemy stworzone w konkretnym celu nie mogą zawierać funkcji niezgodnych z ich profilem. Wady systemu GitLab to:

  • brak natywnego wsparcia przy publikacji do chmur AWS, Google i Azure,
  • brak wsparcia dla procesorów o architekturze ARM,
  • brak wsparcia dla procesorów dla typu x86/amd64 processors,
  • w UI brak mechanizmu oddzielającego publikacje na różne środowiska (istnieje tylko prosta opcja manualnej interakcji w procesie),
  • brak wsparcia dla testów jednostkowych dla technologii .NET i .NETCore (GitLab wspiera testy w oparciu o JUnit).

Jednak lista wad, z którymi nie można się zgodzić, jest nieco dłuższa. Microsoft w swoim porównaniu podaje brak dynamicznej analizy kodu w procesie budowy, brak wsparcia dla testów jednostkowych w Java, brak właściciela kodu w wyborze osoby do CR – wszystkie te funkcje są dostępne w GitLab. Podobnie jest w przypadku wsparcia natywnego dla integracji z centrum testowania aplikacji mobilnych i możliwości publikacji do Microsoft Store – nie są to wady, ponieważ wszystkie pipeline pisze się w oparciu o plik YAML, a możliwość integracji istnieje w przypadku każdego rozwiązania wyposażonego w API. Jako wady GitLaba Microsoft wymienia również brak wsparcia w integracji z zewnętrznymi repozytoriami Git i TFVC oraz brak integracji z SVN, GitHub, Bitbucket itd. Integracja taka jest możliwa z wykorzystaniem mechanizmu odbicia lustrzanego.

Zalety Azure DevOps

Podobnie jak w przypadku GitLab, niektóre funkcje Azure DevOps nie czynią tego narzędzia wyjątkowym, ponieważ są one dostępne również w przypadku innych rozwiązań. Rzeczywiste zalety, wymienione przez Microsoft, to:

  • budowanie aplikacji wywołanych przez commity może być zbierane w oknach czasowych,
  • wizualny edytor do budowania i publikowania,
  • wsparcie dla innych typów testów, takich jak: NUnit, xUnit, VSTests,
  • dostarczanie szczegółowych raportów związanych z testowaniem,
  • łatwość wykorzystania środowisk testowych w AWS i Azure,
  • natywna integracja z Azure,
  • Marketplace dostarczający dodatkowych darmowych narzędzi i/lub komercyjnych rozszerzeń,
  • niestandardowy serwer Git do obsługi organizacji korporacyjnych,
  • obsługa GVFS dla korporacyjnych repozytoriów Git,
  • ograniczona liczba referencji dla klientów dla dużej liczby branchy,
  • odzyskiwanie usuniętych branchy,
  • semantyczne przeszukiwanie kodu.

Wyżej wymienione funkcje faktycznie dają narzędziu Azure DevOps przewagę nad konkurencją, jednak Microsoft na swojej liście umieszcza również wiele funkcji, które są dostępne także w oprogramowaniu GitLab. Należą do nich:

Dodatkowo Microsoft w kilku przypadkach nie podaje dokładnej specyfikacji danej funkcji, a ich odpowiedniki można znaleźć w GitLabie: 

Pozostałe, budzące wątpliwość, funkcje to:

  • natywne wsparcie dla Dashboard Azure (zawiera się w natywnym wsparciu dla Azure),
  • kolejka dla merge/pull request dla często modyfikowanych repozytoriów (czy to dowód słabej wydajności?),
  • polityka dla danych branchu na podstawie URL (w GitLab URL repozytorium związany jest z projektem, a ten musi być unikalny, a więc jest to ta sama funkcja),
  • merge’owanie zmian po spełnieniu odpowiedniej polityki (obsługa przy pomocy pipeline).

Wady Azure DevOps

Podobnie jak w przypadku GitLab, tutaj lista również jest krótsza. Producenci sami wskazują na takie braki jak:

  • brak wsparcia dla skryptów YAML w procesie publikacji,
  • wsparcie tylko dla testów typu VSTests przy dynamicznej analizie kodu,
  • brak natywnego wsparcia dla telemetrii środowiska wykonawczego,
  • brak wbudowanego systemu do zarządzania sekretami,
  • brak wbudowanego analizatora bezpieczeństwa.

Bazując na naszym doświadczeniu z narzędziami DevOps, zauważyliśmy że w naszej opinii wadą Azure DevOps jest niestabilność agentów na systemach innych niż MS Windows.

W zestawieniu jest również podany brak bufora (cache) wykorzystywanego przy budowaniu aplikacji, jednak ten problem jest już nieaktualny.

Porównanie kosztów GitLab i Azure DevOps

GitLab oferuje cztery plany finansowania bez dodatkowych kosztów. W przypadku Azure DevOps użytkownik ma do dyspozycji dwa plany finansowania, które również wyglądają korzystnie, jednak należy liczyć się z dodatkowymi kosztami. Porównanie planów cenowych ilustruje poniższa tabela.

GitLab vs. Azure DevOps – podsumowanie

Na pierwszy rzut oka Azure DevOps nie odstaje od GitLab’a i wydaje się tańszy, ale po głębszej analizie okazuje się, że GitLab posiada więcej istotnych funkcji niż Azure DevOps, np. zarządzanie sekretami, schematy projektów, wsparcie dla AWS i Google Cloud dla serwera narzędzia, IDE w przeglądarce. 

Tak naprawdę oba narzędzia, uwzględniając wszystkie rozszerzenia i dodatkowe pakiety, mają podobne funkcje, a podstawową różnicą jest to, że Azure DevOps mocno przywiązuje użytkownika do całego ekosystemu Microsoft oraz jest tańszy tylko pozornie. Porównując oba produkty można odnieść wrażenie, że Microsoft próbuje ukryć dodatkowe koszty i nie jest tak transparentny, jak GitLab, co może sugerować, że końcowy koszt jest wyższy, niż przedstawiony w niniejszym porównaniu.

Aby z czystym sumieniem rekomendować dane narzędzie, należy za każdym razem przeanalizować potrzeby konkretnych projektów i firm.

Eksperci w Deviniti mają bogate doświadczenie w projektach związanych z obszarem DevOps. Jesteśmy autoryzowanym partnerem GitLaba, ale korzystamy również z innych rozwiązań. Wyrusz z nami w podróż po galaktyce możliwości i zobacz, co możemy zrobić dla rozwoju Twojej firmy!

Sprawdź Deviniti Cloud Services

Przenieś się z nami do chmury!

Related posts