Moderne Infrastruktur: Probleme und Perspektiven

Moderne Infrastruktur: Probleme und Perspektiven

Ende Mai haben wir ein Online-Meeting zum Thema „Moderne Infrastruktur und Container: Probleme und Perspektiven“. Wir haben ĂŒber Container, Kubernetes und Orchestrierung im Allgemeinen gesprochen, ĂŒber Auswahlkriterien fĂŒr Infrastruktur und vieles mehr. Die Teilnehmer teilten Fallstudien aus ihrer eigenen Praxis.

Teilnehmer:

  • Evgeny Potapov, CEO von „ITSumma“. Mehr als die HĂ€lfte seiner Kunden wechseln bereits oder wollen auf Kubernetes umsteigen.
  • Dmitry Stolyarov, CTO von „Flant“. VerfĂŒgt ĂŒber mehr als 10 Jahre Erfahrung mit containerbasierten Systemen.
  • Denis Remchukov (alias Eric Oldmann), COO von argotech.io, ehemaliges Mitglied von RAO EES. Hat versprochen, ĂŒber Fallstudien im „blutigen“ Enterprise zu berichten.
  • Andrey Fedorovsky, CTO von „News360.com“. Nach dem Kauf des Unternehmens durch einen anderen Spieler verantwortlich fĂŒr eine Reihe von ML- und AI-Projekten sowie fĂŒr die Infrastruktur.
  • Ivan Kruglov, Systemingenieur, ehemaliger Mitarbeiter von Booking.com.Derjenige, der mit eigenen HĂ€nden sehr viel mit Kubernetes gemacht hat.

Themen:

  • Einblicke der Teilnehmer zu Containern und Orchestrierung (Docker, Kubernetes usw.); was sie in der Praxis ausprobiert oder analysiert haben.
  • Fallstudie: Das Unternehmen erstellt einen Entwicklungsplan fĂŒr die Infrastruktur fĂŒr Jahre. Wie wird entschieden, ob die bestehende Infrastruktur auf Containern und Kubernetes aufgebaut oder umgestellt werden soll?
  • Probleme in der Welt der Cloud-Native, was fehlt, lasst uns fantasieren, was morgen sein wird.

Es entwickelte sich eine interessante Diskussion, die Meinungen der Teilnehmer waren so unterschiedlich und fĂŒhrten zu zahlreichen Kommentaren, dass ich sie mit euch teilen möchte. Es gibt ein Video von drei Stunden, und weiter unten – eine Zusammenfassung der Diskussion.

Ist Kubernetes bereits ein Standard oder einfach gutes Marketing?

„Wir sind zu ihm (Kubernetes – Red.) gekommen, als noch niemand wusste, was es ist. Wir sind schon damals zu ihm gekommen, als es ihn noch nicht gab. Wir wollten ihn schon vorher“ – Dmitry Stolyarov

Moderne Infrastruktur: Probleme und Perspektiven
Foto von Reddit.com

Vor 5-10 Jahren gab es eine riesige Anzahl von Werkzeugen und keinen einheitlichen Standard. Alle sechs Monate kam ein neues Produkt, manchmal auch mehr als eines. Zuerst Vagrant, dann Salt, Chef, Puppet,
 „und du baust deine Infrastruktur alle sechs Monate um. Du hast fĂŒnf Administratoren, die stĂ€ndig damit beschĂ€ftigt sind, Konfigurationen neu zu schreiben“ – erinnert sich Andrey Fedorovsky. Er ist der Meinung, dass Docker und Kubernetes die anderen â€žĂŒberwĂ€ltigt“ haben. Docker ist in den letzten fĂŒnf Jahren zum Standard geworden, Kubernetes in den letzten zwei Jahren. Und das ist gut fĂŒr die Branche..

Dmitri Stolyarov und sein Team lieben Kubernetes. Sie wollten ein solches Werkzeug, bevor es ĂŒberhaupt auf den Markt kam, und fanden es, als noch niemand davon wusste. Derzeit nehmen sie aus GrĂŒnden der PraktikabilitĂ€t keinen Kunden an, wenn sie verstehen, dass sie bei ihm kein Kubernetes implementieren werden. Laut Dmitri hat das Unternehmen "eine Menge gigantischer Erfolgsgeschichten im Umgang mit schrecklichem Legacy".

Kubernetes ist nicht nur Container-Orchestrierung, sondern ein Konfigurationsverwaltungssystem mit einer umfangreichen API, einem Netzwerkkomponenten, L3-Lastverteilung und Ingress-Controllern, das es relativ einfach macht, Ressourcen zu verwalten, zu skalieren und sich von den unterliegenden Infrastrukturschichten zu abstrahieren.

Leider muss man im Leben fĂŒr alles bezahlen. Und diese Steuer ist hoch, insbesondere wenn man ĂŒber den Übergang zu Kubernetes fĂŒr Unternehmen mit einer entwickelten Infrastruktur spricht, wie Ivan Kruglov meint. Er könnte problemlos in einem Unternehmen mit traditioneller Infrastruktur oder mit Kubernetes arbeiten. Wichtig ist, die Besonderheiten des Unternehmens und des Marktes zu verstehen. FĂŒr Evgeny Potapov, der Kubernetes jedoch als jedes Orchestrierungstool betrachten wĂŒrde, stellt sich eine solche Frage nicht.

Evgeny zog einen Vergleich zur Situation in den 1990er Jahren, als objektorientierte Programmierung als Ansatz zur Entwicklung komplexer Anwendungen entstand. Zu diesem Zeitpunkt hörten die Debatten nicht auf und neue Werkzeuge, die OOP unterstĂŒtzten, kamen auf. Danach entstanden Mikrodienste, um von der monolithischen Konzeption abzurĂŒcken. Dies fĂŒhrte wiederum zur Entstehung von Containern und Werkzeugen zu deren Verwaltung. „Ich denke, bald kommen wir an den Punkt, an dem die Frage, ob man eine kleine Anwendung mikrodienstlich schreiben sollte, nicht mehr gestellt wird; sie wird standardmĂ€ĂŸig als Mikrodienst erstellt”, sagt er. Ähnlich werden Docker und Kubernetes im Laufe der Zeit zu einer Standardlösung ohne die Notwendigkeit einer Wahl.

Das Problem mit Datenbanken ist stateless.

Moderne Infrastruktur: Probleme und Perspektiven
Foto von Twitter: @jankolario auf Unsplash

Heutzutage gibt es viele Rezepte fĂŒr den Betrieb von Datenbanken in Kubernetes. Sogar dafĂŒr, wie man den Teil, der mit Disk I/O arbeitet, von dem, sagen wir, Anwendungsteil der Datenbank trennt. Ist es möglich, dass sich Datenbanken in der Zukunft so verĂ€ndern, dass sie in einer Box geliefert werden, wobei ein Teil ĂŒber Docker und Kubernetes orchestriert wird und im anderen Teil der Infrastruktur, ĂŒber separate Software, der Storage-Bereich bereitgestellt wird? Werden sich Datenbanken als Produkt verĂ€ndern?

Diese Beschreibung Àhnelt dem Management von Warteschlangen, aber die Anforderungen an ZuverlÀssigkeit und SynchronitÀt von Informationen in traditionellen Datenbanken sind laut Andrei wesentlich höher. Die Cache-Hit-Rate liegt in normalen Datenbanken bei etwa 99 %. Wenn ein Worker ausfÀllt, wird ein neuer gestartet, und der Cache wird von Grund auf neu aufgebaut. Solange der Cache nicht aufgeheizt ist, arbeitet der Worker langsam, was bedeutet, dass er nicht mit Benutzerlast belastet werden kann. Solange keine Benutzerlast vorhanden ist, wird der Cache nicht aufgeheizt. Dies ist ein Teufelskreis.

Dmitri ist entschieden anderer Meinung – Quoren und Sharding lösen das Problem. Aber Andrei besteht darauf, dass die Lösung nicht fĂŒr alle geeignet ist. In einigen Situationen kann ein Quorum in Ordnung sein, aber es belastet zusĂ€tzlich das Netzwerk. Eine NoSQL-Datenbank eignet sich nicht in allen FĂ€llen.

Die Teilnehmer des Meetups haben sich in zwei Lager gespalten.

Denis und Andrei behaupten, dass alles, was auf die Festplatte geschrieben wird – Datenbanken und anderes – im aktuellen Kubernetes-Ökosystem unmöglich ist. Es ist unmöglich, die IntegritĂ€t und Konsistenz produktiver Daten in Kubernetes aufrechtzuerhalten. Das ist eine fundamentale Eigenschaft. Die Lösung: hybride Infrastruktur.

Selbst moderne Cloud-native Datenbanken wie MongoDB und Cassandra oder Nachrichtenwarteschlangen wie Kafka oder RabbitMQ erfordern stĂ€ndige Datenspeicher außerhalb von Kubernetes.

Evgeny widerspricht: "Datenbanken in Kubernetes sind ein Trauma fĂŒr Russland oder eine quasi-unternehmerische Erfahrung, die damit zusammenhĂ€ngt, dass es in Russland keine Cloud-Nutzung gibt." Kleine oder mittlere Unternehmen im Westen nutzen die Cloud. Amazon RDS-Datenbanken sind einfacher zu verwenden, als sich selbst mit Kubernetes zu beschĂ€ftigen. In Russland wird Kubernetes ‘on-premise’ verwendet und Datenbanken werden dorthin verschoben, wenn man versucht, den Zoo loszuwerden.

Dmitri war ebenfalls nicht mit der Aussage einverstanden, dass keine Datenbanken in Kubernetes gehalten werden können: „Das hĂ€ngt von der Datenbank ab. Und wenn man eine riesige relationale Datenbank hineinsteckt – auf keinen Fall. Wenn man etwas Kleines und Cloud-natives hineinsteckt, das moralisch bereit fĂŒr ein semi-ephemeres Leben ist, wird alles gut sein.“ Dmitri erwĂ€hnte außerdem, dass die Verwaltungswerkzeuge fĂŒr Datenbanken weder fĂŒr Docker noch fĂŒr Kubernetes bereit sind, deshalb gibt es große Schwierigkeiten.

Ivan ist sich seinerseits sicher, dass die Ökosysteme der Unternehmenslösungen in Kubernetes, selbst wenn man die Begriffe stateful und stateless außen vor lĂ€sst, noch nicht bereit sind. Es ist schwierig, die Anforderungen von Gesetzgebern und Regulierungsbehörden mit Kubernetes zu erfĂŒllen. Zum Beispiel ist es unmöglich, eine Lösung fĂŒr die Bereitstellung von IdentitĂ€ten zu schaffen, die strenge Garantien fĂŒr die Identifizierung des Servers verlangen, bis hin zur Hardware, die in die Server eingebaut wird. Dieser Bereich entwickelt sich, aber eine Lösung gibt es derzeit nicht.
Die Teilnehmer konnten sich nicht einigen, daher wird es in diesem Teil keine Schlussfolgerungen geben. Besser geben wir ein paar praktische Beispiele.

Fall 1. Cybersicherheit des "Mega-Regulators" mit Datenbanken außerhalb von Kubernetes

Im Fall eines ausgereiften Systems fĂŒr Cybersicherheit ermöglichen die Nutzung von Containern und Orchestrierung, sich gegen Angriffe und Eindringlinge zu verteidigen. Zum Beispiel hat Denis mit seinem Team in einem Mega-Regulator eine Verbindung zwischen dem Orchestrator und einem trainierten SIEM-Dienst realisiert, der die Protokolle in Echtzeit analysiert und den Angriffs-, Einbruch- oder Ausfallprozess identifiziert. Im Falle eines Angriffs, eines Versuchs, etwas abzulegen, oder bei einem Eindringen durch Ransomware hebt er ĂŒber den Orchestrator Container mit Anwendungen schneller an, als sie infiziert werden, oder schneller, als sie von einem Angreifer angegriffen werden.

Fall 2. Teilweise Migration der Datenbanken von Booking.com nach Kubernetes

Bei Booking.com ist die Hauptdatenbank MySQL mit asynchroner Replikation – es gibt einen Master und eine ganze Hierarchie von Slaves. Zu dem Zeitpunkt, als Ivan das Unternehmen verließ, war ein Projekt zur Migration von Slaves gestartet worden, die man "abstoßen" konnte, ohne große SchĂ€den zu verursachen.

Neben der Hauptdatenbank gibt es eine Installation von Cassandra mit einer selbst geschriebenen Orchestrierung, die noch vor dem Aufstieg von Kubernetes entwickelt wurde. In dieser Hinsicht gibt es keine Probleme, aber sie verfĂŒgt ĂŒber Persistent Storage auf lokalen SSDs. Remote-Speicher, selbst innerhalb eines Rechenzentrums, werden aufgrund hoher Latenzzeiten nicht verwendet.

Die dritte Art von Datenbanken ist der Suchdienst von Booking.com, bei dem jeder Knoten des Dienstes eine Datenbank ist. Die Versuche, den Suchdienst nach Kubernetes zu migrieren, sind gescheitert, da jeder Knoten 60–80 GB lokalen Speicher benötigt, was schwer "hochzufahren" und "aufzutauen" ist.

Letztendlich wurde die Suchmaschine nicht nach Kubernetes migriert, und Ivan glaubt nicht, dass es in naher Zukunft neue Versuche geben wird. Die MySQL-Datenbank wurde zur HĂ€lfte migriert: nur die Slaves, deren Abstoßen keine großen Probleme verursacht.

Die Wahl der Infrastruktur als Aufgabe ohne allgemeine Lösung

Moderne Infrastruktur: Probleme und Perspektiven
Foto von Manuel Geissinger von Pexels

Angenommen, wir haben ein neues Unternehmen oder ein Unternehmen, dessen Infrastruktur teilweise veraltet ist. Dort wird ein Infrastrukturentwicklungsplan fĂŒr Jahre erstellt. Wie wird entschieden, ob die Infrastruktur auf Containern und Kubernetes aufgebaut werden soll oder nicht?

Unternehmen, die um Nanosekunden konkurrieren, sind aus der Diskussion ausgeschlossen. Gesunder Konservatismus rentiert sich aus GrĂŒnden der ZuverlĂ€ssigkeit, dennoch gibt es Unternehmen, die neue AnsĂ€tze in Betracht ziehen sollten.

Ivan: "Ich wĂŒrde jetzt definitiv ein Unternehmen in der Cloud grĂŒnden, einfach weil es schneller ist", obwohl es nicht unbedingt gĂŒnstiger ist. Mit dem Wachstum des Risikokapitals haben Startups mit Geldern große Probleme nicht, und die Hauptaufgabe besteht darin, den Markt zu erobern.

Ivan ist der Ansicht, dass die Entwicklung der aktuellen Infrastruktur ein Kriterium fĂŒr die Auswahl ist. Wenn in der Vergangenheit erhebliche Investitionen getĂ€tigt wurden und es funktioniert, hat es keinen Sinn, alles neu zu gestalten. Wenn die Infrastruktur jedoch nicht entwickelt ist und es Probleme mit Tools, Sicherheit und Überwachung gibt, macht es Sinn, sich die verteilte Infrastruktur anzusehen.

Die Steuer muss in jedem Fall gezahlt werden, und Ivan wĂŒrde die zahlen, die ihm in der Zukunft ermöglicht, weniger zu zahlen. "Denn allein dadurch, dass ich in einem Zug fahre, der von anderen betrieben wird, werde ich viel weiter fahren als wenn ich in einen anderen Zug steige, in den ich selbst Treibstoff hineinwerfen muss." — sagt Ivan. Wenn das Unternehmen neu ist und die Anforderungen an die Latenz in zehn oder mehr Millisekunden liegen, wĂŒrde Ivan in Richtung der "Betreiber" schauen, in die heute klassische Datenbanken "eingewickelt" werden. Sie richten eine Replikationskette ein, die sich im Falle eines Fehlers selbst umschaltet usw.

FĂŒr ein kleines Unternehmen mit ein paar Servern in Kubernetes macht es keinen Sinn, — behauptet Andrei. Wenn es jedoch plant, auf eine Hundert Server und mehr zu wachsen, sind Automatisierung und ein Ressourcenmanagementsystem erforderlich. 90 % der FĂ€lle rechtfertigen die Kosten. Und zwar unabhĂ€ngig von der Belastung und den Ressourcen. Allen, von Startups bis hin zu großen Unternehmen mit Millionen von Nutzern, macht es Sinn, schrittweise in Richtung Produkte zur Orchestrierung von Containern zu schauen. "Ja, das ist wirklich die Zukunft", ist Andrei ĂŒberzeugt.

Denis nannte zwei Hauptkriterien — Skalierbarkeit und BetriebsstabilitĂ€t. Er wird die Werkzeuge auswĂ€hlen, die am besten fĂŒr diese Aufgabe geeignet sind. „Das könnte ein zusammengebastelter No-Name-Server sein, auf dem Nutanix Community Edition lĂ€uft. Es könnte auch eine zweite Linie in Form einer Anwendung auf Kuber mit einer Datenbank im Backend sein, die repliziert wird und festgelegte RTO- und RPO-Parameter hat“ (Recovery Time/Point Objectives — Beispiel).

Evgeny wies auf ein mögliches Problem mit FachkrĂ€ften hin. Derzeit gibt es nicht viele hochqualifizierte Spezialisten, die sich „in den Tiefen“ auskennen. TatsĂ€chlich, wenn die gewĂ€hlte Technologie veraltet ist, ist es schwierig, jemanden einzustellen, außer Ă€lteren, gelangweilten und frustrierten Menschen. Dennoch sind sich andere Teilnehmer einig, dass es sich um ein Ausbildungsproblem handelt.
Wenn es darum geht, eine Entscheidung zu treffen: eine kleine Firma in der Public Cloud mit Datenbanken in Amazon RDS oder „on premise“ mit Datenbanken in Kubernetes zu starten, fiel die Wahl der Teilnehmer trotz einiger Nachteile auf Amazon RDS.

Da die meisten Teilnehmer des Meetups nicht aus dem „blutigen“ Enterprise-Bereich kommen, sind verteilte Lösungen das, worauf man hinarbeiten sollte. Speichersysteme sollten verteilt und zuverlĂ€ssig sein und Latenzen im Bereich von Millisekunden, maximal jedoch im Dutzendbereich erzeugen., — fasste Andrei zusammen.

Bewertung der Nutzung von Kubernetes

Der Zuhörer Anton Zhbankov stellte eine Fangfrage an die Apologeten von Kubernetes: Wie wurde die technische und wirtschaftliche BegrĂŒndung ausgewĂ€hlt und durchgefĂŒhrt? Warum Kubernetes, warum nicht virtuelle Maschinen, zum Beispiel?

Moderne Infrastruktur: Probleme und Perspektiven
Foto von Tatyana Eremina auf Unsplash

Darauf antworteten Dmitrij und Ivan. In beiden FĂ€llen wurde durch Versuch und Irrtum eine Entscheidungsreihe getroffen, die dazu fĂŒhrte, dass beide Teilnehmer zu Kubernetes gelangten. Heute beginnt das GeschĂ€ft, Software zu entwickeln, die sinnvoll nach Kuber migriert werden kann. Es handelt sich nicht um klassische Drittanbietersysteme wie 1C. Kubernetes hilft, wenn Entwickler schnell Releases durchfĂŒhren mĂŒssen, bei ununterbrochenem kontinuierlichen Verbesserung.

Andreis Team versuchte, ein skalierbares Cluster auf der Basis von virtuellen Maschinen zu erstellen. Die Nodes fielen wie Dominosteine, was manchmal zum Ausfall des Clusters fĂŒhrte. „Theoretisch könnte man es nachbessern und manuell warten, aber das ist mĂŒhsam. Und wenn auf dem Markt eine Lösung vorhanden ist, die sofort einsatzbereit ist, gehen wir gerne darauf zu. Und das haben wir letztlich auch getan“, — erzĂ€hlt Andrei.

Es gibt Standards fĂŒr eine solche Analyse und Berechnung, aber niemand kann sagen, wie genau sie auf echtem, in Betrieb befindlichem Material sind. FĂŒr die Berechnungen ist es auch wichtig, sich mit jedem Tool und der zugehörigen Ökosystem auszukennen, aber das ist unmöglich.

Was erwartet uns

Moderne Infrastruktur: Probleme und Perspektiven
Foto von Drew Beamer auf Unsplash

Wenn Technologien sich weiterentwickeln, kommen immer mehr disparate Teile zusammen, und es erfolgt ein PhasenĂŒbergang, ein Anbieter taucht auf, der genug „Bares“ investiert hat, damit alles in einem einzigen Tool zusammenkommt.

Kommt Ihnen nicht auch der Gedanke, dass der Moment kommen wird, an dem es ein Tool gibt, das fĂŒr die Welt von Linux so wichtig wird wie Ubuntu? Vielleicht wird ein einheitliches Tool fĂŒr Containerisierung und Orchestrierung auch Kubernetes umfassen. Damit wird es einfach, On-Premise Clouds zu erstellen.

Ivans Antwort war: „Google baut gerade Anthos — das ist ihr Paketangebot, das die Cloud aufsetzt und Kuber, Service Mesh, Monitoring — die gesamte Infrastruktur, die fĂŒr Microservices in einem On-Premise-Umfeld benötigt wird, umfasst. Wir sind fast in der Zukunft.“

Denis erwÀhnte auch Nutanix und VMWare mit dem Produkt vRealize Suite, die eine Àhnliche Aufgabe ohne Containerisierung bewÀltigen können.

Dmitry teilte die Ansicht, dass die Verringerung von „Schmerzen“ und die Senkung der Steuer zwei Bereiche sind, in denen Verbesserungen zu erwarten sind.

Zusammenfassend der Diskussion möchten wir die folgenden Probleme der modernen Infrastruktur hervorheben

  • Drei Teilnehmer haben sofort das Problem des Stateful hervorgehoben.
  • Verschiedene Arten von SicherheitsunterstĂŒtzungsproblemen, einschließlich der Wahrscheinlichkeit, dass mehrere Versionen von Python, Application-Servern und Komponenten in Docker landen.
    ÜbermĂ€ĂŸiger Verbrauch, zu dem es besser ist, ein separates Meetup abzuhalten.
    Das Problem des Lernens, da Orchestrierung ein komplexes Ökosystem darstellt.
    Ein allgemeines Problem der Branche ist die Nutzung von Tools fĂŒr andere Zwecke.

    Die weiteren Schlussfolgerungen ĂŒberlasse ich Ihnen. Momentan bleibt das GefĂŒhl, dass die Kombination Docker+Kubernetes es nicht leicht haben wird, zu einem „zentralen“ Bestandteil des Systems zu werden. Zum Beispiel werden Betriebssysteme zuerst auf die Hardware installiert, was man von Containern und Orchestrierung nicht sagen kann. Vielleicht werden in Zukunft Betriebssysteme und Container mit Cloud-Management-Software zusammenwachsen.

    Moderne Infrastruktur: Probleme und Perspektiven
    Foto von Gabriel Santos Fotografia von Pexels

    Ich möchte die Gelegenheit nutzen, um meiner Mutter zu grĂŒĂŸen und daran zu erinnern, dass wir eine Facebook-Gruppe haben „Management und Entwicklung großer IT-Projekte“, Kanal @feedmeto mit interessanten BeitrĂ€gen aus verschiedenen Tech-Blogs. Und mein Kanal @rybakalexey, wo ich ĂŒber das Management der Entwicklung in Produktunternehmen spreche.

Quelle: habr.com

60GB SSD 8Gb DDR4