Oh mein Code. So werden Sie Systemadministrator

Die stellvertretende technische Direktorin der Mail.Ru-Gruppe Tatyana Bakharevskaya spricht über den Weg des Systemadministrators, die Vorteile der Arbeit als Systemadministrator und die Funktionen des Betriebs in einem großen Unternehmen. Tatyana war verantwortlich und verantwortlich für die Dienste der beiden größten Portale Russlands.


Der Moderator des Programms ist Pavel Shcherbinin.

- Erzähl ein wenig über dich.

- Ich bin vor langer Zeit in den Beruf eingetreten. Sie bekam einen Job als Junior-Systemadministratorin in einem kleinen Startup, das seine Suchmaschine und eine Reihe anderer Internetprojekte entwickelte. Es war Yandex, wo ich viele Jahre gearbeitet habe. Sie wuchs zu einer ernsthaften Systemadministratorin auf und leitete dann die Abteilung Systemadministration. Im Jahr 2005 arbeiteten 5 Personen in dieser Abteilung, und nach 10 Jahren - 250 - war es eine große Struktur, mehrere Einheiten wurden gebildet. Wir haben gelernt, Ingenieure einzustellen, zu erziehen und Veranstaltungen wie Root, CIT durchzuführen. In Yandex war ich für den kontinuierlichen ununterbrochenen Betrieb des Unternehmens verantwortlich, und jetzt, bereits seit einem Jahr, mache ich dasselbe für die Mail.Ru Group. Zuerst schienen die Aufgaben ähnlich zu sein, aber bei näherer Betrachtung stellte sich heraus, dass es viele Gemeinsamkeiten gab, aber es gab genug Unterschiede, und das war interessant.

- Es gibt viele verschiedene Begriffe für den Servicebetrieb. Dies ist nur eine Ausnutzung und der Systemadministrator SRE, SE, DevOps. Erzählen Sie uns mehr über jeden. Oder ist es dasselbe? Wie unterscheiden sie sich?

- Tatsächlich ist ein Systemadministrator ein ziemlich weit gefasstes Konzept, beginnend mit der Tatsache, dass eine Person für ein kleines Büro mit einer kleinen Büroinfrastruktur für mehrere Mitarbeiter verantwortlich sein kann, bis hin zur Verantwortung für den kontinuierlichen Betrieb eines hoch ausgelasteten Dienstes. Irgendwann war es immer noch in verschiedene Richtungen unterteilt. In Unternehmen wie Mail.Ru Group, Yandex, Google ist der Systemadministrator näher an den sogenannten Schlagworten SRE - Site Reliability Engineer, dh der Person, die für die Verfügbarkeit der Site verantwortlich ist.

Unsere Arbeit erfordert viele verschiedene Kenntnisse über Technologien: Linux / Unix, Netzwerke, Datenbanken, Webserver, Cloud-Technologien, die Zusammensetzung der Geräte, mit denen wir Dienste erstellen (Prozessoren, Speicher, Festplatten) und vieles mehr. Über Technologie müssen Sie verstehen, wie man sie anwendet, wie sie sich unterscheiden. Es gibt immer viel Routinearbeit, die automatisiert werden muss. Es ist auch notwendig, Code zu schreiben. Moderne Systemadministratoren / SREs sind meist Programmierer. Im Moment ist Python die Hauptsprache für die Automatisierung und natürlich Bash. C zu kennen war schon immer ein Plus. Zum Beispiel die beste Linux-Dokumentation: Öffnen Sie den Kernel-Code und sehen Sie, wie alles funktioniert.

Es ist auch wichtig zu verstehen, wie hoch belastete und fehlertolerante Systeme aufgebaut werden. Darüber wurde auf Konferenzen viel gesagt und im Internet geschrieben.

Zusammenfassend muss der moderne Ingenieur, der für den hoch ausgelasteten Service verantwortlich ist, in der Lage sein, verschiedene Technologien zu programmieren, zu kennen und anzuwenden und eine Vorstellung davon zu haben, wie zuverlässige und skalierbare Services aufgebaut werden können.

- Gehen wir etwas zurück. Die Anfangsphase ist sehr interessant. Warum haben Sie sich für eine Operation entschieden?

- Das war lustig. In diesen Jahren wollten alle anständigen Mädchen Buchhalterinnen werden. Ich wollte auch, also ging ich zu den Kursen. Sie sagten, um Buchhalter zu werden, müssten Sie die Punktzahlen und das Felix-Arithmometer beherrschen. Ich entschied, dass es zu kompliziert sei, und „den Computer zu kennen“ (wie sie in Stellenanzeigen geschrieben wurden) würde mein Leben und meine Arbeitssuche erleichtern. Infolgedessen studierte sie Computer am nächstgelegenen Moskauer Institut für technische Physik an der Fakultät für Kybernetik am Institut für elektronische Computer. Es stellte sich heraus, dass in diesem Computer neben Word und Excel noch viel von allem vorhanden ist - Prozessor, Speicher, Pipelines, Eingabe- / Ausgabegeräte. Am Ende meines Studiums wollte ich Programmierer werden. In den ersten Kursen war das Programmieren für mich ziemlich schwierig, und am Ende meines Studiums war es einfach, Code zu schreiben. Könnte dies tagelang tun. Am Abend setzte sie sich und schrieb den Code, und am nächsten Abend öffnete sie die Augen. Alles lief ziemlich gut, die Programme funktionierten. Aber ich erkannte, dass ich eine begeisterte Person war und entschied mich für etwas Einfacheres. Und ging in Betrieb, aber es stellte sich heraus, dass auch hier nicht einfach ist, aber selbst stellenweise viel komplizierter. Aber ich bin geblieben und mache das seit mehr als 20 Jahren.

- Ich frage mich, wann Sie sich entscheiden, Programmierer oder Administrator zu werden.

- Unterschiedlich. In den letzten Jahren bin ich sowohl bei Yandex als auch bei Mail.Ru auf Studenten gestoßen. Leute im College versuchen sich sowohl in der Programmierung als auch in der Verwaltung. Jemand bleibt in Betrieb und versteht, dass dies sein ist. Jemand, der ein wenig gearbeitet hat, geht in die Entwicklung. Jemand, der in der Entwicklung gearbeitet hat, versteht, dass er einige Probleme tiefer verstehen möchte, um herauszufinden, was unter seinem Programm steht, wie es betrieben wird, wie es lebt und wie es in Betrieb ist. Es gibt einige Grenzfälle, die jetzt als Schlagwort DevOps bezeichnet werden. Diese Leute sollten viel über Hardware, Ausnutzung und Code wissen.

Es hängt alles von der Person ab, davon, was sie mag und was nicht. Und diese Berufe sind sich sehr ähnlich und überschneiden sich in vielerlei Hinsicht.

- Die Legenden über Yandex besagen, dass Sie zu einem Zeitpunkt einen speziellen Schalter hatten, mit dem Sie jederzeit ein Rechenzentrum ausschalten konnten, um die Stabilität des Systems zu testen. Erzähl mir mehr.

- Diese Geschichte begann vor vielen, vielen Jahren mit einem großen Vorfall: Fast alle Rechenzentren bei Yandex wurden getrennt. Genauer gesagt, eine Verbindung wurde getrennt, aber sie enthielt alle Netzwerkgeräte des Unternehmens. Yandex arbeitete mehrere Stunden lang nicht. Danach wurde die Aufgabe gestellt, alles zuverlässig und fehlertolerant zu machen, damit im Falle einer Trennung eines der Rechenzentren alles funktioniert. Dieses Problem ist heute insbesondere für kommerzielle Rechenzentren nicht mehr so ​​relevant. Die Zuverlässigkeit ist viel höher geworden. Es gibt Beispiele dafür, wie moderne Rechenzentren mehrere Tage mit Dieselkraftstoff leben. Aber dann war es anders.

Mehrere Jahre lang haben wir die Architektur aller Anwendungen analysiert, Aufgabenpläne erstellt, wie und was zu tun ist, um eine vollständige Fehlertoleranz sicherzustellen. Wo es unmöglich oder zu schwierig war, diskutierten wir SLA (Service Level Agreement). Das Hauptaugenmerk lag auf beliebten und stark ausgelasteten Diensten. Der erste Testausfall war sehr beängstigend. Die Hälfte der Mitarbeiter überwachte die Überwachungsdaten. Sie trennten sich und schalteten sich ziemlich schnell ein, schrieben alle Fehler auf und stellten eine Reihe von Systemen fertig. Und so ein paar Iterationen.

Nach einiger Zeit kamen sie zu dem Punkt, dass sie ein oder zwei Stunden lang ruhig leben konnten und ein Rechenzentrum trennten. Jeder verstand, dass die Fähigkeit beibehalten werden musste, regelmäßige Übungen, um die Verbindung zu trennen. Es ist wie beim Sanitär: Wenn Sie den Wasserhahn längere Zeit nicht öffnen und nicht schließen, wird er sauer und Sie öffnen ihn nicht im richtigen Moment. Deshalb haben wir regelmäßig die „Wasserhähne“ geöffnet und geschlossen. Und es hat funktioniert. Ich halte es für eine Errungenschaft, dass sie mich einmal in der Nacht angerufen und gesagt haben, dass das Rechenzentrum gefallen ist, und ich fragte, warum sie mich geweckt haben :-)

- Was denken Sie, wo ist die Grenze zwischen Programmierern und Systemadministratoren? Ab wann kann ein Programmierer sagen, dass er dafür nicht verantwortlich ist, nicht weiß, welche Datenbank vorhanden ist, dies ist für Administratoren. Oder ist dieses Gesicht nicht?

- Es scheint mir, dass der Administrator für die Anwendung "von der Nasenspitze bis zur Schwanzspitze" verantwortlich ist. Auf eine gute Weise kann er in den Code einsteigen, sehen, wie er dort funktioniert, wie er für ihn repariert werden kann. Er beteiligt sich an der Wahl der Technologie, weil es gute Technologien für Programmierer gibt, es sehr bequem ist, mit ihnen zu schreiben, aber es ist unmöglich, rund um die Uhr mit ihnen zu leben.

Programmierer können sich mehr auf die Funktionen des Produkts konzentrieren, die sie benötigen: zusätzliche Funktionalität, Design, zusätzlicher Code, mit dem das Projekt besser skaliert werden kann. Das heißt, es gibt immer noch eine Trennung. In der internationalen Praxis sind dies Site Reliability und Software Engineer. Es gibt verschiedene Theorien, wo und wie die Rollentrennung stattfinden soll. Es scheint mir, dass das von der Mail.Ru Group angenommene Paradigma, in dem Betrieb und Entwicklung stattfinden und bei dem es sich um verschiedene Personen handelt, recht gut funktioniert.

- Wahrscheinlich weiß nicht jeder, wie es jetzt in der Mail.Ru-Gruppe angeordnet ist. Erzähl mir mehr.

- Wir haben einen Betriebsdienst, der für den Betrieb der Dienste verantwortlich ist. Es besteht aus mehreren Abteilungen. Jede Abteilung ist je nach Umfang für ein bestimmtes Produkt oder eine bestimmte Produktgruppe verantwortlich. Beispielsweise sind mehrere Abteilungen mit Mail beschäftigt: ein Repository, das andere Web. Und es gibt Abteilungen, die in kleinerem Maßstab an mehreren Projekten arbeiten.

In unserem Haushalt - Mail, Suche, Portal, Zustellclub, "Yula", "Meine Welt", ICQ und viele andere. Es gibt Projekte, die schon lange gestartet wurden und unsere Kernprodukte sind, zum Beispiel Mail und Portal. Wir haben Projekte gekauft, die wir in unsere Infrastruktur aufnehmen und mit denen wir betriebliche Praktiken teilen. Und es gibt diejenigen, die mit uns geboren wurden und sehr schnell gewachsen sind, zum Beispiel „Yula“. Die Wirtschaft ist sehr vielfältig :-)

- Wie sieht die Architektur eines typischen Mail.Ru Group-Dienstes aus?

- Wir haben mehrere Rechenzentren. Wir haben unsere eigenen Rechenzentren, sowohl eigene als auch kommerzielle, in kommerziellen Geräten und Netzwerken. Die Gesamtkapazität der Kanäle in unserem Land wird in Terabit gemessen.

Wir hosten Projektserver in mehreren Rechenzentren, sodass das Deaktivieren eines Servers den Betrieb des Dienstes nicht beeinträchtigt. Die meisten unserer Projekte sind Websites. Die Architektur ist Standard: ein Load Balancer, darunter ein Webserver, dann ein Anwendungsserver und dann ein DBMS und / oder ein Speicher.

Als nächstes beginnen die Details.

Grundsätzlich leben wir alle auf Eisenservern, aber wir haben auch Wolken. Zum Beispiel wird für Entwicklung und Test eine Cloud auf OpenStack verwendet, in der Entwicklung und Test auf Knopfdruck Ressourcen erhalten können.

Wir implementieren Kubernetes, aber dieser Prozess erfordert viel, um die Prozesse sowohl des Betriebs als auch der Entwicklung zu ändern. Es geht nicht schnell. Wir versuchen alles sorgfältig zu machen, um nichts zu zerbrechen.

Kehren wir zu dem zurück, was mit den Benutzern passiert. Zuerst betritt der Benutzer den Balancer. Um die Last auszugleichen, werden die Netzwerkprotokolle BGP und RIP sowie die herkömmliche Software IPvs, Haproxy und Nginx verwendet. Danach zeigen Webserver den Benutzern schöne Seiten, hauptsächlich mit Nginx und Apache.

Dahinter stehen jedoch Anwendungsserver. Da es, wie oben erwähnt, sowohl Legacy- als auch ziemlich neue Projekte gibt, gibt es ziemlich viele Programmiersprachen, in denen all dies geschrieben ist.

Als DBMS für neue Projekte werden hauptsächlich MySQL, PostgreSQL und unser internes Entwicklungstarantool verwendet. Benutzer sollten den Verlust von Servern eines Speichers oder seines Teils nicht spüren. Wir versuchen, Daten zu sichern und in benachbarte Rechenzentren zu replizieren.

Wir verwenden hauptsächlich Open Source, da wir viele Programmierer und Ingenieure in unserem Unternehmen haben, die jederzeit etwas reparieren können. Es gibt auch einige Entwicklungen. Das Repository, in dem die Briefe der Benutzer liegen, ist beispielsweise eine eigene Entwicklung.

- Wie viele Leute haben Sie unterworfen?

- Jetzt ungefähr 70, aber diese Zahl wächst regelmäßig. Wir expandieren aktiv, jetzt gibt es viele offene Stellen.

- Wie viele Server bedienen sie?

- Mehrere Zehntausende von Servern in unseren Rechenzentren. Meistens in Moskau, aber wir haben auch Server in anderen Städten, in den USA und in Europa. Die gesamte Serverflotte muss überwacht, gewartet und gewartet werden. Wir selbst gehen natürlich nicht in Rechenzentren, außer vielleicht auf Exkursionen.

- Wie groß sollte die Lautstärke des Kanals sein?

"Ein paar Terabits." Die gesamte Mail.Ru-Gruppe verfügt über ein gemeinsames Netzwerk, über das viele Informationen übertragen werden. Nehmen Sie mindestens "VK" und "OK", die eine Reihe von Videos zeigen, aber es gibt immer noch Mail, Suche, Analyse und viele andere hoch geladene Dienste. Daher ist das Netzwerk eine wichtige Komponente.

- Was müssen Sie wissen, um ein guter Systemadministrator zu werden?

- Natürlich Linux. Viele kommerzielle Unternehmen verwenden dieses Betriebssystem inzwischen. Grundsätzlich versuchen Unternehmen, innerhalb von Unternehmen keine unterschiedlichen Distributionen zu verwenden. Jeder möchte, dass es eine ist. Es ist einfacher, die Systeme zu aktualisieren und zu warten. Jeder hat seine eigenen Vorlieben für die Distribution, wir verwenden CentOS. Zuallererst müssen Sie Linux kennen, wie und was dort angeordnet ist, wie die Interprozesskommunikation angeordnet ist, wie alles geladen wird und funktioniert.

Als nächstes kommt die Spezialisierung - wem ist näher und was liegt die Seele :-). Jemand ist auf Automatisierung spezialisiert, jemand auf Webservern, jemand in Netzwerken, jemand in Datenbanken und jemand auf Cloud-Technologie. Zum Beispiel mochte ich einmal Datenbanken sehr. Sie müssen verstehen, wie Anwendungen funktionieren - um sie konfigurieren zu können, die Vor- und Nachteile der Verwendung der einen oder anderen Anwendung in einer Aufgabe zu verstehen und sie bei Problemen natürlich sehr schnell reparieren zu können.

Beispiele für solche Spezialisierungen: Netzwerktechniker verstehen die Protokolle und wissen, wo und welche besser zu verwenden sind. Sie können globales und lokales Routing konfigurieren und wissen, wie sie die Zuverlässigkeit und Fehlertoleranz des Netzwerks sicherstellen können.

Datenbankspezialisten wissen, wie man eine Datenbank shortet, repliziert und sichert, um Informationen zuverlässig zu speichern und eine hohe Geschwindigkeit sicherzustellen. Diese Personen wissen, wie man Abfragepläne betrachtet, warum Indizes benötigt werden und was sie sind.

Eine typische Aufgabe: Um zu diskutieren, warum die Anforderung für eine lange Zeit ausgeführt wird, müssen Sie sich den Plan ansehen und feststellen, ob beim Laden des Servers (Speicher, Prozessor, E / A) Probleme auftreten.

- In der öffentlichen Meinung werden Admins als Männer mit einem großen Bart in einem gestreckten Pullover dargestellt. Fällt es Ihnen schwer, in einer Herrenmannschaft zu arbeiten?

- Eine schwierige Frage, weil ich seit vielen Jahren arbeite. Erstens bin ich daran gewöhnt. Zweitens, wenn wir über die Branche als Ganzes sprechen, waren bereits einige Mädchen in Betrieb.

Ein solcher Mythos stammt aus der Antike, als viel körperliche Arbeit erforderlich war. Mein Freund und ich erinnern uns noch daran, wie wir beide einen großen, schweren Server mit mehreren Einheiten herausgezogen und auf den Boden gelegt haben, weil wir ihn nicht mehr an einen speziellen Ort zur Wartung bringen konnten. Und sie saßen mit Schraubendrehern auf dem Boden mitten im Rechenzentrum und wechselten die Räder. Es gab noch keine Folie :-)

Jetzt gibt es so etwas nicht. Wir arbeiten in einem gemütlichen Büro am Tisch. Unsere heutige Arbeit unterscheidet sich nicht von der Arbeit eines Programmierers, die auch nie rein männlich war: Programmiererinnen sind ein ziemlich häufiges Ereignis.

- Unsere Blitzumfrage. Was ist dein Laptop?

- Apple.

- Was ist besser, Bash oder Perl?

- Bash.

- Startup oder großes Unternehmen?

- Startup in einem großen Unternehmen.

" Was war das Letzte, wofür du nicht genug Geld hattest?"

- Zur Yacht.

- Tolle Antwort. Jeder wird sofort die Gehaltsstufe in der Mail.Ru-Gruppe verstehen.

- Genau.

- ICQ oder TamTam?

- ICQ.

- "VK" oder "Klassenkameraden"?

- VK.

- Wer ist dein Idol?

- Ich habe kein Idol. Ich glaube, dass viele Menschen im russischen und ausländischen Internet viel für diese Branche getan haben. Dank ihnen entwickelt es sich in einem solchen Tempo. Ich hatte Glück, mit vielen von ihnen kenne ich persönlich.

- Nennen Sie die großen Russen.

- ziemlich viel; Ich fürchte, ich werde nicht alle auflisten. Wenn jemand persönlich herausgegriffen werden muss, bin ich froh, dass ich es im Leben geschafft habe, mit Ilya Segalovich zusammenzuarbeiten.

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


All Articles