Gitlab und Bitbucket im Vergleich
DevOps Plattformen können massive Aufwände automatisieren und für die Wirtschaftlichkeit der Software Entwicklung ein unverzichtbarer Bonus sein. In diesem Artikel werden wir die DevOps Plattformen Gitlab und Bitbacket vergleichen und anschließend werden wir eine Empfehlung aussprechen.
Als Webrunners Team haben wir mit beiden Plattformen Erfahrungen gesammelt und möchten diese mit euch teilen – die SaaS und selbst gehosteten Varianten werden natürlich auch zusätzlich bewertet. Selbstverständlich können die Erfahrungen und die persönlichen Kriterien in den jeweiligen Unternehmensabläufen variieren, daher spiegeln die folgenden Erkenntnisse nur unsere persönlichen Erfahrungen wieder.
Unsere Kriterien und Vergleiche
- Benutzbarkeit / User Experience
- Integration zu Drittsystemen
- Preis und Lizensmodelle
- Sicherheit / Verfügbarkeit
- Continuous Integration / Continuous Deployment
- Entwickler Erfahrung und Zufriedenheit (GIT, Reviews, Merge Requests)
- Weiterentwicklung
Benutzbarkeit und User Experience
Gitlab: Benutzbarkeit / UX
Für einen so großen Umfang, ist Gitlab eine gute Plattform mit schnellen Ladezeiten – allerdings stehen Umfang und Usability im Konflikt. Besonders am Anfang hat man Schwierigkeiten sich eine Übersicht über die unzählichen Einstellungsmöglichkeiten zu verschaffen. Benutzer, die technisch nicht sehr begabt sind, könnte die Einrichtung einige Nerven kosten. Allerdings ist Gitlab für ausgebildete DevOps und Entwickler gedacht die in der Regel nach ein wenig Einarbeitungszeit gut damit zurecht kommen sollten.
Bewertung: ★★★★☆
Bitbucket: Benutzbarkeit / UX
Die Benutzeroberfläche von Bitbucket ist sehr einfach gehalten und kann meistens leicht verstanden werden. Allerdings ist die allgemeine Benutzbarkeit, für unser Empfinden, eher mangelhaft, da die Navigation sehr langsam und träge ist – Das kostet nicht nur Arbeitszeit, sondern auch viele Nerven.
Bewertung: ★★★☆☆
Integration zu anderer Software und Plattformen
Gitlab: Integrationsmöglichkeiten
Die Integrationsmöglichkeiten von Gitlab sind sehr vielfältig und decken alle unsere Standardanforderungen ab. Insbesondere hervozuheben sind die vielfältigen Möglichkeiten der Benutzer Benachrichtigung per Webhook, Slack, HipChat etc. Zusätzlich bietet Gitlab die Spiegelung eines Repositories auf z.B. Bitbucket oder Github an. Darüber hinaus wird das synchronisiernen von Aufgaben/Tickets mit anderen Projekt-Management-Plattformen unterschützt. Eine dieser Projekt-Management-Platfromen ist JIRA, bei der Aufgaben, Kommentare und Merge Request/Pull Request ständig synchronisiert werden.
Mehr Information dazu, gibt es hier.
Bewertung: ★★★★★
Bitbucket: Integrationsmöglichkeiten
Wie auch Gitlab, hat Bitbucket auch eine vielfältige Integrationsmöglichkeiten und deckt ebenfalls unsere Standardanforderungen ab. Unsere Lieblingsintegration ist das trello-board, welches im Vergleich zu JIRA ein vereinfachtes Kanbanboard Ticket-System bietet.
Bewertung: ★★★★★
Kosten und Lizenzmodelle
Gitlab: Preise
Gitlab kann mit allen Hauptfunktionen kostenlos selbst gehostet werden. Jedoch muss man bedenken, dass auch die SaaS Version all diese Hauptfunktionen kostenfrei zur Verfügung stellt – So ist die selbst gehostete Option meist teurer, da man die Kosten für den Server selbstträgt. Allerdings, muss man abwägen, ob man möchte, dass die eigenen Entwicklungen auf einem anderem Server liegen.
Das “pro Nutzer / im Monat” Preis-Modell, für die kleinen zusätzlichen Funktionen, wird unserer Meinung nach schnell unverhältnismässig teuer. Hier hätte Gitlab eine besseres Preis-Modell für die zusätzliche Varianten evaluieren können. Allerding sind wir mit den kostenlosen Hauptfunktionen bereits so zufrieden, dass die andere Varianten für uns gar nicht wirklich relevant sind.
Bewertung: ★★★★☆
Kostenfrei (0 $ pro Nutzer / im Monat):
- Beinhaltet alle Hauptfunktionen wie Continuous Integration/Continuous Deployment / Ticket Board / Code Intelligenz von sourcegraph (kann auch selbst gehostet werden – gitlab-ce)
- Einer Gruppe stehen 2000 Minuten für Continuous Integration/Continuous Deployment pro Monat zur Verfügung. Wird die Plattform selbst gehostet stehen beliebige Zeiträume zur Verfügung.
Bronze (4 $ pro Nutzer / im Monat):
- Zusätzliche Funktionen zur Automatisierung
Silver (19 $ pro Nutzer / im Monat):
- Zusätzliche Funktionen zur Skalierbarkeit der Anwendungen
- Zusätzliche Funktionen zur Optimierung, Priorisierung und Sicherheit
Gold (99 $ pro Nutzer / im Monat):
- Zusätzliche Funktionen zur Optimierung, Priorisierung und Sicherheit
Bitbucket: Preise
Auch Bitbucket kommt mit seiner kostenfreie Version als Starter Variante daher, welche für viele Hobby Entwickler oder private Projekte völlig ausreichend sein kann. Für ein Unternehmen ist die kostenfreie Version keine Option, da diese zu eingeschränkt ist.
Die Preis Varianten unterscheiden sich mehr bei den Limitierungen als bei den Funktionen.
Alle Preis Modelle sind für uns realistisch und gut nachvollziehbar.
Bewertung: ★★★★☆
Kostenfrei (Kostenlos / unbefristet):
- Hauptfunktionen
- 5 Benutzer
- 50 Minuten für Continuous Integration/Continuous Deployment pro Monat zur Verfügung
Standard (3 $ pro Nutzer / im Monat):
- Hauptfunktionen
- Unbegrenzte Benutzer
- 2500 Minuten für Continuous Integration/Continuous Deployment pro Monat zur Verfügung
Premium (6 $ pro Nutzer / im Monat):
- Hauptfunktionen und erweiterte Funktionen
- Unbegrenzte Benutzer
- 3500 Minuten für Continuous Integration/Continuous Deployment pro Monat zur Verfügung.
- Die erweiterten Funktionen sind: Deployment Berechtigungen, Ip-Whitelisting und Smart mirroring
Sicherheit / Verfügbarkeit
Gitlab: Sicherheit / Verfügbarkeit
Die SaaS Version von Gitlab wird grundsätzlich auf AWS gehostet und hat eine gute Verfügbarkeit. Manchmal kommt es aber auch vor, dass die Zugriffszeiten sich verzögern. In seltenen Fällen kann es auch zu Serverausfällen kommen. Zurückzuführen ist das auf die Anfänge von Gitlab: Gitlab war am Anfang ein selbst gehostetes Opensource Projekt, welches in Ruby-on-rails geschrieben ist. Der Focus von Ruby als interpretierte abstrakte Sprache, liegt jedoch mit weniger auf Performance. Die Entwickler arbeiten ständig an Optimierungen und publizieren ihre Forschung wie der folgende Artikel How a fix in Go 1.9 sped up our Gitaly service by 30x zeigt.
Alternativ kann man Gitlab auf einem eigenem Server selber hosten, um Serverausfälle zu vermeiden oder Projekt- Informationen auf eigenen Maschinen persistieren möchte. Diese Alternative hat natürlich den Nachteil, dass man selber die Plattform pflegen und beobachten muss.
Bewertung: ★★★★☆
Bitbucket: Sicherheit / Verfügbarkeit
Auch Bitbucket hat, wie Gitlab, bei der SaaS Umsetzung mit technischen Herausforderungen zu kämpfen. In selten Fällen kommt es zu Serverausfällen. Bitbucket kann man mal auch selber hosten, dabei werden allerdings die gleichen Preise fällig wie in der SaaS Nutzung.
Die SaaS Instanz ist sehr langsam und hat eine lange Antwortszeit in der Nutzung. Wir haben Bitbucket bisher noch nicht selber gehostet, gehen aber davon aus, dass sich die Perfomance und die Ladezeit verbessen sollte.
Bewertung: ★★★★☆
Continuous Integration/Continuous Deployment
Gitlab: CI/ CD
Gitlab hat ein sehr umfrangreiches CI/CD Konzept, welches sowohl in der kostenfreien SaaS, als auch in der selbst gehosteten Option wunderbar funktioniert. Bei der selbst gehosteten Option benötigt man eine laufenden Gitlab-Ci-Runner Instanz für das Ausführen der CI Prozesse. Für diese stehen, wie für den Rest der Anwendung offizelle Docker Images zur Verfügung.
Die CI/CD Konfiguration erfolgt über eine zentrale gitlab.yml Datei und bietet die Möglichkeit viele verschiedene Prozesse zu automatisieren. So kann man z.B. mehrere Prozesse parallel laufen lassen und in diesen z.B. auch Docker Instanzen starten. Es gibt zahlreiche Funktionen für die CI/CD von Gitlab, welche ständig von der Community erweitert werden.
Bewertung: ★★★★★
Bitbucket: CI/ CD
Auch das CI System von Bitbucket basiert auf einzelnen Prozessen, die in Containern ausgeführt werden können. Die Anpassungen der Prozesse sind eingeschränkt und es fehlen viele gewünschte Funktionalitäten, wie z.B. eine automatische Veröffentlichung bei Dateiänderungen, verschiedene Kontexte (mit eigenen Umgebungsvariablen) und selbstdefinierte Aktionen. Dennoch haben wir die Erfahrung gemacht, dass sich die Prozesse manchmal aufhängen und dann erst nach zwei Stunden beenden. Ärgerlich daran ist, dass einem aufgrund dieses Bugs 120 Minuten von dem Zeitkontigent abgezogen werden.
Bewertung: ★★★☆☆
Entwickler Erfahrung und Zufriedenheit
Gitlab: Erfahrung und Zufriedenheit
Unsere Entwickler arbeiten sehr gerne mit Gitlab, auch wenn vor kommt, dass die Plattform (SaaS) nicht verfügbar ist und dieses zu Stressmomenten in der Entwicklung führt. Das Ticket-Board wird sowohl für Kunden- als auch für interne Projekte von allen Mitarbeitern gerne benutzt.
Zudem sind die Entwickler mit den Hauptfunktionen von Gitlab zufrieden und haben kein Bedarf nach einem Upgrade. Insbesondere sind Code-Reviews und Merge Requests sehr angenehm zu erarbeiten.
Bewertung: ★★★★☆
Bitbucket: Erfahrung und Zufriedenheit
Das Arbeiten mit Bitbucket kann produktiv sein, allerdings schränkt es uns durch unautomatisierbare Prozessen ein. Die langen Antwortzeiten der SaaS Version führten leider zu frustrierten und unzufriedenen Entwicklern. Die Reviews und MR/PR haben im Großen und Ganzen eine gute Darstellung, wobei bei größeren Code Änderungen der Prozess sehr langsam wird und im schlimmsten Fall der Browser einfriert. Dennoch haben wir auch einige erfolgreiche Projekte mit Bitbucket fertigstellen können.
Bewertung: ★★★☆☆
Weiterentwicklung der DevOps Plattformen
Gitlab: Weiterentwicklung in der Zukunft
Der Umfang der Weiterentwicklung an Gitlab ist enorm und so bietet dieses ständig neue Funktionen. Die Roadmap und die nächsten Veröffentlichungen des Projekts sind transparent und werden zusammen mit der Community erarbeitet. Hier ist die Liste der nächsten Veröffentlichungen.
Bewertung: ★★★★★
Bitbucket: Weiterentwicklung in der Zukunft
Die Weiterentwicklung von Bitbucket ist, im Vergleich zu Gitlab, langsam. Wünsche für neue Funktionen werden kaum erarbeitet und Bugs werden meistens nicht so schnell behoben. Neue Funktionalitäten werden kaum veröffentlicht, wodurch Bitbucket als zukünftiges Produkt für uns nicht mehr in Frage kommt.
Bewertung: ★★☆☆☆
Fazit Gitlab und Bitbucket im Vergleich
Gitlab
- ★★★★☆ Benutzbarkeit / UX
- ★★★★★ Integration
- ★★★★☆ Preis
- ★★★★☆ Sicherheit / Verfügbarkeit
- ★★★★★ CI/CD
- ★★★★☆ Entwickler Erfahrung und Zufriedenheit (GIT, Reviews, MR)
- ★★★★★ Weiterentwicklung
Summe: ★★★★☆
Bitbucket
- ★★★☆☆ Benutzbarkeit / UX
- ★★★★★ Integration
- ★★★★☆ Preis
- ★★★★☆ Sicherheit / Verfühgbarkeit
- ★★★☆☆ CI/CD
- ★★★☆☆ Entwickler Erfahrung und Zufriedenheit (GIT, Reviews, MR)
- ★★☆☆☆ Weiterentwicklung
Summe: ★★★☆☆
Beide SaaS Versionen haben technische Probleme in der Skalierbarkeit, die zu Frustration führen kann. Bitbucket ist eine vereinfachtes DevOps Plattform, welche für sehr einfache Entwicklungsprozesse gut geeignet ist. Gitlab hat eine unschlagbare kostenlose Version ohne große Einschränkungen und kann auch für mittelständige Unternehmen genutzt werden. Bei Gitlab, sowie bei Bitbucket ist die selbst gehostete Variante definitiv die bessere Lösung, sofern ein Unternehmen in der Lage ist eine eigene Instanz zu pflegen.
Unsere persönliche Empfehlung ist, mit Abstand, die Nutzung der selbst gehostete Community Version von Gitlab (gitlab-ce). Besonders gut gefällt uns, dass Gitlab ein transparentes Opensource-Projekt ist, bei welchem alle Unternehmen gemeinsam an der Entwicklung teilnehmen und davon profitieren können.