Was bieten SCM-Tools (Ansible, Puppet, Chef usw.)?

8

Ich habe ziemlich viel über Software Configuration Management (im Internet und auch in SWEBOK) gelesen, aber ich weiß nicht genau, was der Zweck von SCM-Tools ist. Oder besser gesagt, was bieten diese Tools, was andere Tools nicht bieten?

Angenommen, ich habe eine Umgebung mit den folgenden Tools:

  • Jenkins für die kontinuierliche Integration.
  • Ameise als Build-Tool.
  • Git als Versionskontrollsystem.
  • GitLab für die Verwaltung von Git-Repositorys und auch für die Problemverfolgung.
  • Tools zur Analyse und zum Testen des Quellcodes wie Sonar und JUnit.

Meine Frage ist also, was würden diese SCM-Tools bieten? Inwiefern wären sie nützlich?

Julen
quelle

Antworten:

10

Alle von Ihnen erwähnten Tools (Jenkins, Ant, Git) helfen dabei, Ihr Artefakt tatsächlich zu erstellen und zu testen. In der Java-Welt kann dies normalerweise Krieg, Ohr oder nur ein Reißverschluss mit der Anwendung im Inneren sein. Manchmal kann es sich bei komplizierten Anwendungen um mehr als ein Artefakt handeln. Für andere Programmierplattformen können DLLs, Binärdateien für mehrere verschiedene Plattformen usw. variieren.

Angenommen, Sie möchten Ihre Anwendung bereitstellen. Wenn Sie einen Server haben, können Sie dies manuell oder mit einem selbst erstellten Skript tun. So weit, ist es gut :)

Was ist jedoch, wenn Sie viele Farmen (Gruppen von Maschinen) haben? Verschiedene Farmen sollten Bereitstellungen mit unterschiedlichen Konfigurationen (Datenbanken, unterschiedliche geografische Standorte) haben. Was ist, wenn Ihre Anwendung horizontal skaliert werden kann, sodass der Farm einige neue Knoten hinzugefügt werden sollten? eine triviale Aufgabe. Ihr QA-Team fordert möglicherweise nur eine neue Umgebung an, um die Tests auszuführen. Ihr Leistungsteam kann eine neue Umgebung anfordern oder der Farm Knoten hinzufügen, um Stresstests usw. durchzuführen. Jetzt scheint es kompliziert zu sein, all diese Dinge zu verwalten. Hier kommen Werkzeuge wie Ansible, Koch, Salz, Puppe und andere ins Spiel.

Diese helfen tatsächlich dabei, die Bereitstellung zu automatisieren. Sie können Bereitstellungsrezepte bereitstellen und fehlende Abhängigkeiten installieren (um Ihr Projekt auszuführen, sind möglicherweise jre, tomcat einer bestimmten Version und nginx für statische Inhalte erforderlich). All dies auf der Ebene der Farm.

Ich weiß, dass die Antwort zu allgemein ist und für Java-Entwickler weniger offensichtlich erscheint (ich bin einer von denen). Wenn Sie jedoch ein Team von System- / Entwicklern haben, sollten diese sofort auf die Vorteile dieser Tools hinweisen.

Mark Bramnik
quelle
Danke für deine Antwort. Würden Sie Entwicklern und QA- und Leistungstestern mit nur zwei Maschinen (Entwicklung und Produktion) die Verwendung dieser SCM-Tools empfehlen? Ich verstehe Ihren Standpunkt, aber es fällt mir schwer, alle zu verstehen und mich in diesen Kontext zu stellen, da ich noch nie in dieser Situation war.
Julen
2
Wenn Sie nur einen Krieg einsetzen, sollten Sie diese Tools wahrscheinlich nicht verwenden. Natürlich können Sie auch einen probieren (vielleicht funktioniert Ansible oder Salz besser für Sie). Ich würde sie wahrscheinlich versuchen, nur um etwas Neues zu lernen und zu sehen, ob mein Leben mit diesen Werkzeugen einfacher geworden wäre :)
Mark Bramnik
1
Ich denke, das werde ich tun, vielen Dank.
Julen
Irgendwann in der Zukunft müssen Sie über die derzeitige Kapazität hinaus skalieren oder vorhandene Hardware durch ein moderneres Kit ersetzen. Unabhängig davon, ob Sie mit einem SCM vertikal (größere Maschine) oder horizontal skalieren (Web von DB mit mehr Web trennen), vereinfachen Sie die endgültige Migration und erleichtern das Testen, dass Sie unterwegs nichts beschädigen. Die Entscheidung, jetzt mit dem Experimentieren zu beginnen, wenn Ihre Umgebung einfach ist, ist eine kluge Entscheidung. Beachten Sie, dass Sie diese Tools auch verwenden können (ich bevorzuge Ansible wegen seiner Einfachheit und mangelnden Abhängigkeit von der Installation von Agenten auf jeder Box), um Ihr Dev-System bereitzustellen.
Bryan 'BJ' Hoffpauir Jr.