Unternehmensinfrastruktur als Produkt

Infrastruktur ist das, wovon die Arbeit und der Gewinn des IT-Geschäfts abhängen. Alle Prozesse, die mit Code vom Computer des Entwicklers bis zur Produktion ablaufen, hängen vom unterbrechungsfreien Betrieb von Servern, Software und externen Diensten ab. Wenn die Infrastruktur nicht ordnungsgemäß funktioniert, verliert das Unternehmen Gewinn.

Startups achten nicht besonders auf die Infrastruktur - sie müssen das Produkt kürzen, bis den Investoren das Geld ausgeht. Große Unternehmen sind dem nicht mehr gewachsen - wir haben hier Tausende von Aufgaben, wir müssen arbeiten.

Das Verständnis, dass die Infrastruktur eines IT-Unternehmens auch ein Produkt ist, dass es ein Ziel hat, dass es notwendig ist, Kosten zu berücksichtigen und Kennzahlen zu verfolgen, reicht oft nicht aus.


Wissen Sie, wie viel Ihre Infrastruktur kostet: Server, Software, externe Dienste? Was denkst du, was kostet es, nach welchen Maßstäben? Wie viel verlieren Sie, wenn etwas fällt oder kein Backup vorhanden ist? Artyom Naumenko (@entsu) von Skyeng kennt die Antworten auf diese Fragen. Er arbeitete sowohl in Unternehmen mit zwei Entwicklern im Bundesstaat als auch in Unternehmen mit tausend Mitarbeitern. Derzeit verwaltet er die Infrastruktur in Skyeng und gleichzeitig das Skyeng-Kinderlernzentrum. Artem wird erzählen, wie das Unternehmen die Infrastruktur aufbaut, wie es damit Geld verdient und welche Fehler nicht gemacht werden sollten.

Über die Firma


Skyeng ist ein junges Unternehmen, es ist erst 6 Jahre alt. Aber die ganze Zeit ist es dreimal im Jahr gewachsen.



Dies bedeutet, dass die Infrastruktur auch jedes Jahr dreimal wächst. Heute haben wir 100 Server, 300 pro Jahr und 900 in zwei. Das ist nicht einfach, wir arbeiten hart daran, ein solches Wachstum sicherzustellen.

Skyeng ist ein IT-Unternehmen. Das Unternehmen ist jung, es gibt noch nicht viel Vermächtnis, alles ist Standard für den PHP-Stack:

  • PHP
  • Winkelig
  • PostgreSQL
  • Linux, auf dem sich alles dreht.

Über hundert Entwickler. Das Unternehmen wächst und bis Ende des Jahres wird es weitere geben.



Die meisten unserer Dienstleistungen werden von uns geschrieben, und das gesamte Geschäft des Unternehmens basiert auf einer eigenen Infrastruktur. Es wird von einem Infrastruktur-Team von 6 Personen überwacht. Wir stellen alle Prozesse bereit, die mit dem Code vom Computer des Entwicklers bis zur Produktion ablaufen. Der Code wird auf unseren virtuellen Maschinen und Servern entwickelt, Bereitstellung - mit Hilfe unserer konfigurierten Jenkins und unserer Bereitstellungstools erfolgt der Produktionsbetrieb auch auf unseren Servern, die wir verwalten.

Das Ziel des Unternehmens ist es, in 2 Jahren siebenmal zu wachsen. Die Infrastruktur sollte ähnlich wachsen. Um das Ziel zu erreichen, arbeitet jedes Mitglied des Devops-Teams wie ein Ochse. Jedes Jahr sollten wir dreimal besser sein als letztes Jahr und in Zukunft siebenmal besser. Bei Skyeng interessiert sich niemand für schöne Geschichten, die "versucht, aber gescheitert" sind. Das Ergebnis ist wichtig, nicht der Prozess.

Grundsätze für den Aufbau der Infrastruktur


Das Geschäft eines IT-Unternehmens arbeitet mit Infrastruktur. Wenn es nicht funktioniert, funktioniert das Geschäft nicht, sei es Yandex, Amazon oder Skyeng. Wir sind uns dessen bewusst, daher ist es für eine coole Infrastruktur zunächst wichtig , ein Ziel zu setzen . Es klingt wie eine Rede von Tony Robbins, aber ohne ein Ziel wird nichts funktionieren.

Das Ziel muss aus zwei Gründen festgelegt werden.

  • Wenn Sie ein Ziel haben, bewegen Sie sich darauf zu.
  • Wenn es kein Ziel gibt, kann man nirgendwo hingehen. Selbst wenn Sie irgendwohin kommen, werden Sie nicht in der Lage sein, das erreichte Ziel zu erreichen.

Wenn es kein Ziel gibt, ist es unmöglich zu erreichen.

Unternehmensprobleme


Zielsetzung allein reicht nicht aus. Das Ziel des Unternehmens ist es, in 2 Jahren siebenmal zu wachsen. Während des Wachstums wird es Probleme geben. Sie variieren je nach Größe und Art des Unternehmens.

Die erste Art von Unternehmen und Menschen sind Startups . Im Bild unten „typisches Startup“ - ein Floß und ein kleines Team, das versucht, irgendwo darauf wegzuschwimmen. Die Vorteile eines Startups sind, dass jedes Mitglied des Teams versteht, wohin sich das Team bewegt, wer was tut und was er tun muss, um ein gemeinsames Ziel zu erreichen.



Das Problem bei Startups ist der Geldmangel. Wenn eine große Menge von Aufgaben auf die Entwickler fällt, hat er keine Zeit und fragt sich einen Assistenten. Normalerweise bekommt er die Antwort: „Warum? Du schaffst alle Regeln - mach weiter! “

Der nächste Typ sind riesige Schiffe . Einige Mitglieder der Schiffsbesatzung sehen nicht, wo sie segelt. Sie erfüllen ihre kleine Funktion, zum Beispiel werfen sie Kohle in den Ofen und verstehen nicht, was global passiert.



Das Hauptproblem bei Schiffen ist, dass immer mehr Aufgaben benötigt werden. Einhundert Kunden, für jedes Problem ist nicht klar, wie Prioritäten gesetzt werden sollen, das Gesamtbild ist unscharf, aber wir arbeiten daran! Zeit ist nie genug und es werden immer mehr Aufgaben benötigt. Ein Team wird niemals in der Lage sein, ein Förderband zu bauen, das Kohle in den Ofen wirft, um wichtige Aufgaben zu erledigen.

Der dritte Typ ist Führer . Das Hauptproblem für Infrastrukturbetreiber sind teure Server, teure Infrastruktur und ein mangelndes Verständnis dafür, wie sich Infrastrukturkosten im Allgemeinen auf den Geschäftsumsatz auswirken. Der Manager muss irgendwie Fragen beantworten, warum es so viele Millionen für Server gibt, ob wir weniger lügen, wenn wir mehr bezahlen, und was passieren wird, wenn wir weniger bezahlen.


Infrastrukturziele


Ich werde beschreiben, welche Ziele in Skyeng wir im Kontext der globalen Unternehmensziele für unsere Infrastruktur festgelegt haben und wie wir diese erreichen. Infrastruktur hat 4 Ziele.

Behalten Sie das Budget im Auge . Ein Unternehmen ist eine kommerzielle Struktur, um Geld zu verdienen, also müssen wir sie zählen.

Lösen Sie Aufgaben schnell . Sie haben den Server nicht rechtzeitig erhöht, der neue Dienst des Unternehmens wird nicht gestartet und wird kein Geld verdienen. Das Backup wurde nicht rechtzeitig wiederhergestellt - wieder wird etwas nicht funktionieren und das Unternehmen wird Gewinn verlieren.

Bequemlichkeit der Entwickler . Dieser Artikel bedarf einer gesonderten Erläuterung. Im vergangenen Jahr gab Skyeng 600 Millionen Rubel für die Entwicklung aus. Wenn wir als Infrastruktur die Geschwindigkeit der Entwickler um mindestens 1% erhöht hätten, hätten wir 6 Millionen verdient. Wenn Sie zwei Mitarbeiter in Vollzeit beschäftigen, was die Produktivität um 1% erhöht, ist dies rentabel.

Langfristiges Ergebnis . Wir sollten uns nicht einmal anstrengen, etwas Cooles tun, damit alle glücklich sind, und dann würde alles zusammenbrechen. Was wir tun, sollte lange funktionieren.

Damit dies funktioniert, müssen Metriken erfunden werden. Sie müssen messbar sein, sonst sind es keine Ziele, sondern Unsinn. Ziele sollten in Zahlen und Grafiken ausgedrückt werden.

Lassen Sie uns die Punkte genauer betrachten.

Das Budget


Die Messung der Infrastruktur nach Unternehmen ist der Teil der Ausgaben des Unternehmens für die Infrastruktur.



Skyeng ist eine Schule und der Hauptwert ist eine Lektion. Eine durchschnittliche Lektion kostet 800 Rubel. Davon entfallen 12 auf die Infrastruktur: Server und Entwickler.



Der Anteil der Infrastruktur sinkt, wir arbeiten daran. Davon profitieren wir, Unternehmen und Kunden. Sie können billige Server nehmen, nicht sichern und diesen Zeitplan noch mehr löschen. Dies ist jedoch falsch. Es müssen nicht nur die Infrastrukturkosten, sondern auch die Infrastrukturkosten und die erwarteten Verluste durch Stürze berücksichtigt werden.

Für jeden Service berücksichtigen wir, wie viel Geld pro Stunde wir durch den Fall verlieren. Wir führen ein detailliertes Protokoll darüber, wann und welcher Dienst gelogen hat und wie viel wir dabei verloren haben.


Die Liste der Verluste aus fällt im vergangenen Jahr.

Die meisten Verluste im zweiten Quartal 2018 - Hallo an Roskomnadzor! Die Infrastrukturausgaben im letzten Jahr betrugen 20 Millionen, die Ausgaben für sinkende 5 Millionen. Wenn wir alles reserviert hätten, hätten wir uns vor Roskomnadzor gerettet, aber wir wären immer noch um 15 Millionen in den roten Zahlen.

Es ist für Unternehmen unrentabel, alles zu duplizieren. Man muss sich überlegen, was man duplizieren soll und was nicht.

Wir duplizieren die Dienste, für die die Kosten für einen zusätzlichen Server oder eine zusätzliche Datenbank niedriger sind als die erwarteten Risiken durch Stürze.

Mach es schnell


Wir messen den Prozentsatz der Aufgaben, die am Tag der Einstellung erledigt sind. Die Infrastruktur enthält viele Aufgaben, die hier und jetzt gelöst werden müssen. Andere Teams, die ihre Arbeit nicht erledigen können, hängen davon ab. Große Aufgaben, die Wochen dauern, werden separat betrachtet.


Planen Sie Aufgaben am Tag der Einstellung.

Gemäß dem Zeitplan beträgt die Wahrscheinlichkeit, eine Aufgabe am Tag der Einstellung zu erledigen, ungefähr 80%. Wir sehen diese Grafik und glauben, dass alles cool ist. Aber andere Teams denken möglicherweise nicht so und bewerten anders. Daher führen wir Umfragen bei anderen Teams durch.


Umfragebeispiel.

Wir führen Umfragen über das übliche Google-Formular mit Fragen durch. Entwickler und unsere anderen Kunden reagieren regelmäßig auf sie.


Das Ergebnis der Umfrage zur Geschwindigkeit der Infrastruktur.

Der aktuelle Stand der Dinge wird durch Umfragen gut beschrieben, aber nicht die Zukunft. Um die Wahrscheinlichkeit der zukünftigen Situation zu beurteilen, messen wir die Anzahl der ausgeführten Aufgaben mithilfe der Pull-Anforderung. Dies wird in ein oder zwei Jahren von Nutzen sein.

Vor sechs Monaten haben wir beschlossen, auf "Infrastruktur als Code" umzusteigen. Hier messen wir alle Anforderungen an die Infrastruktur: Füllen Sie einen Speicherauszug oder ein Protokoll aus, korrigieren Sie den Nginx-Punkt auf dem Produkt oder erstellen Sie einen neuen Server. Dies sind alles Anfragen, und wir bewerten sie alle anhand der Anzahl der Pull-Anfragen. In Zukunft möchten wir, dass jede Anfrage mit Hilfe einer Pull-Anfrage gelöst wird oder dass wir einfach nicht gefragt werden.

Wir wissen, dass der Ansatz „Infrastruktur als Code“ drei Hauptprämien bietet:

  • Reduzierung der Änderungskosten;
  • erhöhte Änderungsrate;
  • Risikominderung.

Wir brauchen alle drei, also bewegen wir uns auf diese Weise und messen, wie nahe wir kommen.



Für Protokolle gibt es ein Visualisierungssystem, für die Ausgabe von Zugriffen gibt es Terraform. Sie können ein System erstellen, in dem alles automatisiert wird. Idealerweise sollte dieses Diagramm 100% gehen. Wenn ein Aufruf mit Code getätigt wird, können wir ihn schnell ausführen und genauso schnell auf einer anderen Infrastruktur bereitstellen.

Dies ist praktisch für Entwickler


Dies ist wichtig für Skyeng. Wir haben jetzt 100 Entwickler, bis Ende des Jahres werden es 120 sein. Es ist wichtig, dass sie effizient arbeiten. Wir wollen Leute aus einem bestimmten Grund einstellen, wir brauchen diejenigen, die das Unternehmen verbessern.

Die einzige und wichtigste Messgröße für Entwickler ist das Ergebnis einer Umfrage zur Zufriedenheit mit dem Infrastruktur-Team.


Im Allgemeinen ist alles in Ordnung.

Die meisten schätzen uns gut. Wenn Sie jedoch fragen, wie zufrieden sie mit der Entwicklungsumgebung sind, ist nicht alles so angenehm.



Die Entwicklungsumgebung ist unser Kopfschmerz. Dies ist ein Wachstumspunkt, der verbessert werden muss. Deshalb befragen wir persönlich die Mitarbeiter, die am schlechtesten geantwortet haben: Was ist das Problem, was hat sich verlangsamt oder hat bei ihm nicht funktioniert? Zu wissen, was passiert, kann die Dinge verbessern.

Bis Sie wissen, was passiert, können Sie nichts ändern.

Langfristiges Ergebnis


Jede unserer Metriken kann erhöht werden, indem Sie sich einfach darauf konzentrieren. Um beispielsweise den Prozentsatz der am selben Tag erledigten Aufgaben zu erhöhen, können Sie alles löschen und nur die eingehenden Aufgaben lösen. Sie können alle Aufgaben mit Code ausführen.

Zum Beispiel werden in einer bestimmten Stadt "N" alle Anstrengungen für die Entwicklung von Straßen aufgewendet. Sie machen flache, breite, mehrspurige Strecken in der Stadt. Das ist cool im ersten, zweiten Jahr. Aber alle anderen Gebiete verschlechtern sich: Es gibt keine zugängliche Umgebung, Bäume werden gefällt, es gibt mehr Autos, es gibt nicht genügend Parkplätze und die Umwelt hat die Stadt auf diesen Straßen bereits verlassen. In 5-10 Jahren werden in der Nachbarstadt bereits autonome Taxis und Hyperloops auftauchen, aber hier gibt es immer noch nur glatte Straßen. Es ist klar, dass dies der Weg ins Nirgendwo ist.

Wir sollten das nicht zulassen, wir müssen nach vorne schauen. Daher messen wir die Zeit, die wir für Entwicklung und Support aufwenden.



Die Grafik zeigt, dass in den letzten Monaten wenig Zeit für die Entwicklung aufgewendet wurde. Für mich als Führungskraft ist dies ein Zeichen dafür, dass Menschen gebraucht werden oder Prozessautomatisierung. Nach dem Zeitplan kann ich sogar berechnen, wie viele Monate alle Ressourcen für den Support verwendet werden, wenn wir nicht rechtzeitig sind und es zu einem Zusammenbruch kommt.

Nützliche Aufgaben


Wir haben uns ein Ziel gesetzt und über Metriken nachgedacht, aber bis wir anfangen, es mit unseren Händen umzusetzen, wird sich nichts ändern. Sie müssen nicht nur etwas tun, sondern auch die profitabelsten Aufgaben in Bezug auf Metriken und Zeit.

Mit der Zeit vereinfacht sich alles.

Zwei beliebige Aufgaben können zeitlich verglichen werden: Die erste dauert eine Woche, die zweite - 3 Stunden. Es kommt nicht darauf an, aus welcher Abteilung die Aufgabe stammt. Metriken sind komplizierter - es gibt viele davon. Wie berechnet man, welche Aufgabe rentabler ist: die erste oder die zweite, wenn eine einige Metriken optimiert und die andere die andere?

Für uns selbst haben wir es einfach entschieden - wir haben eine universelle Einheit entwickelt, die alle Aufgaben beschreibt. Unsere universelle Einheit ist der Rubel . Wir bewerten den Nutzen einer Aufgabe anhand des Gewinns, den sie bringt, und dividieren sie durch die Zeit, die für die Ausführung dieser Aufgabe benötigt wird. Daher bewerten wir jede Aufgabe in Bezug auf Metriken (Rubel) und Zeit.


Unsere vierteljährlichen Aufgaben.

In der Abbildung unten geben die letzten beiden Spalten an, wie viel Geld wir für die Aufgabe verdienen und wie viel Zeit wir dafür aufwenden werden. Das Infrastruktur-Team verdient Geld, indem es die Bedingungen für Entwickler verbessert, Prozesse im Unternehmen optimiert und Server betreibt. Wir wechseln zu Docker, nicht weil es cool ist, sondern weil wir es für rentabel hielten.



Zusätzliche Metriken, die wir messen.

Fortschritt:

  • % Unterstützung;
  • % Aufgaben mit PR;
  • % der Aufgaben pro Tag geschlossen.

Verspätet:

  • % des Unternehmensgewinns;
  • Verluste durch Stürze;
  • Entwicklerbewertungen.

Dies ist nur ein Teil der Metriken, wir haben mehr davon.

Aufgaben, die wir nicht bewerten


Wir bewerten keine Fehler. Wenn wir ein System zur Unterstützung und Unterstützung genommen haben, beheben wir die Fehler einfach, weil sie nicht vorhanden sein sollten.

Gleiches gilt für den Support. Wir messen im Allgemeinen, wie viel Zeit für die Unterstützung aufgewendet wird, und wir lassen nicht zu, dass dies zu viel ist. Wir bewerten jedes System als Ganzes auf seine Vorteile oder Nachteile. Aufgaben, die einfacher oder sehr dringend sind, werden von uns nicht bewertet. Alles, worüber ich gesprochen habe, trifft nicht auf sie zu - wir machen sie einfach.

Warum es nützlich und wichtig ist, Aufgaben zu bewerten


Preise und Erfolge . Im Geschäftsleben müssen Sie immer die Sprache des Geldes sprechen. Er versteht nur Geld. Wenn du sagst, dass du ein Projekt hast, machst du es kaputt, es bringt 5 Millionen und verlangt eine Million Preise pro Team - sie werden dir zustimmen. Für Unternehmen ist dies verständlich.

Mieten Bieten Sie Unternehmen nicht an, Mitarbeiter einzustellen und neue Technologien einzuführen, sondern bieten Sie an, gemeinsam Geld zu verdienen. Dann wird er dich sicher treffen. Zumindest beginnt die Diskussion nicht auf dem Weg „Haben Sie Zeit oder haben Sie keine Zeit, brauchen Sie eine Person oder nicht?“, Aber wie cool ist das Projekt, für das Sie eine Person brauchen, wird er es verwalten und wird das Projekt wirklich so viele Millionen bringen. Das Gespräch wird in eine andere Richtung gehen, und Sie selbst werden im Voraus verstehen, ob dieses Projekt die Kosten wert ist oder ob es einfacher ist, es wegzuwerfen und nach einem anderen zu suchen?

Kostenoptimierung . Wenn wir verstehen, wofür das Geld ausgegeben wird, können wir es leicht zählen und die Ausgaben optimieren.

Verwaltungsentscheidungen . Diesen Artikel habe ich kürzlich realisiert. Die Infrastruktur begann zu wachsen und ich beschloss, das Team in Unterbefehle aufzuteilen. Es stellte sich die Frage, wie dies genau zu tun ist, mit dem Ziel einer weiteren Personalbesetzung. Die Lösung wurde auf der Grundlage von Metriken erstellt - alle Metriken unserer Infrastruktur wurden in Blöcke unterteilt, und jedes Team ist für seine eigenen Metriken verantwortlich. Ich habe 3 Unterbefehle. Für jeden ist der gemeinsame Verantwortungsbereich verständlich und alle Teilnehmer verstehen, wofür sie persönlich verantwortlich sind. Dies ist ein verständlicher Verantwortungsbereich.

Um es cool zu machen


  • Setzen Sie sich ein Ziel - nirgendwo ohne.
  • Teilen Sie das Ziel in Metriken auf und messen Sie.
  • Bewerten Sie Aufgaben und erledigen Sie die coolsten.

Dann werden Sie definitiv Erfolg haben!

Auf der DevOps Conf 2019 werden wir separat über "Infrastruktur als Code" sprechen. Die Zukunft des Ansatzes, die Terraform-Muster, die Bereitstellung und Verwaltung der BareMetal-Infrastruktur und von Kubernetes sind vier Artikel zu diesem Thema. Am 30. September und 1. Oktober findet in Moskau eine Konferenz statt, auf der Prozess und Technologie zusammengeführt werden. Der Zeitplan ist fertig, Sie können das Programm studieren, Abstracts oder Tickets buchen .

Abonnieren Sie den Newsletter und den Telegrammkanal und bleiben Sie auf dem Laufenden für Neuigkeiten und neue Berichte.

Source: https://habr.com/ru/post/de462671/


All Articles