Was ist DevOps

Die Definition von DevOps ist sehr komplex, weshalb es immer wieder notwendig ist, die Diskussion darĂŒber neu zu beginnen. Allein auf Habr gibt es tausende von Veröffentlichungen zu diesem Thema. Aber wenn Sie dies lesen, wissen Sie wahrscheinlich, was DevOps ist. Denn ich weiß es nicht. Hallo, ich heiße Alexander Titov (@osminog), und wir werden einfach ĂŒber DevOps sprechen und ich werde meine Erfahrungen teilen.

Was ist DevOps

Ich habe lange ĂŒberlegt, wie ich meine ErzĂ€hlung nĂŒtzlich gestalten kann, daher wird es hier viele Fragen geben – die, die ich mir selbst stelle, und die, die ich unseren Kunden stelle. Indem ich auf diese Fragen antworte, wird das VerstĂ€ndnis besser. Ich werde erzĂ€hlen, warum DevOps aus meiner Sicht notwendig ist, was es ist, wiederum aus meiner Perspektive, und wie man erkennt, dass man sich auf dem Weg zu DevOps befindet, wiederum aus meiner Sicht. Der letzte Punkt wird durch Fragen erfolgen. Indem Sie sich diese selbst stellen, können Sie verstehen, ob Ihr Unternehmen auf dem Weg zu DevOps ist oder ob es dabei Probleme gibt.

Video abspielen

Eine Zeit lang war ich auf den Wellen von Fusionen und Übernahmen unterwegs. ZunĂ€chst arbeitete ich in einem kleinen Startup namens Qik, das dann von einer etwas grĂ¶ĂŸeren Firma namens Skype ĂŒbernommen wurde, die spĂ€ter von einer noch grĂ¶ĂŸeren Firma, Microsoft, gekauft wurde. In diesem Moment bekam ich Einblicke, wie sich die Vorstellung von DevOps in Unternehmen unterschiedlicher GrĂ¶ĂŸenordnungen transformiert. Danach wurde es fĂŒr mich interessant, DevOps aus Marktsicht zu betrachten, und wir grĂŒndeten mit Kollegen die Firma Express 42. Bereits seit 6 Jahren navigieren wir auf diesem Markt.

Nebenbei bin ich einer der Organisatoren der Community DevOps Moscow und Organisator von DevOps-Days 2017, die 2018 jedoch nicht organisiert wurden. Express 42 arbeitet mit vielen Firmen zusammen. Wir etablieren dort DevOps, beobachten, wie das geschieht, ziehen Schlussfolgerungen, analysieren und teilen unsere Ergebnisse mit allen, schulen Menschen in DevOps-Praktiken. Kurz gesagt, wir fördern in dieser Hinsicht unsere Erfahrungen und unsere Expertise.

Warum DevOps

Die erste Frage, die alle und immer verfolgt – warum? Viele glauben, dass DevOps einfach Automatisierung oder eine Ă€hnliche Sache ist, die bereits in jedem Unternehmen vorhanden war.

— Wir hatten Continuous Integration – das heißt, wir hatten bereits DevOps, und warum brauchen wir diesen ganzen Kram? Da drĂŒben amĂŒsiert man sich, wĂ€hrend uns die Arbeit im Weg steht!

Nach 9 Jahren der Entwicklung der Gemeinschaft und Methodik ist bereits klar geworden, dass es sich dabei nicht um Marketingflitter handelt, aber es ist trotzdem nicht ganz klar, wozu es notwendig ist. Wie bei jedem Werkzeug und Prozess hat DevOps bestimmte Ziele, die es letztendlich erreicht.

Das alles hĂ€ngt damit zusammen, dass sich die Welt verĂ€ndert. Sie entfernt sich von dem unternehmerischen Ansatz, bei dem Unternehmen gemĂ€ĂŸ einer bestimmten Strategie, wie unser Petersburger Klassiker sang, von Punkt A nach Punkt B aufbrechen, unterstĂŒtzt von einer dafĂŒr aufgebauten Struktur.

Was ist DevOps

Im Grunde sollte alles im IT-Bereich auf diesem Ansatz basieren. Hier wird IT ausschließlich zur Automatisierung von Prozessen eingesetzt.

Automatisierung Ă€ndert sich nicht oft, denn wenn ein Unternehmen auf den gewohnten Pfaden voranschreitet – was soll man da Ă€ndern? Es funktioniert – also nicht anfassen. Derzeit Ă€ndern sich die AnsĂ€tze in der Welt, und der, der als Agile bezeichnet wird, besagt, dass das endgĂŒltige Ziel B nicht sofort sichtbar ist.

Was ist DevOps

Wenn ein Unternehmen den Markt durchlĂ€uft und mit dem Kunden arbeitet, erforscht es stĂ€ndig den Markt und Ă€ndert das endgĂŒltige Ziel B. Je hĂ€ufiger ein Unternehmen seine Richtung Ă€ndert, desto erfolgreicher ist es letztendlich, da es mehr Marktsegmente auswĂ€hlt.

Eine interessante Firma zeigt diese Strategie, von der ich kĂŒrzlich erfahren habe. One Box Shave – ein Lieferdienst fĂŒr Rasierer und Rasurartikel im Abonnement in einer Box. Sie können ihre „Box“ fĂŒr verschiedene Kunden individuell anpassen. Das erledigt eine spezielle Software, die dann die Bestellung an eine koreanische Fabrik sendet, die das Produkt herstellt.

Dieses Produkt wurde von der Firma Unilever fĂŒr 1 Milliarde Dollar gekauft. Jetzt konkurriert es mit Gillette und hat einen signifikanten Marktanteil in den USA gewonnen. One Box Shave sagt:

— 4 Klingen? Sind Sie im Ernst? Warum brauchen Sie das – das verbessert die RasurqualitĂ€t nicht. Ein speziell ausgewĂ€hlter Rasiercreme, Duft und ein qualitativ hochwertiger Rasierer mit zwei Klingen lösen viel mehr Fragen als diese lĂ€cherlichen 4 Klingen von Gillette! Gehen wir bald auf 10 ĂŒber?

So verĂ€ndert sich die Welt. Unilever behauptet, dass sie ein großartiges IT-System haben, das dies ermöglicht. Am Ende sieht das aus wie das Konzept Time-to-market, ĂŒber das bereits viele gesprochen haben.

Was ist DevOps

Die Bedeutung von Time-to-market liegt nicht darin, wie oft wir deployments durchfĂŒhren. Man kann hĂ€ufig deployen, doch die Release-Zyklen können dabei lang sein. Wenn man dreißig monatliche Release-Zyklen ĂŒbereinanderlegt und um eine Woche verschiebt, scheint es, als ob das Unternehmen einmal pro Woche deployt. Aber von der Idee bis zur endgĂŒltigen Umsetzung vergehen 3 Monate.

Time-to-market bedeutet, die Zeit von der Idee bis zur endgĂŒltigen Umsetzung zu minimieren.

In diesem Fall interagiert die Software mit dem Markt. So interagiert die Website von One Box Shave mit dem Kunden. Sie haben keine VerkĂ€ufer – nur die Website, auf der die Besucher klicken und WĂŒnsche hinterlassen. Daher muss die Website stĂ€ndig neue Inhalte bereitstellen und aktualisiert werden, um den WĂŒnschen gerecht zu werden. Zum Beispiel rasieren sich die Menschen in SĂŒdkorea anders als in Russland und sie bevorzugen im Duft nicht den Geruch von Kiefer, sondern zum Beispiel den von Vanille-Möhren.

Da der Inhalt der Website schnell geĂ€ndert werden muss, verĂ€ndert sich auch die Softwareentwicklung erheblich. Durch die Software mĂŒssen wir herausfinden, was der Kunde will. FrĂŒher haben wir das auf indirektem Weg erfahren, zum Beispiel ĂŒber das Business-Management. Dann entwarfen wir und legten die Anforderungen in das IT-System, und alles lief glatt. Heute ist es anders – die Software wird von allen, die an dem Prozess beteiligt sind, einschließlich der Ingenieure, entworfen, da sie durch technische Spezifikationen erfahren, wie der Markt funktioniert, und auch ihre Einsichten mit dem GeschĂ€ft teilen.

Zum Beispiel haben wir bei der Firma Qik plötzlich erfahren, dass die Leute es sehr mögen, Kontaktlisten auf den Server hochzuladen, und sie haben uns eine App gegeben. Zuvor hatten wir darĂŒber nicht nachgedacht. In einem klassischen Unternehmen hĂ€tte man wahrscheinlich gesagt, das sei ein Bug, weil in der Spezifikation nicht steht, dass es gut funktionieren sollte, und es wurde schließlich improvisiert. Man hĂ€tte die Funktion abgeschaltet und gesagt: "Das braucht keiner, das Wichtigste ist, dass die Grundfunktionen funktionieren." Aber ein technologieorientiertes Unternehmen sieht darin eine Chance und beginnt, die Software entsprechend zu Ă€ndern.

Was ist DevOps

Im Jahr 1968 formulierte der weitsichtige Melvin Conway die folgende Idee.

Eine Organisation, die ein System erstellt, ist durch das Design eingeschrÀnkt, das die Kommunikationsstruktur dieser Organisation widerspiegelt.

Wenn wir ins Detail gehen, um Systeme eines anderen Typs zu produzieren, benötigen wir zusÀtzlich eine Kommunikationsstruktur innerhalb des Unternehmens, die ebenfalls anders ist. Wenn Sie eine hierarchische Kommunikationsstruktur haben, wird dies es Ihnen nicht ermöglichen, Systeme zu schaffen, die eine sehr hohe Time-to-Market-Rate bieten können.

Lesen ĂŒber das Conway-Gesetz kann man ĂŒber die Links. Es ist wichtig fĂŒr das VerstĂ€ndnis der Kultur oder Philosophie von DevOps, da das Einzige, was sich grundlegend in DevOps Ă€ndert, die Kommunikationsstruktur zwischen den Teams ist..

Aus der Sicht des Prozesses liefen vor DevOps alle Phasen: Analyse, Entwicklung, Test, Betrieb, linear.Was ist DevOps
Im Fall von DevOps laufen all diese Prozesse gleichzeitig.

Was ist DevOps

Time-to-Market kann nur so erfĂŒllt werden. FĂŒr Menschen, die im alten Prozess gearbeitet haben, wirkt das etwas futuristisch und im Grunde auch unpraktisch.

Warum ist DevOps notwendig?

FĂŒr die Entwicklung digitaler Produkte. Wenn Ihr Unternehmen kein digitales Produkt hat, ist DevOps nicht nötig – das ist sehr wichtig.

DevOps ĂŒberwindet die Geschwindigkeitsgrenzen des sequentiellen Softwareproduktionsplans. In ihm laufen alle Prozesse gleichzeitig.

Die KomplexitĂ€t nimmt zu. Wenn DevOps-Evangelisten erzĂ€hlen, dass es mit ihm einfacher wird, Software zu veröffentlichen – das ist Unsinn.

Mit DevOps wird alles nur komplizierter.

Auf der Konferenz am Stand von Avito konnte man sehen, was es bedeutet, einen Docker-Container zu deployen – eine unmögliche Aufgabe. Die KomplexitĂ€t wird ĂŒbermenschlich, man muss viele BĂ€lle gleichzeitig jonglieren.

DevOps verĂ€ndert vollstĂ€ndig den Prozess und die Organisation im Unternehmen – genauer gesagt, Ă€ndert nicht DevOps, sondern das digitale Produkt. Um zu DevOps zu gelangen, muss dieser Prozess jedoch vollstĂ€ndig geĂ€ndert werden.

Fragen fĂŒr den Spezialisten

Und was ist mit Ihnen? Fragen, die Sie sich stellen können, wÀhrend Sie im Unternehmen arbeiten und sich als Spezialist weiterentwickeln.

Haben Sie eine Strategie zur Erstellung eines digitalen Produkts? Wenn ja – schon gut. Das bedeutet, dass Ihr Unternehmen in Richtung DevOps geht.

Erstellt Ihr Unternehmen bereits ein digitales Produkt? Das bedeutet, dass Sie noch eine Stufe höher steigen können, interessantere Dinge tun – aus der Sicht von DevOps, um genau zu sein. Nur aus dieser Perspektive spreche ich.

Ist Ihr Unternehmen einer der MarktfĂŒhrer in der Nische mit einem digitalen Produkt? Spotify, Yandex, Uber – Unternehmen, die sich derzeit an der Spitze des technologischen Fortschritts befinden.

Stellen Sie sich diese Fragen, und wenn alle Antworten negativ sind, sollten Sie vielleicht nicht in diesem Unternehmen DevOps praktizieren. Wenn Ihnen jedoch das Thema DevOps wirklich interessiert, sollten Sie vielleicht
 in ein anderes Unternehmen wechseln? Wenn Ihr Unternehmen DevOps umsetzen möchte, Sie aber auf alle Fragen mit „Nein“ geantwortet haben, Ă€hnelt es diesem wunderbaren Nashorn, das sich nie verĂ€ndern wird.

Was ist DevOps

Organisation

Wie ich bereits gesagt habe, verĂ€ndert sich die Organisation in einem Unternehmen gemĂ€ĂŸ dem Conway-Gesetz. Ich beginne mit dem, was DevOps daran hindert, intern im Unternehmen einzudringen, und zwar aus organisatorischer Sicht.

Das Problem der „Silos“

Das englische Wort „Silo“ wird hier auf Russisch als „ĐșĐŸĐ»ĐŸĐŽĐ”Ń†â€œ ĂŒbersetzt. Der Sinn dieses Problems ist, dass es keinen Informationsaustausch zwischen den Teams gibt.Jedes Team grĂ€bt seine Expertise tief, ohne eine gemeinsame Karte zu erstellen, auf der man sich orientieren kann.

Das erinnert an jemanden, der gerade in Moskau angekommen ist und noch nicht weiß, wie man sich mit der U-Bahn-karte orientiert. Muskoviten wissen normalerweise sehr gut Bescheid ĂŒber ihren Stadtteil, und in ganz Moskau orientieren sie sich mit der U-Bahn-Karte. Wenn Sie zum ersten Mal nach Moskau kommen, haben Sie diese FĂ€higkeit nicht und sind einfach orientierungslos.

DevOps schlĂ€gt vor, diesen Moment der Desorientierung zu ĂŒberwinden und allen Abteilungen gemeinsam eine gemeinsame Interaktionskarte zu erstellen.

Zwei Faktoren stehen dem entgegen.

Folge der Corporate Governance. Sie ist aus separaten hierarchischen „Silos“ aufgebaut. Zum Beispiel gibt es bestimmte KPIs in Unternehmen, die dieses System unterstĂŒtzen. Andererseits stehen die Gedanken des Menschen dem im Wege, der Schwierigkeiten hat, ĂŒber seine Expertise hinauszublicken und sich im gesamten System zurechtzufinden. Das ist einfach unbequem. Stellen Sie sich vor, Sie befinden sich am Flughafen von Bangkok – dort ist es schnell schwierig, sich zurechtzufinden. Auch in DevOps ist es kompliziert, den Überblick zu behalten, und deshalb sagen die Leute, dass man einen FĂŒhrer finden muss, um dorthin zu gelangen.

Aber das Wichtigste ist, dass das Problem der „Silos“ fĂŒr einen Ingenieur, der den Geist von DevOps verinnerlicht hat, Fowlers BĂŒcher gelesen hat und viele andere BĂŒcher, darin besteht, dass „Silos“ nicht erlauben, „offensichtliche“ Dinge zu tun.Wir treffen uns oft nach DevOps Moscow, reden miteinander und die Leute beklagen sich:

— Wir wollten einfach nur CI starten, aber es stellte sich heraus, dass das Management das nicht braucht.

Das geschieht genau aus dem Grund, dass CI und Continuous Delivery Prozess an der Grenze vieler Fachgebiete liegen. Wenn das Problem der 'Brunnen' auf organisatorischer Ebene nicht ĂŒberwunden wird, wird es nicht möglich sein, weiterzukommen, egal was Sie tun und wie traurig das auch sein mag.

Was ist DevOps

Jeder Teilnehmer des Prozesses im Unternehmen: Backend- und Frontend-Entwickler, Test, DBA, Betrieb, Netzwerk, arbeitet in seiner eigenen Richtung, wĂ€hrend niemand außer dem Manager eine gemeinsame Übersicht hat, der sie auf eine Art ĂŒberwacht und nach der Methode "teile und herrsche" verwaltet.

Die Leute kÀmpfen um irgendwelche Sternchen oder FÀhnchen, jeder bearbeitet sein eigenes Fachgebiet.

Letztendlich, wenn die Aufgabe auftaucht, all dies zusammenzufĂŒgen und eine gemeinsame Pipeline zu erstellen, und um Sternchen und FĂ€hnchen braucht man nicht mehr zu kĂ€mpfen, stellt sich die Frage – was soll man ĂŒberhaupt tun? Man muss irgendwie einen Konsens finden, aber niemand hat uns in der Schule dazu gelehrt. Wir sind schon seit der Schule daran gewöhnt: Acht Klasse – wow! – im Vergleich zur Siebten! Hier ist es ganz Ă€hnlich.

Ist das auch in Ihrem Unternehmen so?

Um das zu ĂŒberprĂŒfen, kann man sich folgende Fragen stellen.

Nutzen die Teams gemeinsame Werkzeuge, tragen sie zur Änderung dieser gemeinsamen Werkzeuge bei?

Wie oft werden die Teams umgebildet – wechseln Spezialisten aus einem Team in ein anderes? In der DevOps-Umgebung wird das normal, denn manchmal kann eine Person einfach nicht verstehen, was ein anderes Fachgebiet tut. Sie wechselt in eine andere Abteilung, arbeitet dort zwei Wochen, um sich eine Orientierungs- und Interaktionskarte mit dieser Abteilung zu erstellen.

Kann ein Komitee zur Änderung gegrĂŒndet und etwas geĂ€ndert werden? Oder ist dafĂŒr eine starke Hand der obersten FĂŒhrungsebene und eine Anweisung erforderlich? KĂŒrzlich habe ich auf Facebook geschrieben, wie eine wenig bekannte Bank durch Anweisungen Werkzeuge einfĂŒhrt: Sie haben eine Anweisung geschrieben, setzen es ein Jahr um und schauen, was passiert. Das ist natĂŒrlich langwierig und traurig.

Wie wichtig ist es fĂŒr Manager, persönliche Erfolge unabhĂ€ngig von den Erfolgen des Unternehmens zu erzielen?

Wenn Sie diese Fragen fĂŒr sich selbst beantworten, wird klarer, ob Sie ein solches Problem im Unternehmen haben.

Infrastruktur als Code

Nachdem dieses Problem ĂŒberwunden ist, ist die erste wichtige Praxis, ohne die es schwierig ist, im DevOps weiterzukommen – das ist Infrastruktur als Code.

Meistens wird Infrastructure as Code so verstanden:

— Lass uns alles mit bash automatisieren, uns mit Skripten eindecken, damit die Administratoren weniger manuelle Arbeit haben!

Aber das ist nicht so.

Infrastructure as Code bedeutet, dass Sie die IT-Systeme, mit denen Sie arbeiten, in Form von Code beschreiben, um stÀndig ihren Zustand zu verstehen.

Gemeinsam mit anderen Teams erstellen Sie eine Karte in Form von Code, die allen verstĂ€ndlich ist und nach der man navigieren kann. Es spielt keine Rolle, womit das gemacht wird – ob mit Chef, Ansible, Salt oder YAML-Dateien in Kubernetes – es macht keinen Unterschied.

Auf der Konferenz erzĂ€hlte ein Kollege von 2GIS, wie sie ihr internes Tool fĂŒr Kubernetes entwickelt haben, das die Struktur einzelner Systeme beschreibt. Um 500 Systeme zu beschreiben, benötigten sie ein separates Werkzeug, das diese Beschreibung generiert. Wenn man diese Beschreibung hat, kann jeder sich gegenseitig abgleichen, Änderungen ĂŒberwachen, wie man sie verĂ€ndern und verbessern kann und was fehlt.

Sie mĂŒssen zustimmen, dass separate bash-Skripte normalerweise nicht zu diesem VerstĂ€ndnis fĂŒhren. In einer der Firmen, in denen ich gearbeitet habe, gab es sogar den Begriff „write only“-Skript – wenn das Skript geschrieben ist, kann man es nicht mehr lesen. Ich glaube, das ist Ihnen auch bekannt.

Infrastructure as Code ist Code, der den aktuellen Zustand der Infrastruktur beschreibt. An diesem Code arbeiten gemeinsam viele Produkt-, Infrastruktur- und Serviceteams, und das Wichtigste ist, dass alle verstehen mĂŒssen, wie dieser Code ĂŒberhaupt funktioniert.

Der Code wird entsprechend den besten Praktiken fĂŒr die Arbeit mit Code gepflegt: gemeinsame Entwicklung, Code-Reviews, XP-Programmierung, Tests, Pull-Requests, CI fĂŒr Infrastructure as Code – das alles ist wertvoll und kann verwendet werden.

Der Code wird zur gemeinsamen Sprache fĂŒr alle Ingenieure.

Änderungen an der Infrastruktur im Code nehmen nicht viel Zeit in Anspruch. Ja, auch im Infrastrukturcode kann es technische Schulden geben. Normalerweise stoßen Teams nach anderthalb Jahren auf diese, nachdem sie angefangen haben, „Infrastructure as Code“ in Form von vielen Skripten oder sogar Ansible einzufĂŒhren, das sie wie Spaghetticode schreiben und dazu noch bash-Skripte hineinschieben!

Wichtig: Wenn Sie diesen Mist noch nicht ausprobiert haben, merken Sie sich, dass Ansible – nicht bashBitte lesen Sie die Dokumentation sorgfĂ€ltig und erfahren Sie, was darĂŒber gesagt wird.

Infrastructure as Code bedeutet, den Infrastrukturcode in separate Schichten zu unterteilen.

In unserem Unternehmen unterscheiden wir 3 grundlegende Schichten, die sehr klar und einfach verstĂ€ndlich sind, aber es können auch mehr sein. Sie können Ihren Infrastrukturcode ĂŒberprĂŒfen und feststellen, ob Sie diese Bedingung erfĂŒllen oder nicht. Wenn keine Schichten erkennbar sind, sollten Sie sich Zeit nehmen, um ein wenig zu refaktorisieren.
Was ist DevOps

Basis-Schicht — das sind die Einstellungen fĂŒr das Betriebssystem, Backups und andere Low-Level-Dinge, wie zum Beispiel, wie Kubernetes auf Basisniveau bereitgestellt wird.

Service-Ebene — das sind die Dienste, die Sie den Entwicklern anbieten: Logging als Dienst, Monitoring als Dienst, Datenbank als Dienst, Lastenausgleich als Dienst, Warteschlange als Dienst, Continuous Delivery als Dienst – viele Dienste, die verschiedene Teams der Entwicklung zur VerfĂŒgung stellen können. All dies muss in Ihrer Konfigurationsverwaltung als separate Module beschrieben werden.

Schicht, in der Anwendungen erstellt werden und beschrieben wird, wie sie auf den beiden vorhergehenden Schichten bereitgestellt werden.

Kontrollfragen

Haben Sie in Ihrem Unternehmen ein gemeinsames Infrastruktur-Repository? Überwachen Sie die technische Schuld in der Infrastruktur? Setzen Sie Entwicklungspraktiken im Infrastruktur-Repository ein? Ist Ihre Infrastruktur in Schichten unterteilt? Sie können sich an dem Schema Base-service-APP orientieren. Wie schwierig ist es, eine Änderung vorzunehmen?

Wenn Sie festgestellt haben, dass Änderungen eineinhalb Tage in Anspruch genommen haben, bedeutet das, dass Sie technische Schulden haben, mit denen Sie sich befassen sollten. Sie sind auf die Stolpersteine der technischen Schulden im Infrastrukturcode gestoßen. Ich erinnere mich an viele Geschichten, in denen man, um einen bestimmten CCTL zu Ă€ndern, die HĂ€lfte des Infrastrukturcodes neu schreiben musste, weil KreativitĂ€t und der Wunsch, alles zu automatisieren, dazu gefĂŒhrt haben, dass ĂŒberall alles zugeschraubt wurde, alle Handgriffe entfernt wurden und Refaktorisierung notwendig ist.

Kontinuierliche Lieferung

Lassen Sie uns das Debit mit dem Kredit abgleichen. ZunĂ€chst erscheint eine Beschreibung der Infrastruktur, die ziemlich einfach sein kann. Es ist nicht erforderlich, alles im Detail zu beschreiben, aber eine grundlegende Beschreibung ist erforderlich, damit Sie damit arbeiten können. Andernfalls ist es unklar, auf welcher Grundlage Sie die kontinuierliche Lieferung durchfĂŒhren können. All diese Praktiken entfallen gleichzeitig, wenn Sie zu DevOps kommen, aber Sie mĂŒssen mit dem VerstĂ€ndnis beginnen, was Sie haben und wie Sie es verwalten. Dies ist die Praxis der Infrastruktur als Code.

Nachdem verstĂ€ndlich wurde, was Sie haben und wie Sie damit umgehen, beginnen Sie zu ĂŒberlegen, wie der Entwicklercode so schnell wie möglich in die Produktion gebracht werden kann. Ich meine zusammen mit dem Entwickler - denken wir an das Problem der „Brunnen“, das heißt, es sind nicht einzelne Personen, die das erdenken, sondern das Team.

Als wir Ivan Evtuchovich das erste Buch sahen Jez Humble und die Gruppe von Autoren „Continuous Delivery“, das 2009 veröffentlicht wurde, dachten wir lange darĂŒber nach, wie wir seinen Titel ins Russische ĂŒbersetzen können. Wir wollten es als „StĂ€ndig liefern“ ĂŒbersetzen, aber leider ĂŒbersetzten wir es als „Kontinuierliche Lieferung“. Ich glaube, dass in unserem Titel etwas Russisches steckt, mit Schwung.

StÀndig liefern bedeutet

Der Code, der im Produktrepository liegt, kann jederzeit in die Produktion gebracht werden. Er kann ungenutzt bleiben, ist aber immer bereit dafĂŒr. Daher schreiben Sie immer Code mit einem schwer zu erklĂ€renden GefĂŒhl der gewissenhaften Besorgnis im Hinterkopf. Dieses GefĂŒhl tritt hĂ€ufig auf, wenn Sie Infrastrukturcode ausrollen. Dieses GefĂŒhl der Besorgnis sollte vorhanden sein - es fördert Denkprozesse, die es ermöglichen, Code ein wenig anders zu schreiben. Das sollte in den Regeln innerhalb der Entwicklung verankert werden.

Um stĂ€ndig zu liefern, benötigen Sie ein Artefaktformat, das durch die Infrastrukturplattform geht. Wenn Sie unterschiedliche Formate von „AbfĂ€llen der LebensfĂŒhrung“ durch die Infrastrukturplattform werfen, wird sie nicht mehr einheitlich, es wird schwierig, sie zu unterstĂŒtzen, und es entsteht ein technisches Schuldenproblem. Das Artefaktformat muss angeglichen werden - das ist auch eine kollektive Aufgabe: Alle mĂŒssen sich zusammenfinden, ihre Köpfe zusammenstecken und dieses Format erarbeiten.

Das Artefakt verbessert sich kontinuierlich und Ă€ndert sich gemĂ€ĂŸ der Produktionsumgebung wĂ€hrend des Durchlaufs durch die Lieferpipeline. Wenn das Artefakt durch die Pipeline bewegt wird, begegnet es stĂ€ndig einigen unangenehmen Dingen, die dem Ă€hneln, mit denen es im Produktionsumfeld konfrontiert wird. WĂ€hrend in der klassischen Softwareentwicklung dies ein Systemadministrator ĂŒbernimmt, der das Deployment durchfĂŒhrt, geschieht dies im DevOps-Prozess kontinuierlich: Hier wurde es durch einige Tests gedreht, dort wurde es in einen Kubernetes-Cluster eingefĂŒgt, der mehr oder weniger der Produktionsumgebung Ă€hnelt, und hier wurde plötzlich ein Lasttest gestartet.

Das erinnert an das Spiel Pac-Man – das Artefakt durchlĂ€uft eine Art Geschichte. Dabei ist es wichtig zu ĂŒberwachen, ob der Code tatsĂ€chlich die Geschichte durchlĂ€uft und ob sie mit Ihrer Produktionsumgebung verbunden ist. Geschichten aus der Produktion können in den Continuous Delivery-Prozess integriert werden: Es gab zum Beispiel einen Vorfall, als etwas ausgefallen ist, also lassen Sie uns dieses Szenario einfach in das System programmieren. Jedes Mal wird der Code auch dieses Szenario durchlaufen, und Sie werden das nĂ€chste Mal nicht mit diesem Problem konfrontiert. Sie werden viel frĂŒher davon erfahren, bevor es zu Ihrem Kunden kommt.

Verschiedene Deployment-Strategien. Zum Beispiel verwenden Sie A/B-Tests oder Canary-Deployments, um den Code auf verschiedene Arten bei unterschiedlichen Kunden zu testen, Informationen darĂŒber zu erhalten, wie der Code funktioniert, und das viel frĂŒher, als wenn er an 100 Millionen Benutzer freigegeben wird.

„Stetige Lieferung“ sieht so aus.

Was ist DevOps

Der Prozess der Lieferung Dev, CI, Test, PreProd, Prod ist keine separate Umgebung, sondern Stufen oder Stationen mit nicht brennbaren Summen, durch die Ihr Artefakt lÀuft.

Wenn Sie Code fĂŒr Infrastruktur haben, der als Basisdienst-App beschrieben ist, hilft er nicht alle Szenarien zu vergessen,, und sie ebenfalls in Form von Code fĂŒr dieses Artefakt zu dokumentieren, das Artefakt voranzubringen und es unterwegs zu Ă€ndern.

Fragen zur SelbstĂŒberprĂŒfung

Dauert es von der Beschreibung des Features bis zur Veröffentlichung in der Produktion in 95 % der FÀlle weniger als eine Woche? Steigt die QualitÀt des Artefakts in jeder Phase der Pipeline? Gibt es eine Geschichte, durch die es lÀuft? Verwenden Sie verschiedene Deployment-Strategien?

Wenn alle Antworten ja sind, dann sind Sie unglaublich toll! Schreiben Sie Ihre Antworten in die Kommentare – ich wĂŒrde mich freuen).

Feedback

Dies ist die schwierigste Praxis von allen. Auf der Konferenz DevOpsConf war ein Kollege von Infobip, der darĂŒber sprach, etwas verwirrt in seinen Worten, denn es ist wirklich eine sehr komplexe Praxis, bei der man alles ĂŒberwachen muss!

Was ist DevOps

Vor langer Zeit, als ich bei Qik arbeitete und wir festgestellt haben, dass wir alles ĂŒberwachen mĂŒssen. Wir haben das getan und in Zabbix hatten wir 150.000 Items, die stĂ€ndig ĂŒberwacht werden. Das war beĂ€ngstigend, der technische Direktor hat sich nur am Kopf gekratzt:

— Leute, warum quĂ€lt ihr den Server mit undefinierbaren Dingen?

Aber dann geschah ein Vorfall, der zeigte, dass dies tatsÀchlich eine sehr coole Strategie ist.

Einer der Dienste begann stĂ€ndig abzustĂŒrzen. Interessanterweise ist er anfangs nicht abgestĂŒrzt, da dort kein Code hinzugefĂŒgt wurde, denn es war ein Basisbroker, in dem praktisch keine Business-FunktionalitĂ€ten waren – er ĂŒbertrug einfach Nachrichten zwischen einzelnen Diensten. Der Dienst hatte sich vier Monate lang nicht geĂ€ndert und begann plötzlich mit einem „Segmentation fault“ abzustĂŒrzen.

Wir waren schockiert, öffneten unsere Grafiken in Zabbix, und es stellte sich heraus, dass vor anderthalb Wochen das Verhalten der Anfragen im API-Dienst, der diesen Broker verwendet, sich stark geÀndert hatte. Danach sahen wir, dass sich die HÀufigkeit des Sendens eines bestimmten Nachrichtentyps geÀndert hatte. SpÀter haben wir festgestellt, dass es sich um die Android-Clients handelte. Wir fragten:

— Leute, was ist vor anderthalb Wochen passiert?

Als Antwort erhielten wir eine interessante Geschichte, dass sie das UI umgestaltet hatten. Kaum jemand wĂŒrde sofort sagen, dass er die HTTP-Bibliothek gewechselt hat. FĂŒr Android-Clients ist es wie wenn man die Seife im Bad wechselt – sie erinnern sich einfach nicht daran. Letztendlich haben wir nach 40 Minuten GesprĂ€ch herausgefunden, dass sie tatsĂ€chlich die HTTP-Bibliothek gewechselt hatten und sich die Standard-Timings geĂ€ndert hatten. Das fĂŒhrte dazu, dass sich das Verhalten des Traffics auf dem API-Server Ă€nderte, was zu der Situation fĂŒhrte, die eine Kollision innerhalb des Brokers verursachte, und er begann abzustĂŒrzen.

Ohne tiefgehende Überwachung ist das ĂŒberhaupt nicht zu erkennen.. Wenn es in der Organisation jedoch noch das Problem der "Brunnen" gibt, bei dem jeder die Verantwortung auf den anderen schiebt, kann das jahrelang bestehen bleiben. Sie starten einfach den Server neu, weil das Problem nicht gelöst werden kann. Wenn Sie alle Ereignisse, die Sie haben, ĂŒberwachen, verfolgen und analysieren und das Monitoring als ein Test-Tool verwenden – indem Sie Code schreiben und sofort angeben, wie er ĂŒberwacht werden soll, auch in Form von Code (wir haben bereits Infrastruktur als Code), wird alles so klar wie der Handballen. Sogar solch komplexe Probleme sind leicht nachzuvollziehen.

Was ist DevOps

Sammeln Sie alle Informationen darĂŒber, was mit dem Artefakt in jeder Phase des Lieferprozesses geschieht – nicht in der Produktion.

Laden Sie das Monitoring in CI, und dort werden bereits einige grundlegende Dinge sichtbar sein. Außerdem werden Sie diese auch im Test, im PredProd und im Lasttest sehen. Sammeln Sie Informationen in allen Phasen, nicht nur Metriken, Statistiken, sondern auch Logs: wie die Anwendung ausgerollt wurde, Anomalien – sammeln Sie alles.

Andernfalls wird es schwierig sein, sich zurechtzufinden. Ich habe bereits gesagt, dass DevOps eine grĂ¶ĂŸere KomplexitĂ€t mit sich bringt. Um mit dieser KomplexitĂ€t umzugehen, benötigt man eine angemessene Analytik..

Fragen zur Selbstkontrolle

Ist Ihr Monitoring und Logging ein Entwicklungswerkzeug fĂŒr Sie? Denken Ihre Entwickler, einschließlich Ihnen, beim Schreiben von Code darĂŒber nach, wie er ĂŒberwacht werden kann?

Erfahren Sie von Problemen durch Kunden? Verstehen Sie den Kunden besser durch das Monitoring und Logging? Verstehen Sie das System besser durch das Monitoring und Logging? Ändern Sie das System einfach, weil Sie gesehen haben, dass der Trend im System steigt und Sie verstehen, dass in 3 Wochen alles zusammenbricht?

Wenn Sie diese drei Komponenten haben, können Sie ĂŒber die infrastrukturelle Plattform in Ihrem Unternehmen nachdenken.

Infrastrukturelle Plattform

Es geht nicht darum, dass dies eine Sammlung von voneinander unabhÀngigen Werkzeugen ist, die in jedem Unternehmen vorhanden sind.

Der Sinn einer infrastrukturellen Plattform besteht darin, dass alle Teams diese Werkzeuge nutzen und gemeinsam weiterentwickeln.

Es ist klar, dass es separate Teams gibt, die fĂŒr die Entwicklung einzelner Teile der infrastrukturellen Plattform verantwortlich sind. Aber die Verantwortung fĂŒr die Entwicklung, FunktionsfĂ€higkeit und Förderung der infrastrukturellen Plattform trĂ€gt jeder Ingenieur. Auf interner Ebene wird dies zu einem gemeinsamen Werkzeug..

Alle Teams entwickeln eine Infrastrukturplattform und behandeln sie sorgfĂ€ltig wie ihre eigene IDE.. In Ihrer IDE installieren Sie verschiedene Plugins, um alles schön und schnell zu gestalten, und konfigurieren Tastenkombinationen. Wenn Sie Sublime, Atom oder Visual Studio Code öffnen, fallen sofort Fehler im Code auf und Sie merken, dass es ĂŒberhaupt unmöglich ist zu arbeiten. Sofort wird Ihnen schlecht und Sie laufen los, um Ihre IDE zu reparieren.

Behandeln Sie Ihre Infrastrukturplattform genauso. Wenn Sie merken, dass etwas nicht stimmt, stellen Sie eine Anfrage, wenn Sie es nicht selbst reparieren können. Wenn es jedoch etwas Einfaches ist – beheben Sie es selbst, senden Sie eine Pull-Request – die Kollegen prĂŒfen, fĂŒgen hinzu. Dies ist ein etwas anderer Ansatz im Ingenieurwesen fĂŒr den Kopf des Entwicklers.

Die Infrastrukturplattform sorgt dafĂŒr, dass Artefakte von der Entwicklung zum Kunden mit stĂ€ndig steigender QualitĂ€t ĂŒbertragen werden.. In der IP ist eine Reihe von Geschichten programmiert, die mit dem Code in Produktion passieren. Über die Jahre der Entwicklung werden diese Geschichten sehr zahlreich, einige davon sind einzigartig und beziehen sich nur auf Sie – sie sind nicht googlbar.

In diesem Moment wird die Infrastrukturplattform zu Ihrem Wettbewerbsvorteil., weil darin Dinge eingebaut sind, die kein Werkzeug des Wettbewerbers hat. Je tiefer Ihre IP ist, desto grĂ¶ĂŸer ist Ihr Wettbewerbsvorteil in Bezug auf die Time-to-market. Hier tritt das Problem des Vendor Lock-inauf: Sie können sich eine fremde Plattform nehmen, aber wenn Sie auf die Erfahrung anderer zurĂŒckgreifen, werden Sie nicht verstehen, inwieweit diese relevant fĂŒr Sie ist. Ja, nicht jedes Unternehmen kann eine Plattform wie Amazon aufbauen. Das ist eine schwierige Grenze, wo die Erfahrung des Unternehmens fĂŒr seine Position auf dem Markt relevant ist, und den Vendor Lock-in sollte man dort nicht herunterlassen. DarĂŒber muss man auch nachdenken.

Diagramm

Das ist das grundlegende Schema einer Infrastrukturplattform, das Ihnen helfen wird, alle Praktiken und Prozesse in einem DevOps-Unternehmen zu etablieren.

Was ist DevOps

Lassen Sie uns betrachten, woraus sie besteht.

Ein System zur Orchestrierung von Ressourcen, das CPU, Speicher, Festplatten fĂŒr Anwendungen und andere Dienste bereitstellt. DarĂŒber hinaus gibt es niedrigere Dienste: Überwachung, Protokollierung, CI/CD-Engine, Artefakt-Speicher, Infrastruktur als Code-Systeme.

Höhere Dienste.: Datenbank als Dienst, Warteschlangen als Dienst, Load Balancer als Dienst, BildgrĂ¶ĂŸenĂ€nderung als Dienst, Big Data Fabrik als Dienst. DarĂŒber hinaus — pipeline, die stĂ€ndig modifizierten Code an Ihren Kunden liefert.

Sie erhalten Informationen darĂŒber, wie Ihre Software beim Kunden funktioniert, Ă€ndern, liefern diesen Code erneut, erhalten Informationen — und entwickeln damit stĂ€ndig sowohl die Infrastrukturplattform als auch Ihre Software weiter.

In dem Diagramm besteht die Delivery-Pipeline aus mehreren Phasen. Aber das ist ein grundlegendes Schema, das als Beispiel dient — es muss nicht eins zu eins wiederholt werden. Die Phasen interagieren mit Diensten, als wĂ€ren es Dienste — jeder Baustein der Plattform erzĂ€hlt seine eigene Geschichte: wie Ressourcen zugewiesen werden, wie die Anwendung gestartet wird, mit Ressourcen arbeitet, ĂŒberwacht wird und sich Ă€ndert.

Es ist wichtig zu verstehen, dass jeder Teil der Plattform eine Geschichte erzĂ€hlt, und sich zu fragen — welche Geschichte erzĂ€hlt dieser Baustein, vielleicht sollte man ihn wegwerfen und durch einen externen Dienst ersetzen. Zum Beispiel, könnte man anstelle des Bausteins Okmeter verwenden? Möglicherweise haben die Leute diese Expertise bereits viel mehr entwickelt als wir. Aber vielleicht auch nicht — vielleicht haben wir eine einzigartige Expertise, und wir mĂŒssen Prometheus einsetzen und das weiterentwickeln.

Plattformerstellung

Das ist ein komplexer Kommunikationsprozess. Wenn Sie grundlegende Praktiken haben, initiieren Sie die Kommunikation zwischen verschiedenen Ingenieuren und Spezialisten, die Anforderungen und Standards entwickeln und diese stĂ€ndig fĂŒr verschiedene Werkzeuge und AnsĂ€tze anpassen. Hier ist die Kultur wichtig, die in DevOps vorhanden ist.

Was ist DevOps
Mit der Kultur ist alles sehr einfach — es sind Zusammenarbeit und Kommunikation, das heißt, der Wunsch, gemeinsam im selben Bereich zu arbeiten, der Wunsch, ein Werkzeug gemeinsam zu beherrschen. Es gibt hier keine Raketenwissenschaft — alles ist sehr einfach, banal. Zum Beispiel leben wir alle im Treppenhaus und halten es sauber — so sieht diese Kultur aus.

Und wie sieht es bei Ihnen aus?

Wieder Fragen, die Sie sich stellen können.

Wurde die Infrastrukturplattform ĐČŃ‹ĐŽĐ”Đ»Đ”ĐœĐ°? Wer ist fĂŒr ihre Entwicklung verantwortlich? Verstehen Sie die Wettbewerbsvorteile Ihrer Infrastrukturplattform?

Diese Fragen sollte man sich stÀndig stellen. Wenn etwas an externe Dienste ausgelagert werden kann, sollte man es auslagern. Wenn ein externer Dienst beginnt, Ihre Bewegungen zu blockieren, muss man ein System in sich selbst aufbauen.

Also, DevOps...

... es ist ein komplexes System, das Folgendes enthalten sollte:

  • Ein digitales Produkt.
  • GeschĂ€ftsmodelle, die dieses digitale Produkt weiterentwickeln.
  • Entwicklungsteams, die Code schreiben.
  • Continuous Delivery-Praktiken.
  • Plattformen als Dienst.
  • Infrastruktur als Dienst.
  • Infrastruktur als Code.
  • Einzelne Praktiken zur Sicherstellung der ZuverlĂ€ssigkeit, die in DevOps verankert sind.
  • Eine Feedback-Praxis, die all dies beschreibt.

Was ist DevOps

Man kann dieses Schema nutzen und darin das markieren, was es in Ihrem Unternehmen bereits in irgendeiner Form gibt: hat sich entwickelt oder muss noch entwickelt werden.

In ein paar Wochen findet statt DevOpsConf 2019. im Rahmen von RIT++. Kommen Sie zur Konferenz, wo Sie viele spannende VortrĂ€ge ĂŒber Continuous Delivery, Infrastruktur als Code und DevOps-Transformation erwarten. Buchen Sie Ihre Tickets, der letzte Stichtag fĂŒr die Preise ist der 20. Mai

Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster