Direkt zum Inhalt

Unabhängige Websysteme: Warum wir möglichst wenig aus der Hand geben

Gespeichert von dadmin02 am

Technische Störungen größerer Internetdienste sind längst keine Ausnahme mehr. Immer wieder sind Webseiten, Shops, Portale oder andere Online-Angebote plötzlich nur eingeschränkt oder überhaupt nicht erreichbar.

Dabei liegt die eigentliche Ursache häufig gar nicht beim Betreiber der betroffenen Webseite selbst. Ein externer Dienst fällt aus – und mit ihm funktionieren plötzlich auch alle Systeme nicht mehr, die von diesem Dienst abhängig sind.

Cloud-Plattformen, externe APIs, Content Delivery Networks, Authentifizierungsdienste, Analyseplattformen oder andere Drittanbieter können zweifellos praktisch sein. Gleichzeitig schaffen sie jedoch Abhängigkeiten, die man als Betreiber selbst kaum noch kontrollieren kann.

Genau deshalb verfolgen wir bei unseren Webprojekten bewusst einen anderen Ansatz.

Was wir selbst betreiben können, geben wir möglichst nicht aus der Hand

Unsere grundsätzliche Haltung ist einfach:

Alles, was wir für den zuverlässigen Betrieb eines Webprojektes benötigen, versuchen wir entweder selbst bereitzustellen oder durch eine Lösung zu ersetzen, die wir selbst kontrollieren können. 

Nicht, weil externe Dienste grundsätzlich schlecht wären.

Sondern weil jede zusätzliche externe Abhängigkeit gleichzeitig eine weitere mögliche Fehlerquelle darstellt.

Fällt ein Drittanbieter aus, können wir dessen Infrastruktur weder reparieren noch beeinflussen. In vielen Fällen bleibt nur abzuwarten.

Betreiben wir eine Funktion dagegen selbst, können wir analysieren, eingreifen, anpassen und Fehler beseitigen.

Für uns ist das ein entscheidender Unterschied.

Jeder Webserver ist eine eigene Insel

Auch innerhalb unserer eigenen Infrastruktur versuchen wir, Abhängigkeiten möglichst gering zu halten.

Unsere Webserver betrachten wir deshalb bewusst als weitgehend eigenständige Systeme.

Oder vereinfacht gesagt:

Jeder Webserver ist eine Insel.

Ein Problem auf einem System soll sich möglichst nicht automatisch auf andere Systeme übertragen können.

Diese Trennung dient nicht nur der Verfügbarkeit, sondern auch der Sicherheit. Je stärker Systeme miteinander verkettet sind, desto größer kann im Fehlerfall die Wirkung einer einzelnen Störung werden.

Eine unabhängige Infrastruktur bedeutet für uns deshalb nicht, dass Systeme niemals miteinander kommunizieren dürfen. Sie bedeutet vielmehr, Abhängigkeiten bewusst zu schaffen – und nicht aus Bequemlichkeit immer neue hinzuzufügen.

Fehler lassen sich nicht vollständig verhindern

Auch die beste technische Infrastruktur kann ausfallen.

Festplatten können Fehler entwickeln. Dienste können hängen bleiben. Software kann unerwartet reagieren. Updates können Nebenwirkungen verursachen. Ressourcen können knapp werden oder externe Angriffe können Systeme belasten.

Die entscheidende Frage lautet deshalb aus unserer Sicht nicht:

Wie verhindern wir jeden einzelnen Fehler?

Das wäre unrealistisch.

Die wichtigere Frage lautet:

Wie erkennen wir entstehende Probleme möglichst früh, bevor daraus ein Ausfall wird?

Deshalb gehört Fehlerfrüherkennung zu unserer täglichen Arbeit.

Wir überwachen nicht nur, ob ein Server grundsätzlich erreichbar ist. Entscheidend sind oftmals die Entwicklungen darunter: ungewöhnlich viele Prozesse, steigende Speicherbelegung, auffällige Verbindungen, Veränderungen in der Systemlast, nicht mehr arbeitende Hintergrundprozesse oder Dienste, deren Verhalten langsam vom Normalzustand abweicht.

Viele größere Störungen kündigen sich an.

Man muss versuchen, diese Anzeichen rechtzeitig sichtbar zu machen.

Überwachung ist für uns kein Ersatz für Administration

Monitoring-Systeme sind hilfreich. Aber eine grüne Statusanzeige allein bedeutet noch lange nicht, dass ein System tatsächlich gesund ist.

Deshalb kombinieren wir automatisierte Überwachung mit eigener Fehlererkennung und individueller Kontrolle.

Wo Standardlösungen nicht ausreichen, schreiben wir eigene Prüfungen und Überwachungsmechanismen.

Dabei interessiert uns weniger, ob irgendeine Software behauptet, dass alles in Ordnung sei.

Uns interessiert, ob das jeweilige Webprojekt tatsächlich so funktioniert, wie es funktionieren soll.

Das können HTTP-Prüfungen sein, die Kontrolle einzelner Dienste, die Beobachtung von Prozessen oder Systemressourcen bis hin zu speziell für eine Anwendung entwickelten Plausibilitätsprüfungen.

Das Ziel bleibt dabei immer dasselbe:

Eine Störung möglichst erkennen, bevor ein Benutzer sie bemerkt.

Unabhängigkeit bedeutet auch Verantwortung

Wer möglichst viel selbst betreibt, übernimmt zwangsläufig mehr Verantwortung.

Server müssen gepflegt werden. Sicherheitsupdates müssen eingespielt, Softwareversionen geprüft, Backups kontrolliert und ungewöhnliche Systemzustände untersucht werden.

Genau deshalb ist vollständige Eigenständigkeit nicht für jedes Unternehmen und nicht für jedes Webprojekt automatisch die richtige Lösung.

Für uns ist sie jedoch ein wesentlicher Bestandteil unserer Arbeit.

Denn wir möchten im Fehlerfall nicht erklären müssen:
„Wir können nichts tun. Unser Dienstleister hat gerade eine Störung.“

Wir möchten nach Möglichkeit selbst herausfinden können, was passiert – und selbst handeln können.

Technik muss beherrschbar bleiben

Moderne Webprojekte können sehr schnell aus einer Vielzahl miteinander verbundener Dienste entstehen.

Für nahezu jede Aufgabe gibt es inzwischen einen externen Anbieter.

Das erscheint zunächst komfortabel.

Mit jedem weiteren Anbieter wächst jedoch auch die technische Lieferkette hinter einer Webseite. Irgendwann kann selbst ein vergleichsweise kleines Webprojekt von einer erstaunlich großen Zahl fremder Systeme abhängig sein.

Wir bevorzugen deshalb eine andere Frage:

Brauchen wir diesen externen Dienst wirklich?

Wenn eine Funktion mit vertretbarem Aufwand selbst bereitgestellt werden kann, prüfen wir diese Möglichkeit zuerst.

Wenn wir eine bestehende freie oder selbst betreibbare Lösung einsetzen können, bevorzugen wir häufig diesen Weg.

Und wenn eine externe Abhängigkeit tatsächlich notwendig oder sinnvoll ist, sollte sie bewusst gewählt werden.

Nicht jede technisch mögliche Abhängigkeit ist auch eine technisch sinnvolle Abhängigkeit.

Unsere Arbeitsweise: verstehen statt nur zusammenbauen

Diese Haltung prägt auch unsere Arbeit als freischaffende Administratoren und Webentwickler.

Wir wollen Systeme nicht nur installieren und anschließend hoffen, dass sie funktionieren.

Wir möchten verstehen, wie sie arbeiten.

Denn nur ein System, dessen Zusammenhänge man kennt, lässt sich im Fehlerfall sinnvoll analysieren.

Dazu gehören für uns unter anderem die Administration von Linux-Webservern, Web- und Datenbankdiensten, PHP-Umgebungen, CMS-Systemen, Maildiensten, Sicherheitskomponenten, Monitoring sowie die Entwicklung individueller Lösungen für konkrete Anforderungen.

Nicht jedes Problem benötigt einen neuen Cloud-Dienst.

Manchmal braucht es lediglich jemanden, der sich die bestehende Infrastruktur genau ansieht und eine passende Lösung entwickelt.

Alles in eigener Hand

Unsere technische Philosophie lässt sich auf wenige Grundsätze reduzieren:

  • So unabhängig wie sinnvoll.
  • So wenig externe Abhängigkeiten wie möglich.
  • Systeme voneinander trennen.
  • Fehler möglichst früh erkennen.
  • Und die eigene Infrastruktur wirklich kennen.

Das bedeutet nicht, dass es bei uns niemals Störungen geben kann.

Es bedeutet aber, dass wir versuchen, die Zahl möglicher Fehlerquellen zu begrenzen, Entwicklungen frühzeitig zu erkennen und im Ernstfall selbst handeln zu können.

Für uns ist genau das ein wesentlicher Bestandteil professioneller Administration.

Denn Unabhängigkeit ist im Internet nicht nur eine Frage der Philosophie.

Sie ist auch ein Bestandteil von Zuverlässigkeit.