Was sind die Gründe, Docker in Ihrem Softwareentwicklungsprozess zu verwenden, wenn Sie es nicht in der Produktion verwenden?

8

Docker hat viel Potenzial, um Probleme an meinem Arbeitsplatz in einem großen Team (100) von Softwareentwicklern zu lösen, und es wird verwendet, um Probleme an meinem Arbeitsplatz zu lösen. Das beinhaltet:

  • Mit einem Cluster von Docker-Hosts , auf denen Sie Jobs ausführen können
  • Wenn CI-Agenten als Docker-Images ausgeführt werden, können Sie sie nach Bedarf horizontal skalieren (und sicherstellen, dass jeder Build vollständig sauber und konsistent ist).
  • Spezialisiert auf verschiedene Agenten für Android-, JS- und Java-Builds
  • Paralleles Ausführen von JUnit-Tests über mehrere Container verteilt
  • Wenn Dev-Tools wie Sonar und NPMJS im Docker (auf dedizierten Hosts) ausgeführt werden, können Sie sie problemlos in einer CI-Pipeline mit einem Check-in für die Versionskontrolle aktualisieren

Das Feedback kam zu mir zurück:

Es ist großartig, dass dies funktioniert, aber das Verständnis des Docker-Ökosystems ist für manche Menschen ein mentaler Sprung . Es wurde bereits festgestellt, dass wir Docker nicht in der Produktion betreiben werden. Wir glauben daher nicht, dass es einen Grund gibt, in die Qualifizierung unserer Mitarbeiter für dieses Tool zu investieren.

Meine Frage ist: Was sind die Gründe, Docker in Ihrem Softwareentwicklungsprozess zu verwenden, wenn Sie es nicht in der Produktion verwenden?

Falkenauge
quelle
5
Nur weil Sie es nicht in der Produktion verwenden werden, bedeutet dies nicht, dass es kein nützliches Werkzeug für Entwicklungszwecke ist. Das Argument "Wir werden es nicht in der Produktion verwenden, also wollen wir es nicht betrachten." überhaupt "klingt für mich ungültig. Sie haben bereits eine Liste von Dingen, die zeigen, wie nützlich es sein kann. Ich verwende es, um Datenbanken für die Entwicklung und das Testen auf meinem Entwicklungscomputer auszuführen.
Jesper
Nur eine kurze Anmerkung: Für mich skalieren Sie entweder (leistungsstärkere Maschine) oder horizontal (weitere Maschinen hinzufügen). Horizontal skalieren scheint mir komisch.
Machado
1
Tun Sie sich selbst einen Gefallen und widmen Sie eine Maschine der Replikation der Produktionsbedingungen, wenn Sie sich für Docker entscheiden, damit Sie das Programm in einer Umgebung testen können, die der Produktion so ähnlich wie möglich ist. Abgesehen davon, gehen Sie Docker verrückt, haben Sie Spaß.
Neil
Ein weiterer kurzer Tipp: Quellcodeverwaltungsserver, Build-Server und CI-Server sind Produktionsserver für Ihre Entwickler. Ihre Organisation verwendet möglicherweise IT als Mittel für ein Endziel (dh Sie sind nicht im Technologiebereich tätig). Wenn Sie jedoch Entwickler haben, erwarten diese eine Umgebung, auf die sie sich verlassen können, um einige Arbeiten auszuführen. Das bedeutet, dass alle oben genannten Server genauso kritisch behandelt werden müssen wie alles andere in Ihrer Infrastruktur. Andernfalls erhalten Sie ein Team ohne Ressourcen zum Arbeiten und Bereitstellen. Selbst wenn die IT eine Support-Seite Ihres Betriebs ist, möchten Sie nicht, dass sie nur auf wartenden Servern herumhängen, um wieder online zu sein.
Machado
Das Problem mit dem Feedback, das Sie erhalten haben, ist: Es wird übersetzt in »Mit Docker weggehen. Wir wollen es nicht. «Natürlich gab es viele Gründe, warum man Docker verwenden könnte, aber in diesem Fall scheint das Feedback nur eine höfliche Ausrede zu sein.
Thomas Junk

Antworten:

8

Hier sind einige Gründe, warum wir Docker als Teil unseres Softwareentwicklungsprozesses verwenden (wir verwenden es noch nicht in der Produktion):

  • Konsistente und versionierte lokale Bereitstellungsumgebung - Wir überprüfen, ob unser Docker in die Versionskontrolle integriert ist, und können am Stack zusammenarbeiten. Wir können eine völlig saubere Umgebung erhalten, indem wir einen Stapel stoppen und starten.
  • Einfache Verteilung von Umgebungen an Teamkollegen - vor kurzem hatten wir einen völlig neuen Software-Stapel, den wir warten mussten. Wir mussten den Stack nur einmal in Docker erstellen und an das Team verteilen, anstatt die Tools und Prozesse für die Installation der Vielzahl von Software zu dokumentieren. Dokumente werden oft vergessen und erst getestet, wenn ein neues Mitglied dem Team beitritt - oft funktionieren die Anweisungen nicht mehr.
  • Wird in CI-Builds und automatisierten Tests verwendet - Dieselben Images, die wir zum lokalen Bereitstellen und Testen der Software verwenden, werden von CI zum Erstellen und Testen der Software verwendet. Dies macht es weniger wahrscheinlich, dass Fehler spezifisch für die Macken in der lokalen Umgebung einer Person sind.
  • Einfacher als virtuelle Maschinen zu verwalten, zu ändern, zu erstellen und zu verteilen.
  • Bietet die Möglichkeit, vorhandene Bilder zu erweitern, sodass wir keine Bilder von Grund auf neu erstellen müssen. Normalerweise sind Open Source-Images für gängige Softwarepakete verfügbar.
Samuel
quelle