Noch einmal ĂŒber DevOps und SRE.

AnlÀsslich der Diskussion im Chat AWS Minsk Community

In letzter Zeit entbrennen echte KĂ€mpfe um die Definition der Begriffe DevOps und SRE.
Obwohl die Diskussionen zu diesem Thema schon vielerorts ausgelutscht sind, auch fĂŒr mich, habe ich beschlossen, meine Sichtweise dem Habr-Community zur PrĂŒfung vorzulegen. Wer interessiert ist, ist herzlich eingeladen, unter den Cut zu gehen. Und lasst uns alles neu beginnen!

Vorgeschichte

In alten Zeiten lebte das Team der Softwareentwickler und die Serveradministratoren getrennt. Die ersten schrieben erfolgreich Code, wĂ€hrend die zweiten, die verschiedene warme, liebevolle Worte an die ersten richteten, die Server einrichteten und gelegentlich zu den Entwicklern kamen, um die erschöpfende Antwort "Auf meinem Rechner funktioniert alles" zu erhalten. Das GeschĂ€ft wartete auf die Software, alles stand still, stĂŒrzte gelegentlich ab, und alle waren nervös. Besonders derjenige, der fĂŒr das ganze Chaos bezahlte. Die glorreiche analoge Ära. Aber das wisst ihr ja bereits, woher DevOps kommt.

Die Geburt der DevOps-Praktiken

Dann kamen ernsthafte Herren und sagten - das ist keine Industrie, so kann man nicht arbeiten. Und sie brachten Lebenszyklus-Modelle mit. Hier zum Beispiel das V-Modell.

Noch einmal ĂŒber DevOps und SRE.
Also, was sehen wir? Das GeschĂ€ft kommt mit einem Konzept, Architekten planen Lösungen, Entwickler schreiben Code, danach kommt das Versagen. Jemand testet das Produkt auf die eine oder andere Weise, jemand liefert es irgendwie an den Endbenutzer und irgendwo am Ende dieses Wunder-Modells sitzt ein einsamer GeschĂ€ftskunde und wartet auf das versprochene Wetter am Meer. Es wurde festgestellt, dass Methoden benötigt werden, die diesen Prozess optimieren. Und sie beschlossen, Praktiken zu schaffen, die dies umsetzen wĂŒrden.

Ein lyrischer Einschub darĂŒber, was Praxis ist
Unter Praxis verstehe ich die Verbindung von Technologie und Disziplin. Beispiel - die Praxis der Beschreibung von Infrastruktur mit Code in Terraform. Die Disziplin ist, wie man die Infrastruktur mit Code beschreibt, sie ist im Kopf des Entwicklers, und die Technologie ist das eigentliche Terraform.

Und so beschlossen sie, sie DevOps-Praktiken zu nennen — ich denke, sie hatten von Entwicklung bis Betrieb gemeint. Sie erfanden verschiedene komplizierte Dinge — CI/CD-Praktiken, Praktiken, die auf dem IaC-Prinzip basieren, tausende davon. Und los ging's, die Entwickler schreiben Code, die DevOps-Ingenieure verwandeln die Beschreibung des Systems in Form von Code in funktionierende Systeme (ja, Code ist leider nur eine Beschreibung und keinesfalls die Verkörperung des Systems), die Auslieferung dreht sich, und so weiter. Die frĂŒheren Administratoren, die sich mit neuen Praktiken vertraut gemacht hatten, qualifizierten sich stolz zu DevOps-Ingenieuren um, und alles nahm seinen Lauf. Und es war Abend, und es war Morgen... Entschuldigung, das war nicht von dort.

Alles wieder nicht zum Lob Gottes

Gerade als sich alles beruhigt hatte, begannen verschiedene brillante "Methodologen", dicke BĂŒcher ĂŒber DevOps-Praktiken zu schreiben, es entbrannten leise Streitigkeiten darĂŒber, wer denn nun dieser berĂŒchtigte DevOps-Ingenieur ist und dass DevOps eine Produktionskultur ist, wieder machte sich Unzufriedenheit breit. Plötzlich stellte sich heraus, dass die Softwareauslieferung eine absolut knifflige Aufgabe ist. Jede Entwicklungsinfrastruktur hat ihren eigenen Stack; irgendwo muss man bauen, irgendwo die Umgebung einrichten, hier braucht man Tomcat, dort gibt es einen noch komplizierteren Weg, um zu starten — im Grunde schwirrt einem der Kopf. Und ein weiteres Problem, seltsamerweise, lag hauptsĂ€chlich in der Organisation der Prozesse — diese Lieferfunktion, wie ein Flaschenhals, begann, die Prozesse zu blockieren. Auch die Operations wurden nicht abgeschafft. Sie ist in dem V-Modell nicht sichtbar, und dort ist noch der ganze Lebenszyklus auf der rechten Seite. Am Ende muss man die Infrastruktur unterstĂŒtzen, auf das Monitoring achten, VorfĂ€lle managen und sich auch um die Auslieferung kĂŒmmern. Das heißt, man sitzt mit einem Bein sowohl in der Entwicklung als auch in der Betriebstechnik — und plötzlich entstand so etwas wie Development & Operations. Und dann kam auch noch der allgemeine Hype um Microservices. Und damit begann die Entwicklung von lokalen Maschinen in die Cloud umzuziehen — versuche etwas lokal zu debuggieren, wenn es Dutzende und Hunderte von Microservices gibt, da wird die stĂ€ndige Auslieferung zum Überlebensmittel. FĂŒr eine „kleine bescheidene Firma“ mag das noch gehen, aber was ist mit Google?

SRE von Google

Google kam, fraß die grĂ¶ĂŸten Kakteen und entschied – das brauchen wir nicht, wir brauchen ZuverlĂ€ssigkeit. Und ZuverlĂ€ssigkeit muss gemanagt werden. Also entschied er – wir brauchen Spezialisten, die die ZuverlĂ€ssigkeit managen. Er nannte sie SR-Ingenieure und sagte, hier habt ihr alles, macht es wie gewohnt, gut. Hier habt ihr SLI, hier habt ihr SLO, hier habt ihr Monitoring. Und zeigte auf die Operationen. Und nannte sein „zuverlĂ€ssiges DevOps“ SRE. Scheinbar ist alles gut, aber es gibt einen schmutzigen Hack, den sich Google leisten konnte – fĂŒr die Position der SR-Ingenieure Leute einzustellen, die die Qualifikation von Entwicklern hatten und zudem ein wenig von zu Hause aus die Funktionsweise arbeitender Systeme verstanden. Außerdem hat Google selbst Probleme bei der Einstellung solcher Leute – hauptsĂ€chlich, weil er ja auch mit sich selbst konkurriert – schließlich muss irgendjemand die GeschĂ€ftslogik beschreiben. Die Auslieferung ĂŒbertrug er auf die Release-Ingenieure, SR-Ingenieure managen die ZuverlĂ€ssigkeit (klar, nicht direkt, sondern durch Einfluss auf die Infrastruktur, Änderung der Architektur, Überwachung von Änderungen und Kennzahlen, sowie der Bearbeitung von VorfĂ€llen). Schön, man kann BĂŒcher schreiben. Was aber tun, wenn man nicht Google ist und die ZuverlĂ€ssigkeit dennoch ein Anliegen ist?

Entwicklung von DevOps Ideen

Hier kam Docker gerade recht, das aus lxc hervorging, ebenso wie verschiedene Orchestrierungssysteme wie Docker Swarm und Kubernetes, und die DevOps-Ingenieure atmeten auf – die Vereinheitlichung der Praktiken erleichterte die Auslieferung. Sie erleichterte es so sehr, dass es sogar möglich wurde, die Auslieferung den Entwicklern zu ĂŒberlassen – was ist schon deployment.yaml? Containerisierung löst das Problem. Außerdem ist die Reife der CI/CD-Systeme mittlerweile auf dem Niveau, dass man eine Datei schreibt und alles losgeht – die Entwickler schaffen das selbst. Und hier fangen wir an zu sprechen, wie wir unser eigenes SRE machen, mit
 naja, mit irgendjemandem.

SRE nicht bei Google

Nun gut, die Lieferung haben wir ĂŒbergeben, wir können scheinbar aufatmen und zu den alten guten Zeiten zurĂŒckkehren, als die Admins die Prozessorlast ĂŒberwachten, Systeme optimierten und leise aus Tassen etwas UnverstĂ€ndliches in Stille und Ruhe tranken... Halt. DafĂŒr haben wir das alles nicht gemacht (schade!). Plötzlich stellt sich heraus, dass wir aus dem Ansatz von Google großartige Praktiken ĂŒbernehmen können — nicht die Prozessorlast ist wichtig, und nicht wie oft wir die Platten dort wechseln oder wie wir im Cloud die Kosten optimieren, sondern die GeschĂ€ftskennzahlen — all die berĂŒchtigten SLx. Und das Management der Infrastruktur wurde uns nicht genommen, und VorfĂ€lle mĂŒssen gelöst werden, und man muss gelegentlich Dienst schieben und ĂŒberhaupt in den GeschĂ€ftsprozessen auf dem Laufenden sein. Und Jungs, fangt an, schon langsam auf gutem Niveau zu programmieren, Google wartet schon auf euch.

Zusammenfassend. Plötzlich, aber ihr seid schon mĂŒde zu lesen und könnt es kaum erwarten, dem Autor einen Kommentar zum Artikel zu schreiben. DevOps als Praktik der Bereitstellung war, ist und wird sein. Und es wird nirgends hingehen. SRE als eine Sammlung von Betriebspraktiken macht diese Bereitstellung erfolgreich.

Quelle: habr.com

60GB SSD 8Gb DDR4