Hallo allerseits!
Wir haben das
Buch „DevOps Philosophy“ gedruckt und planen auch ein neues Buch zu diesem Thema.
Viele Kopien sind kaputt darüber, was DevOps ist und was nicht, sowie über die Beziehung zwischen DevOps und kontinuierlicher Integration. Wir bitten Sie daher, so objektiv wie möglich zu sprechen. Teilen Sie den Standpunkt des heutigen Autors Adam Mackay (Adam Mackay) zum Wesen von DevOps - oder ist das von ihm vorgeschlagene Bild Ihrer Meinung nach etwas unvollständig oder voreingenommen?
Wir lesen und kommentieren!
Ich habe mein ganzes Leben lang auf dem Gebiet der Technologie gearbeitet, und direkt vor meinen Augen sind verschiedene Methoden der Softwareentwicklung gereift und entstanden. Die meisten ihnen zugrunde liegenden Ideen beruhen auf der üblichen Optimierung der Produktivität im Sinne des gesunden Menschenverstandes und stammen aus verschiedenen Wirtschaftssektoren. Vor einigen Jahren wollten alle von einem Wasserfallentwicklungsmodell zu einer agilen, agilen Entwicklung übergehen. Ich habe kürzlich in einem fortschrittlichen Unternehmen gearbeitet, in dem versucht wird, DevOps zu implementieren. Das Unternehmen Verifa hält seit langem an Agile fest und versucht, die Vorteile dieses Modells nicht nur auf die Softwareentwicklung, sondern auch auf das gesamte Unternehmen auszudehnen.
DevOps ist ein neues Schlagwort in der Softwareindustrie. Dieses Konzept kombiniert viele fundierte Ideen zur Integration von Geschäft und Entwicklung sowie die Formulierung einer Erzählung, die es uns ermöglicht, über die Entwicklung, Bereitstellung und den Betrieb von Software in einem einzigen Kontext zu sprechen.

DevOps ist ein Ansatz, bei dem Entwicklungsingenieure und Verwaltungsingenieure gemeinsam am gesamten Lebenszyklus eines Softwareprodukts teilnehmen, vom Design über die Entwicklung bis hin zur gründlichen Produktunterstützung. Daher wurde DevOps entwickelt, um die traditionelle Uneinigkeit zu beseitigen, bei der ein Team den Code schreibt, das andere ihn testet, das dritte bereitstellt und das vierte für den Vorgang verantwortlich ist.
Mit DevOps beginnen Sysadmin-Mitarbeiter mit Unterstützung der ihnen anvertrauten Systeme, viele der Techniken zu verwenden, die im Arsenal des Entwicklers festgelegt wurden. In DevOps wird das Systems Engineering genau wie ein Taskflow während der Entwicklung erstellt. Alle Ressourcen werden in das Quellabrechnungssystem eingegeben und durch entsprechende Tests abgedeckt.
Wir haben mehrere wichtige DevOps-Themen in unserem Unternehmen: Werte, Prinzipien, Methoden, Praktiken und Werkzeuge.
WerteJeder Ingenieur ist inhaftiert, weil er eine Lösung gefunden hat, und ein solches Bestreben führt manchmal zu einer Ablehnung neuer Technologien, zu einer mangelnden Bereitschaft, mit neuen Dingen zu experimentieren, die sich auf unterschiedliche Weise ausdrückt: vom Syndrom der "Ablehnung der Entwicklung eines anderen" bis zu kontraproduktiven Versuchen, die eigene Nische zu verteidigen. Um wirklich zu DevOps überzugehen, müssen diese Vorurteile zuerst erkannt und dann überwunden werden. Weder Technologie noch Docker, Kubernetes oder Amazon Web Services lösen Ihre Probleme, wenn Sie das Wertversprechen nicht verstehen.

"Hände halten Freunde!"
Rawpixel-Schnappschuss von
UnsplashPrinzipienUnsere Unternehmensgrundsätze basieren auf dem Drei-Wege-Modell. Es wurde von Gene Kim, Autor von "Visible Ops" und "The Phoenix Project", und Mike Orzen, Autor von "Lean IT", entwickelt. Wir empfehlen, ein Umfeld zu schaffen, in dem systemisches Denken angeregt, Feedback-Zyklen gestärkt und eine Kultur des kontinuierlichen Experimentierens und Lernens eingeführt werden.
Denken Sie ständig an das gesamte System. Fragen Sie sich: "Wie erhalten Sie noch mehr Rückkopplungsschleifen?" Überwachung, Metriken und Protokollierung sind drei dieser Zyklen, mit denen Administratoren am Design teilnehmen können. In einer gesunden DevOps-Umgebung werden Prozesse stimuliert, die die Schaffung kurzer und effektiver Feedback-Zyklen fördern. Beispiele für solche Prozesse sind Incident Management, objektive Post-Mortem-Analyse, Transparenz ...

"Handshake vor MacBook Pro", eine Momentaufnahme von
Rawpixeln aus
UnsplashMethodenFlexibles ManagementFlexibel = einfach. Teilen Sie Ihr Projekt in kleine Arbeitsbereiche auf, erstellen Sie, begrenzen Sie das Fortschrittslimit, implementieren Sie Feedback-Schleifen und erzielen Sie eine Visualisierung. Dies ist mein Lieblingselement in jedem Projekt; Flexible Verwaltungstechniken sorgen für eine effektivere Ausgabe, einschließlich einer Verbesserung des Systemdurchsatzes und der Stabilität. Mitarbeiter erleben weniger Stress bei der Arbeit und erhalten mehr Arbeitszufriedenheit.
Zuerst Menschen, dann Prozesse, dann WerkzeugeEine der ersten von den DevOps-Pionieren vorgeschlagenen Methoden lautet „zuerst Menschen, dann Prozesse, dann Werkzeuge“. In unserem Unternehmen wird empfohlen, zunächst zu vereinbaren, wer für eine bestimmte Arbeitsaufgabe verantwortlich ist. Dann bestimmen wir, welche Prozesse erforderlich sind, um dieses Problem zu lösen. Danach werden die für die Implementierung des Prozesses erforderlichen Tools ausgewählt. Auf dem Papier scheint dies alles logisch, aber Ingenieure und Manager erliegen oft der eingängigen „Eile, es zu bekommen!“. von Lieferanten und in diesem Fall versuchen sie genau das Gegenteil zu tun: ein Werkzeug kaufen und dann den gesamten Aufgabenfluss dafür bilden.
Kontinuierliche LieferungDieser Begriff ist in aller Munde, so dass er manchmal sogar fälschlicherweise mit DevOps gleichgesetzt wird. Im Prinzip ist dies die Praxis der dynamischen Programmierung und des Softwaretests, bei der sehr kleine, vollständige und vorgefertigte Fragmente schnell freigegeben werden. Im Allgemeinen kann eine kontinuierliche Lieferung die Gesamtqualität und -geschwindigkeit verbessern. Die kontinuierliche Bereitstellung ist eine Schlüsselkomponente des Projekts, die so früh wie möglich festgelegt werden muss. Dies ist der treibende Faktor für die erfolgreiche Implementierung von DevOps.
Änderungsmanagement
Nach meiner Erfahrung besteht ein direkter Zusammenhang zwischen der Funktionsweise des Systems und der Organisation des Änderungsmanagements. Dies bedeutet nicht, dass Sie eine herkömmliche Steuerung implementieren müssen, die die Entwicklung verlangsamt und eher schädlich als hilfreich ist. In diesem Fall benötigen Sie eine skalierbare und zuverlässige Plattform für die kontinuierliche Lieferung. Konzentrieren Sie sich auf die Beseitigung fragiler Artefakte, die Reproduzierbarkeit des Erstellungsprozesses, die Verwaltung von Abhängigkeiten und die Schaffung einer Umgebung, die einer kontinuierlichen Verbesserung förderlich ist.
Infrastruktur im Code (Konfiguration im Code ... Alles im Code)Eine der Enthüllungen, mit denen mich das aktuelle Unternehmen bereichert hat, ist, dass jedes System als Code interpretiert werden kann und sollte. Systemspezifikationen werden in Versionskontrollsysteme eingegeben und von Fachleuten begutachtet. Mit modernen Bereitstellungsmechanismen, insbesondere Docker und Kubernetes, können Sie basierend auf der Spezifikation automatisch reale Systeme erstellen, testen, erstellen und programmgesteuert verwalten. Dieser Ansatz ermöglicht es Ihnen, das System zu kompilieren und auszuführen und nicht die mühsamen Langzeitkrücken herzustellen, die im Laufe der Zeit sehr schwierig zu entwickeln sind.
ÜbeIn allen früheren IT-Organisationen, in denen ich gearbeitet habe, lautete der Ansatz für Projekte: „Schreiben wir etwas ... und dann werden wir jemanden anweisen, es zu testen und bereitzustellen.“ Diese Methode passt nicht gut zu den Plänen. Das Timing verschiebt sich, und wenn das Entwicklungsteam zum nächsten Projekt übergeht, werden die Betriebskosten unerträglich.

"Achterbahn unter blauem Himmel und weißen Wolken", eine Momentaufnahme von
Priscilla Du Preez aus
UnsplashIn der aktuellen Organisation bemühen wir uns, die Entwickler über den von ihnen erstellten Service auf dem Laufenden zu halten und teilweise für dessen Betrieb verantwortlich zu sein. Das Ergebnis sind effizientere Feedback-Zyklen, mit denen das Team nicht nur auf Fehler, sondern auch auf neue Funktionen viel schneller reagieren und sicherstellen kann, dass sich das Produkt in die richtige Richtung entwickelt.
Die WerkzeugeWir lieben unsere Werkzeuge! Sie helfen dem Ingenieur, Systeme und Anwendungen zu programmieren, zusammenzubauen, zu testen, zu verpacken, freizugeben, zu konfigurieren und zu verfolgen. Wir besitzen unsere Tools meisterhaft und kennen die gesamte Palette der Lösungen, die uns interessieren - sowohl Open Source als auch kommerziell. Bevor sich das DevOps-Paradigma zu entwickeln begann, stagnierten Innovation und Tools. Ich habe lange Zeit die gleichen Werkzeuge verwendet wie zu Beginn meiner Karriere (ich programmiere seit 2000). Viele der in DevOps verwendeten Tools sind erstaunlich vielseitig und helfen dabei, den Lebenszyklus auf völlig neue Weise zu organisieren.

"Alle Arten von Tischlerwerkzeugen in der Werkstatt" aus der
Barn Images- Kollektion von
UnsplashSie müssen sich für zuverlässige Tools für DevOps entscheiden. Es gibt kein einziges Tool für alle Gelegenheiten. Sie benötigen eine ganze Linie, deren Inventar unter Berücksichtigung der vorhandenen Anforderungen kombiniert werden kann. Und da wir wollen, dass all dies zusammenarbeitet, ist jedes Tool nur so nützlich, wie es unserem gesamten System hilft.
Sie müssen Tools auswählen, die gut mit dem Rest Ihres Inventars zusammenarbeiten. Tools sollen helfen, jede Arbeit zu automatisieren. Sie sollten einfach über die API oder über die Befehlszeile aufzurufen sein. Grundsätzlich passen Tools, die stark von der Benutzeroberfläche abhängen, selbst in gut integrierten Tools nicht sehr gut.
Was weiter…Laden Sie das Docker-Image herunter und experimentieren Sie. Fork den Code eines anderen und beginne ihn zu erstellen. Stellen Sie einen Server oder Servercluster mit Kubernetes bereit. Also machst du DevOps. Starten Sie auf Ihrem eigenen Computer und wechseln Sie dann in die Cloud.
"Ein Junge, der auf der Treppe steht und nach den Wolken greift", gedreht von Samuel Zeller von UnsplashWenn Sie zum ersten Mal von dem Paradigma „Infrastruktur im Code“ oder „kontinuierliche Bereitstellung“ erfahren, möchten Sie sofort sagen: „Nein, bei uns funktioniert das anders“. Um jedoch mit DevOps erfolgreich zu sein, müssen Sie diese Techniken schrittweise beherrschen. Sie sind nicht so kompliziert. Seit vielen Jahren verwendet die Industrie Methoden, die genau das Gegenteil von DevOps sind, aber DevOps funktioniert wirklich.