Made by Webwirkung

Webentwicklung mit Git als Versionsverwaltung

Webentwicklung mit Git als Versionsverwaltung

Die Arbeit an einem mittleren oder grösseren Webprojekt ist anspruchsvoll und mitunter auch chaotisch. Neben kurzen Releasezyklen sowie unterschiedlichsten Komponenten und Schnittstellen gilt es auch, verteilte Teams zu koordinieren, geänderte Anforderungen umzusetzen und diese schlussendlich zu veröffentlichen. Der Quellcode und die zugehörigen Dateien sind somit ständigen Änderungen unterworfen. Um den Überblick nicht zur verlieren und um effizientes Arbeiten zu ermöglichen, bedarf es eines Systems zur Versionsverwaltung. Nur so wissen alle Beteiligten, wer wann welche Änderungen vorgenommen hat, wobei notfalls auf eine stabile Version zurückgesprungen werden kann. Eines der beliebtesten Tools in diesem Bereich ist «Git». Doch wie funktioniert das smarte Tool von Linux Torvalds, warum ist Git besonders im Bereich der Webentwicklung so populär und welche Herausforderungen müssen Entwickler meistern, wenn sie Git für das automatische Deployment auf einem Live-Server nutzen möchten?

1. Was ist Git?

Bei Git handelt es sich um ein dezentrales und verteiltes System zur Versionsverwaltung. Ursprünglich entwickelte Linux-Initiator Linus Torvalds dieses Tool, um den Quellcode des Linux-Kernels zu verwalten. Heutzutage ist Git als Open-Source-Software unter der «GNU» General Public License frei verfügbar und gilt sowohl bei professionellen Entwicklern als auch bei coolen Kids als eines der beliebtesten Versionsverwaltungssysteme in der Webentwicklung. Im Gegensatz zu zentralen Systemen, wie beispielsweise Apache Subversion (SVN), arbeitet Git nicht mit fortlaufenden Änderungslisten, sondern mit Schnappschüssen des Gesamtsystems. Dabei verfügt jedes Teammitglied über eine vollständige Kopie der Version am lokalen Rechner. Kommt es zu Änderungen, werden diese zuerst lokal getestet und eingecheckt und erst dann auf den Server übertragen und allen anderen Beteiligten zur Verfügung gestellt. Das ermöglicht Entwicklern flexibles und komponentenbasiertes Arbeiten, unabhängig von Zeit und Ort. 

2. Warum ist Git besonders in der Webentwicklung so beliebt?

Agile Ansätze, kurze Releasezyklen und internationale Teams kennzeichnen Projekte im Bereich der Webentwicklung. Dabei sind die Entwickler oftmals über den gesamten Erdball verstreut und nicht jeder ist jederzeit online. Git unterstützt diese Umstände und genau das ist eine der grössten Stärken des Tools. Zum einen verfügt jedes Teammitglied über ein eigenes Repository und kann lokal an Änderungen arbeiten und diese überprüfen. Erst wenn die Änderungen getestet sind, veröffentlicht und synchronisiert man diese. So lassen sich Quellcodes einfach austauschen und alle Arbeitsschritte klar nachvollziehen. Zum anderen ist es aber auch möglich, Änderungen mit der Hilfe des Versionsverwaltungssystems direkt auf einem oder mehreren Live-Servern zu veröffentlichen. Diese Art der Automatisierung ist für Entwickler und Kunden nicht nur überaus praktisch und komfortabel, sondern spart zudem viel Zeit, da es den Wartungsaufwand von Webanwendungen auf ein Minimum reduziert.

3. Die Stärken von Git Entwicklung im Überblick

Git zählt nicht nur zu einem der verbreitetsten Versionsverwaltungssysteme der Webentwicklung, sondern auch zu einem der schnellsten. Das ist einerseits dem Umstand geschuldet, dass das lokale Repository Netzwerkzugriffe grösstenteils überflüssig macht. Zum anderen ist das mächtige Tool überaus effizient programmiert und komplett in C geschrieben. So kommt es auch bei vielen Commits nur selten zu Wartezeiten. Git hat jedoch noch eine Reihe weiterer Vorteile.

Aktive Git Community

Git lebt von einer ausserordentlich aktiven Community, wodurch man bei Problemen schnelle Hilfestellung bekommt. Zudem gibt es eine grosse Anzahl an Tutorials, Videos und Foren in den unterschiedlichsten Sprachen, sodass Teammitglieder aus verschiedenen Ländern sich rasch und umfassend in die Materie einarbeiten können.

Verteilte Entwicklung

Eine verteilte Entwicklung vereinfacht die Skalierung und erhöht die Ausfallsicherheit. So können Entwickler Änderungen auch dann einchecken, wenn andere Teammitglieder Teile des Quellcodes beschädigt haben. Zudem lassen sich während der Programmierung Zwischenstände auch ohne aufrechte Internetverbindung einfach versionieren.

Agile Entwicklung

Immer mehr Webprojekte setzen auf agile Entwicklung mit kurzen Releasezyklen. Dabei ermöglicht Git die Entwicklung von Features und Komponenten, losgelöst vom Gesamtprojekt. So ermutigt man Entwickler dazu, auch kleine Änderungen mit dem Team zu teilen, wodurch neue Releases oftmals weitaus mehr Features und Bugfixes beinhalten als Veröffentlichungen, die auf monolithischen Entwicklungsansätzen beruhen. 

Verteilte Sicherungskopien

Jeder Entwickler verfügt über eine lokale Kopie des Projekts. Diese Kopie kann als zusätzliches Backup angesehen werden. Gibt es Probleme auf einem lokalen Rechner oder Server, so stehen innerhalb des Teams im Notfall weitere Kopien zur Verfügung, auf die bei Bedarf zurückgegriffen werden kann. 

Git Hosting

Wer keinen eigenen Git Server für seine Projekte einrichten möchte, kann auf einen der zahlreichen Hosting-Anbieter zurückgreifen. Einer der bekanntesten Hosting-Anbieter ist die Open Source Hosting Plattform GitHub, die laut eigenen Angaben weltweit mehr als 28 Millionen Nutzer zählt.

Branching und Merging

Sie können unterschiedliche Branches für jedes Feature oder Entwicklungsthema anlegen. Git führt die Änderungen weitgehend selbstständig zusammen, sofern die Änderungen unterschiedliche Dateien betreffen oder sich an unterschiedlichen Stellen befinden. Dabei dokumentiert man das Zusammenführen einzelner Branches in der Git History, sodass jeder darüber informiert ist, welche Änderungen bereits zusammengefügt wurden.

4. Ändern, vormerken und sichern – Die Basics von Git in aller Kürze

Dateien in Git verfügen über vier Hauptzustände, die jeder Programmierer in der Webentwicklung kennen sollte. Die wichtigsten Zustände sind:

  • Neu «Untracked»
  • Geändert «Modified»
  • Vorgemerkt «Staged»
  • Gesichert «Commited»

Erstellt ein Entwickler eine neue Datei, so erkennt das System diese als «untracked». Analog erkennt Git geänderte Dateien, die man nach einer Änderung als «modified» gekennzeichnet hat. Um die Dateien einzuchecken, verwendet man den Befehl «git add». Dieser merkt sich die ausgewählten Dateien und Ordner für das nächste Commit vor und stellt die Daten in die sogenannte «Staging Area». Um die Dateien zu sichern, muss der Befehl «git commit» ausgeführt werden. Dieser Befehl sichert die Dateien in der lokalen Datenbank. Zusätzlich erscheinen die Dateien im Sourcetree der Git History. Die History wird wiederum über das Kommando «git log» überprüft. Zu diesem Zeitpunkt sind die Änderungen lediglich lokal. Erst wenn der Entwickler die Änderungen über die Synchronisierung am Server anstösst, können die Änderungen von allen Projektmitgliedern abgerufen werden.

Die Hauptbereiche

Um die Hauptzustände zu realisieren, verfügt jedes Projekt in Git über ein sogenanntes Git Verzeichnis, ein lokales Arbeitsverzeichnis und eine Staging Area. Das Git Verzeichnis gilt als Herzstück und wichtigster Teil von Git. Es ist jener Ort, an dem die Metadaten sowie die lokale Datenbank des Projekts gespeichert werden. Dieser Bereich ist auch genau der Teil, der kopiert wird, wenn ein Repository von einem anderen Rechner geklont wird. Im Gegensatz dazu handelt es sich beim Arbeitsverzeichnis um eine spezifische Version des Quellcodes. Die Daten für diesen Bereich werden aus der komprimierten Datenbank bezogen und dann auf die Festplatte gespeichert. Alle neuen Dateien und Änderungen in diesem Verzeichnis wurden noch nicht übertragen und auch nicht zur Übertragung vorgemerkt. Die Staging Area ist schlussendlich lediglich eine einfache Datei, die oftmals auch als Index bezeichnet wird. Alle Änderungen, die für das nächste Commit vorgemerkt wurden, werden in der Staging Area gespeichert. 

Wie synchronisiert man die Daten?

Da das gesamte Repository lokal repliziert wird, haben Entwickler die Möglichkeit, unterschiedliche Versionen des Projekts lokal zu speichern, Speicherpunkte mit dem Team abzugleichen und Änderungen über den Git-Server in die Hauptversion des Projekts zu übertragen. Dabei lassen sich die verschiedenen Änderungen unterschiedlicher Entwickler einfach auf Knopfdruck zusammenführen. Git synchronisiert die Änderungen über HTTPS oder SSH, wobei auch eigene Protokolle zwischen lokalen Rechnern verwendet werden können. Ein zentraler Server ist somit nicht notwendig. Zudem erlaubt Git eine Übertragung nur, wenn keine weitere Übertragung ansteht. Dadurch kommt es zu keinen Blockaden aufgrund unterschiedlicher Commits verschiedener Teammitglieder. Jeder Entwickler ist vielmehr dazu angehalten, die aktuellste Version in seinem lokalen Repository mit den Änderungen zusammenzuführen. So kann kein Code in die Hauptversion gelangen, der nicht mit dem bestehenden Code zusammenpasst. 

5. Automatische Veröffentlichungen auf Live-Servern

Mithilfe von Git ist es möglich, automatische Deployments auf einem Live-Server vorzunehmen. So lassen sich wichtige Change Requests oder dringend benötigte Fehlerkorrekturen schnell ausrollen, ohne zusätzlichen Aufwand zu generieren. Voraussetzung dafür ist ein lokaler Entwicklungsserver mit Git. Auf diesem werden die notwendigen Änderungen initial eingecheckt und überprüft. Spiegelt man die Live-Datenbank auf die lokale Datenbank, können Entwickler hierbei sogar mit Echtdaten testen. Waren die Tests erfolgreich, können sie sämtliche Änderungen auf einen oder mehrere Staging-Server übertragen. Hier erfolgt eine erneute Überprüfung der Gesamtversion. Von diesem Bereich aus gelangen die Aktualisierungen schlussendlich auf den oder die Live-Server.

Damit das Zusammenspiel reibungslos funktioniert, müssen jedoch sowohl die Konfiguration als auch die Synchronisierung perfekt aufeinander abgestimmt sein. Im ersten Schritt ist es dabei notwendig, Prozesse zu definieren, die die einzelnen Stages synchron halten. Zudem pflegt man unterschiedliche Versionen über Branches und Tags. Je nach Grösse und Komplexität des Systems ist der Erstaufwand beachtlich und benötigt Erfahrung und Expertenwissen.

6. Herausforderungen bei der Veröffentlichung am Live-Server

Aufgrund der unterschiedlichen Systeme, Konfigurationen und Settings gibt es keine einheitliche Lösung, die für alle Anwendungsgebiete eingesetzt werden kann. Zudem ist die Realisierung immer abhängig von den verwendeten Sprachen, den Zugriffsrechten sowie den Anforderungen des Kunden. Prinzipiell bildet Git jedoch den Grundstein dafür, bei der Webentwicklung ein bequemes und automatisches Deployment auf dem Live-Server zu ermöglichen. Die wichtigsten Herausforderungen, denen sich Entwickler in diesem Zusammenhang stellen müssen, haben wir nachstehend für Sie zusammengefasst.

Unterschiedliche Daten

Die lokale Datenbank und die Testdatenbank verfügen in der Regel über andere Daten und andere Konfigurationen, wie beispielsweise Domain Namen oder Pfade. Eine einfache Kopie der Datenbank auf die Live-Datenbank oder eine Spiegelung der Live-Datenbank auf die lokale Datenbank kann hierbei zu Problemen führen. Abhängig vom System, auf welchem die Anwendung gehostet wird, entstehen unter Umständen weitere Probleme. So serialisiert WordPress beispielsweise einige Daten, wodurch es schwierig ist, bestimmte Werte zu verändern oder zu parsen.

Grosse Datenbanken

Je grösser die Datenbanken sind, desto aufwendiger gestaltet sich die Synchronisierung. So muss man die Dateien, Bilder und Videoinhalten zuerst in ein lokales Dateisystem laden. Danach gilt es, alle Datenbankreferenzen passend zu aktualisieren. Zusätzlich müssen alle Dateien, die sich mit Themes oder Plugins beschäftigen, korrekt synchronisiert und konfiguriert werden. 

Unterschiedliche Installationen und Teams

Eine Synchronisierung ist wesentlich einfacher, wenn nur ein Entwickler an einem System arbeitet und man die geänderte Version nur auf einem einzigen Live-Server veröffentlicht. Je mehr Entwickler und Teams an einer Software arbeiten und je mehr Staging-Server und Live-Server synchronisiert werden müssen, desto komplizierter ist das initiale Setup und die Wartung des Systems.

Es ist gefährlich

Wenn die Synchronisierung fehlschlägt und ein Entwickler die Version dennoch am Live-Server veröffentlicht, kann das gravierende Folgen haben. Korrupte Daten können das System zerstören oder Hackern Tür und Tor öffnen. Nur durch regelmässige Backups der lokalen Datenbank und der Live-Datenbank können Sie im Falle eines Problems die Daten sicher wiederherstellen.

7. Fazit

Git gilt zu Recht als eines der beliebtesten Systeme zur Versionsverwaltung in der Webentwicklung. Das mächtige Tool ist in den letzten Jahren zum de facto Standard der Branche aufgestiegen und verbreitet sich dank einer aktiven Community und zahlreichen Tutorials und Videos in Windeseile. Dabei führt der Einsatz von Git zu mehr Transparenz, einer effizienteren Arbeitsweise und schafft nachhaltig weitaus mehr Sicherheit. Dennoch fällt der Einstieg vielen Entwicklern anfangs schwer. Besonders das Veröffentlichen neuer Versionen auf einem Live-Server benötigt viel Erfahrung und Expertise. 

Sind Sie neugierig geworden und möchten Sie mehr über Git erfahren oder haben Sie Fragen, wie Sie Git für das Veröffentlichen neuer Versionen auf Ihrem Live-Server verwenden können? Dann kontaktieren Sie uns ganz einfach.

Kommentare (0)

Hinterlasse einen Kommentar

Hinterlasse eine Antwort

Kommentarrichtlinie: Wir lieben Kommentare und schätzen die Zeit, die Leser damit verbringen, Ideen auszutauschen und Feedback zu geben. Alle Kommentare werden jedoch manuell moderiert und diejenigen, die als Spam oder reine Werbung gelten, werden gelöscht.

Diese Website ist durch reCAPTCHA geschützt und es gelten die Datenschutzbestimmungen und Nutzungsbedingungen von Google.