Die Firma, für die ich jetzt arbeite, implementiert noch keine kontinuierliche Lieferung. Wir stellen das Projekt weiterhin manuell Datei für Datei auf dem Server bereit. Was ist die bewährte Methode: Manuelles Bereitstellen eines Projektartefakts für jede Bereitstellung oder Datei für Datei weiter bereitstellen?
deployment
server
devops
Jake Muller
quelle
quelle
Antworten:
Weder.
Best Practice besteht darin, Ihre Bereitstellung vollständig und ausschließlich zu automatisieren . Das bedeutet, dass niemand etwas manuell auf einen Server legen kann .
"Um die Zusammenfassung der Zusammenfassung zusammenzufassen: Menschen sind ein Problem." (Douglas Adams)
Menschen machen Fehler. Wenn eine der Dateien, die Sie vergessen haben, zu kopieren, eine gemeinsam genutzte "Bibliothek" ist, die umfassend geändert wurde, können Sie den gesamten Produktionsstandort zum Absturz bringen.
quelle
Manuelle Schritte sind sehr aufwändig und riskant: Möglicherweise vergessen Sie eine erforderliche Datei. Vielleicht weiß nicht jeder in Ihrem Team, welche Dateien kopiert werden müssen. All diese Probleme machen Bereitstellungen groß, entmutigend und selten - völlig unnötig. Die Automatisierung adressiert diese.
Selbst der einfachste Automatisierungsschritt kann große Vorteile haben, da Bereitstellungen trivial werden. Ein Skript, das die Dateien oder Artefakte über (S) FTP oder Rsync oder eine andere Technologie kopiert, ist ein guter erster Schritt. Sie können dieses Skript später erweitern, um Schritte vor und nach der Bereitstellung auf dem Server automatisch auszuführen, z. B. das Neustarten von Diensten.
quelle
Best Practice wäre die Implementierung eines automatisierten Prozesses.
Vergewissern Sie sich, dass es keinen besonderen Grund für die Vorgehensweise "Datei für Datei" gibt, den Sie berücksichtigen müssten.
quelle
Mit Continuous Delivery (oder Deployment) und dem Verschieben jeder Datei von Hand betrachten Sie die beiden Extreme. Es ist vollkommen verständlich, dass Sie (noch) keine vollautomatische Pipeline erstellen können / möchten. Sie sollten jedoch überlegen, Teile des Prozesses zu automatisieren.
Das Verschieben jeder Datei von Hand ist sehr riskant. Sie können dieses Risiko verringern, indem Sie beispielsweise Ihr Code-Repository markieren, dieses Tag auf Ihrem Computer auschecken, Ihre Artefakte erstellen und sie auf Ihren Server hochladen. Jeder dieser Schritte kann automatisiert werden, sodass er mit wenigen Mausklicks ausgeführt werden kann. Dadurch wird das Risiko, dass eine Datei vergessen wird oder versehentlich zusätzliche Dateien angefordert werden.
Automatisieren Sie Schritt für Schritt, was Sie können. Die Tatsache, dass Sie sich keine vollautomatische CD-Pipeline leisten können, sollte Sie nicht davon abhalten, einige Teile zu automatisieren.
quelle
Es wird empfohlen, eine Kosten-Nutzen-Analyse für Ihre spezielle Bereitstellung für Ihr spezielles Unternehmen durchzuführen.
Die allgemeine Antwort lautet "Machen Sie keine Dinge manuell, automatisieren Sie." Dies ist im Allgemeinen die richtige Antwort für allgemeine Arten von Unternehmen. Die Einheitlichkeit der Antworten, die Sie erhalten, sollte ein Hinweis darauf sein, wie stark die Community dies als Best Practices ansieht. Wenn Ihr Unternehmen der Meinung ist, dass Automatisierung nicht das richtige Werkzeug ist, sollte es verstehen, was sie einzigartig macht. Diese Einzigartigkeit sollte in Ihren Entscheidungsprozess einfließen. Es gibt keine "Best Practices", wenn der Beispielsatz 1 ist.
Fragen wie "Wie viele Dateien" und "Wie oft werden Dinge aktualisiert" und "Welche Konsequenzen hat das Brechen von Dingen?" Und "Wie schnell können Sie eine fehlerhafte Änderung rückgängig machen" sind wichtige Fragen, die beantwortet werden müssen. Wenn Sie automatisieren, werden viele dieser Fragen unwichtig, sie sind jedoch für die ordnungsgemäße Zuordnung der Kosten und Vorteile eines manuellen Aktualisierungsprozesses unerlässlich.
quelle
Es gibt viele Graustufen zwischen manuellem Kopieren von Datei zu Datei und kontinuierlicher Zustellung.
Reduzieren Sie zunächst die Komplexität des Bereitstellungsprozesses, indem Sie beispielsweise eine Zip-Datei, eine RPM-ähnliche Verpackung, eine Infrastruktur als Codeverwaltungswerkzeug (z. B. Marionette oder Chefkoch) oder auch nur ein einfaches Skript verwenden, das die Dateien für Sie von einem kopiert Staging-Bereich auf dem FTP-Server.
Bereitstellungsprozesse mit mehr manuellen Schritten weisen mit größerer Wahrscheinlichkeit Fehler auf (und schlagen dadurch fehl). Nehmen Sie, wie andere bereits gesagt haben, das menschliche Element heraus.
Sie müssen nicht die vollständige kontinuierliche Bereitstellung implementieren (was kostenintensiv ist und mit der Zeit Aufwand / Investition / Innovation erfordert) - beginnen Sie einfach, lassen Sie es funktionieren, demonstrieren Sie die Vorteile - und gehen Sie von dort aus.
quelle
Dies hängt von der verwendeten Softwaretechnologie (oder dem Stapel) ab (interpretierte Sprache, kompilierte Sprache, Desktop-App, Mobiltelefon usw.). dev. Abteilungsrichtlinien: Wenn Sie über die Tools zur Automatisierung verfügen, ist Ihre App von entscheidender Bedeutung. Ein wichtiger Aspekt ist Ihre Softwarearchitektur (wie Ihre App entworfen wurde). Deshalb haben Sie hier unterschiedliche Antworten. Als Faustregel gilt, dass der beste Ansatz darin besteht, den menschlichen Eingriff in Bereitstellungsaufgaben so gering wie möglich zu halten, um Fehler zu vermeiden. Eine bewährte Methode besteht darin, vor der Bereitstellung alles in einem QA-Server zu testen (in Betracht zu ziehen, einen virtuellen Server zu verwenden, wenn das Budget ein Problem darstellt) und umgekehrt vorzugehen, um im Katastrophenfall die vorherige Version wiederherzustellen ( IMMER eine Sicherung durchführen).
quelle