Cookies
Diese Website verwendet Cookies und ähnliche Technologien für Analyse- und Marketingzwecke. Durch Auswahl von Akzeptieren stimmen Sie der Nutzung zu, alternativ können Sie die Nutzung auch ablehnen. Details zur Verwendung Ihrer Daten finden Sie in unseren Datenschutz­hinweisen, dort können Sie Ihre Einstellungen auch jederzeit anpassen.

Engineering

Dev Containers – Die Zukunft der Entwicklungsumgebungen
6
Minuten Lesezeit
Dev Containers – Die Zukunft der Entwicklungsumgebungen
Christoph Grothaus

Was sind Development Container?


In einer von Innovation und Effizienz geprägten Branche entwickeln sich Visual Studio Code Development Containers, oder kurz “Dev Containers”, immer mehr zu einem wichtigen Werkzeug für die moderne Softwareentwicklung. Es handelt sich im Wesentlichen um isolierte Entwicklungsumgebungen, die in einem Container untergebracht sind. Dazu wird die Leistungsfähigkeit von Containertechnologien wie Docker genutzt, um eine konsistente, reproduzierbare und portable Entwicklungsumgebung zu schaffen.


Um ein Dev Container Setup für ein bestimmtes Projekt zu aktivieren, müssen einige Konfigurationsdateien hinzugefügt werden. Anschließend kann jede:r Entwickler:in den Dev Container auf einem beliebigen Rechner oder in der Cloud starten und mit der Entwicklung beginnen, ohne manuelle Einrichtungsschritte wie das Abrufen von Abhängigkeiten oder das Einrichten einer Datenbank durchführen zu müssen. Dies funktioniert unabhängig von der verwendeten Programmiersprache oder den verwendeten Tools.

Wie sie funktionieren:
  • Isolierung: Jeder Dev Container arbeitet unabhängig, d.h. die Software, Abhängigkeiten und Umgebungseinstellungen sind vom Hostsystem und anderen Containern isoliert.
  • Konsistenz: Durch die Definition der Entwicklungsumgebung im Code (z. B. in einem Dockerfile oder einer Konfigurationsdatei) stellen Dev Container sicher, dass jedes Teammitglied unabhängig vom lokalen Rechner in einer identischen Umgebung arbeitet. Dies reduziert auch den Bedarf an umfangreicher Setup-Dokumentation.
  • Flexibilität: Diese Container können so angepasst werden, dass sie die erforderlichen Entwicklungstools, Erweiterungen und Abhängigkeiten enthalten, die auf die spezifischen Projektanforderungen zugeschnitten sind.

Beispiel: Dieses Diagramm zeigt eine:n Entwickler:in, die an drei verschiedenen Projekten arbeitet, die jeweils eine andere Technologie verwenden. Visual Studio Code und Docker sind auf dem Entwicklungsrechner installiert. Innerhalb von Docker erstellt das Dev Containers Tooling einen isolierten Container für jedes Projekt.

Bild: Aufbau eines Dev-Container-Setups
Die Vorteile im Überblick:
  • Schnelles Onboarding: Neue Teammitglieder können sich schnell und ohne langwierige Setup-Prozesse einarbeiten.
  • Plattformübergreifende Kompatibilität: Dev Container können auf verschiedenen Betriebssystemen ausgeführt werden, wodurch betriebssystemspezifische Fehler reduziert werden.
  • Verbesserte Zusammenarbeit: Teams können Umgebungen problemlos gemeinsam nutzen und zusammenarbeiten, während sichergestellt ist, dass alle Beteiligten auf dem gleichen Stand sind.
  • Cloud-Entwicklung mit GitHub Codespaces: GitHub bietet einen Dienst namens "Codespaces" an, mit dem Dev Container in der Cloud gestartet werden können. Dadurch können Entwickler:innen von überall und auf jedem Gerät programmieren, ohne eine lokale Entwicklungsumgebung einrichten und pflegen zu müssen

Dev Containers in der Softwareentwicklungsbranche

Die Einführung von Dev Containern gewinnt in der Welt der Softwareentwicklung zunehmend an Bedeutung. Sie werden immer mehr als Lösung für häufige Entwicklungsprobleme wie das "Funktioniert auf meinem Rechner"-Syndrom angesehen. Große Technologieunternehmen und Open-Source-Projekte beginnen, Dev Containers aufgrund ihrer Vorteile in Bezug auf Zusammenarbeit, Effizienz und Konsistenz einzusetzen.

Unsere Einführung von Dev Containers

Bei Zweitag begann unsere Reise mit Dev Containers als eine Erkundung, um unseren Entwicklungsprozess zu verbessern. Wir erkannten schnell das Potenzial, die Projektvorbereitungszeit zu verkürzen, die Zusammenarbeit zu verbessern und die Konsistenz zwischen unseren Teams zu gewährleisten.

Unsere Erfahrungen und Herausforderungen
  • Frühzeitige Einführung: Bei der Implementierung von Dev Containers in verschiedenen Projekten, die Technologien wie Ruby, Elixir, Python und Node.js verwenden, konnten wir Verbesserungen bei der Effizienz der Einrichtung und eine Verringerung der mit der Umgebung verbundenen Probleme feststellen.
  • Überwindung technischer Hürden: Eine unserer größten Herausforderungen war die Integration automatisierter Browser-Tests. Diese Aufgabe hat die Anpassungsfähigkeit von Dev Containers auf die Probe gestellt, aber letztendlich gezeigt, dass sie in der Lage sind, verschiedene Projektanforderungen effektiv zu bewältigen.
  • Performance-Betrachtungen: Wir beobachteten Leistungsschwankungen in Abhängigkeit von der Hardware. Dies veranlasste uns dazu, einen dualen Ansatz zu implementieren, der die Verwendung von Dev Containern neben traditionellen lokalen Setups ermöglicht. Diese Strategie stellt sicher, dass Entwickler:innen, die ältere Hardware verwenden (z.B. Intel-basierte MacBooks), effizient und ungehindert entwickeln können.

Vorbereitung für den zukünftigen Erfolg

Unsere Reise mit Dev Containers bei Zweitag geht über die bloße Einführung hinaus; es ist ein kontinuierlicher Prozess des Lernens, Verfeinerns und Weiterentwickelns. Während wir Dev Containers in verschiedenen Projekten einsetzen, sammeln wir aktiv Erkenntnisse und Feedback von unseren Teammitgliedern. Diese praktische Erfahrung ist entscheidend für die Feinabstimmung unseres Setups, um den unterschiedlichen Anforderungen unserer Projekte und Teams gerecht zu werden.

In Zukunft werden wir neue Projekte von Anfang an mit Dev Containers starten und bestehende Projekte im Rahmen von Wartungsarbeiten oder Updates schrittweise umstellen. Dieser Ansatz dient nicht nur der Rationalisierung laufender Projekte, sondern ist ein strategischer Schritt in Richtung Zukunftssicherheit unserer Entwicklungspraktiken.

Die Einführung von Dev Containers ist ein wichtiger Teil unseres Engagements, an der Spitze der Technologie- und Prozessinnovation zu bleiben. Dieser Ansatz stellt sicher, dass wir agil bleiben und auf die sich verändernde Landschaft der Softwareentwicklung vorbereitet sind, indem wir uns kontinuierlich in Richtung Effizienz und Exzellenz weiterentwickeln.

Demnächst können Sie mehr über die technischen Aspekte unserer Dev Container-Einrichtung, unsere Grundsätze bei der Einrichtung und die Überwindung des Browser-Testproblems lesen.

Ihr sucht den richtigen Partner für eure digitalen Vorhaben?

Lasst uns reden.