7 Deployment-Modelle

Die Wahl des richtigen Deployment-Modells ist eine der ersten und wichtigsten Entscheidungen beim Einsatz von MongoDB. Diese Wahl beeinflusst nicht nur die technischen Eigenschaften wie Skalierbarkeit und Verfügbarkeit, sondern auch operative Aspekte wie Wartungsaufwand und Kosten. MongoDB bietet verschiedene Modelle, die von einfachen Entwicklungsumgebungen bis zu hochskalierbaren Produktionssystemen reichen. Jedes Modell ist für bestimmte Szenarien optimiert und bringt spezifische Trade-offs mit sich.

7.1 Single Node: Standalone-Deployment

Das einfachste Deployment-Modell ist ein einzelner MongoDB-Server ohne Replikation oder Sharding. Diese Standalone-Konfiguration eignet sich hervorragend für Entwicklungsumgebungen, lokale Tests oder Proof-of-Concepts. Die Installation dauert wenige Minuten, die Konfiguration ist minimal, und der Ressourcenverbrauch bleibt überschaubar.

In Produktionsumgebungen ist dieses Modell jedoch problematisch. Ein einzelner Server bietet keinerlei Ausfallsicherheit. Fällt die Hardware aus, ist die Datenbank nicht verfügbar. Selbst geplante Wartungsarbeiten wie Betriebssystem-Updates erfordern Downtime. Die Skalierung ist auf die Kapazität einer einzelnen Maschine begrenzt – eine Grenze, die schneller erreicht ist, als man denkt.

Es gibt legitime Anwendungsfälle für Standalone-Deployments: temporäre Analysen, interne Tools mit unkritischen Daten oder Entwicklungsumgebungen, die produktionsnahe Setups nachbilden. Für alles andere sollte mindestens ein Replica Set in Betracht gezogen werden.

7.2 Replica Set: Hochverfügbarkeit durch Replikation

Ein Replica Set ist MongoDBs Antwort auf die Anforderungen nach Hochverfügbarkeit und Ausfallsicherheit. Es besteht aus mehreren MongoDB-Instanzen, die dieselben Daten halten. Die Architektur folgt einem Primary-Secondary-Modell: Ein Primary-Knoten nimmt alle Schreiboperationen entgegen, während Secondary-Knoten diese Änderungen asynchron replizieren.

Der Primary ist die autoritative Datenquelle. Alle Inserts, Updates und Deletes erfolgen zunächst auf dem Primary. Diese Operationen werden in ein spezielles Collection namens Oplog geschrieben – ein chronologisches Log aller Änderungen. Secondary-Knoten lesen kontinuierlich aus diesem Oplog und wenden die Operationen auf ihre Kopie der Daten an. Dieser Mechanismus hält alle Knoten synchron, typischerweise mit einer Verzögerung im Millisekundenbereich.

Die wahre Stärke eines Replica Sets zeigt sich im Fehlerfall. Fällt der Primary aus – durch Hardware-Defekt, Netzwerkprobleme oder geplante Wartung – initiieren die verbliebenen Knoten automatisch eine Election. Innerhalb weniger Sekunden wählen sie einen neuen Primary aus den Secondaries. Die Anwendung verbindet sich über einen Connection String mit dem gesamten Replica Set, nicht mit einzelnen Knoten. Der MongoDB-Treiber erkennt den Ausfall und leitet Operationen automatisch zum neuen Primary um.

Diese Automatisierung minimiert Downtime dramatisch. Während ein Standalone-Deployment bei Hardware-Ausfall komplett ausfällt, bis manuell eingegriffen wird, erholt sich ein Replica Set selbstständig. In der Praxis bedeutet dies oft den Unterschied zwischen Minuten und Stunden Ausfall.

Replica Sets bieten neben Verfügbarkeit auch Flexibilität bei Leseoperationen. Standardmäßig erfolgen alle Reads vom Primary, was aktuellste Daten garantiert. Für Anwendungen mit hoher Leselast können Reads aber auch auf Secondaries verteilt werden. Diese Lesepräferenzen erlauben Trade-offs zwischen Konsistenz und Performance. Ein Analytics-Job könnte etwa von einem Secondary lesen, um den Primary nicht zu belasten, akzeptiert aber, dass die Daten minimal veraltet sein könnten.

Ein Replica Set benötigt mindestens drei Knoten für robuste Elections. Warum drei? Elections basieren auf Mehrheitsentscheidungen. Mit drei Knoten kann das Set einen Ausfall verkraften und hat noch eine Mehrheit (2 von 3). Mit zwei Knoten würde ein Ausfall bedeuten, dass keine Mehrheit mehr existiert – das verbleibende Node darf nicht zum Primary werden, da es nicht weiß, ob das andere Node wirklich ausgefallen ist oder nur die Netzwerkverbindung getrennt wurde.

Für Setups mit geradzahligen Knoten bietet MongoDB eine Spezialität: den Arbiter. Ein Arbiter ist ein Knoten, der an Elections teilnimmt, aber keine Daten speichert. Er dient rein dazu, eine ungerade Anzahl von Stimmen sicherzustellen. Ein Replica Set aus zwei Datenknoten plus einem Arbiter kann Elections durchführen, wobei der Arbiter nur minimal Ressourcen verbraucht.

Die Einrichtung eines Replica Sets erfordert mehr Aufwand als ein Standalone-Deployment, aber der Mehrwert ist immens. Für Produktionsumgebungen ist ein Replica Set nicht optional, sondern Standard. Die zusätzlichen Ressourcen – typischerweise mindestens drei Server – sind eine Investition in Verfügbarkeit und Datensicherheit.

7.3 Sharded Cluster: Horizontale Skalierung für massive Datenmengen

Replica Sets adressieren Verfügbarkeit, aber nicht unbegrenzte Skalierung. Ein Replica Set speichert alle Daten auf jedem Knoten. Irgendwann stößt auch der größte Server an seine Grenzen – nicht genug RAM für Working Set, nicht genug Speicherplatz für Daten, nicht genug IOPS für die Last. Hier greift Sharding.

Ein Sharded Cluster verteilt Daten horizontal auf mehrere Shards. Jeder Shard ist selbst ein Replica Set, was Sharding und Hochverfügbarkeit kombiniert. Die Datenverteilung basiert auf einem Shard Key – einem Feld oder einer Feldkombination, die bestimmt, auf welchem Shard ein Dokument gespeichert wird. MongoDB teilt den Raum möglicher Shard-Key-Werte in Chunks auf und verteilt diese Chunks auf die Shards.

Die Architektur eines Sharded Clusters umfasst mehrere Komponenten. Die Shards selbst speichern die Daten. Config-Server – ebenfalls ein Replica Set – halten Metadaten über die Cluster-Topologie: welche Chunks existieren, wo sie liegen, welche Datenbanken geshardet sind. Mongos-Instanzen fungieren als Router. Anwendungen verbinden sich mit mongos, nicht direkt mit Shards. Mongos analysiert Queries, identifiziert relevante Shards und leitet Anfragen weiter.

Die Wahl des Shard Keys ist kritisch. Ein guter Shard Key verteilt Daten gleichmäßig, vermeidet Hotspots und ermöglicht effiziente Queries. Ein klassisches Anti-Pattern ist ein monoton steigender Wert wie ein Timestamp. Alle neuen Dokumente landen auf demselben Shard – ein Hotspot für Schreiboperationen. Besser wäre ein Hash des Timestamps oder eine Kombination aus Timestamp und einem verteilenden Feld wie User-ID.

Sharding ermöglicht nahezu unbegrenzte Skalierung. Wird ein Shard voll, fügt man einfach weitere hinzu. MongoDB balanciert Chunks automatisch aus, verschiebt sie von überlasteten auf weniger ausgelastete Shards. Diese Operationen laufen im Hintergrund, während die Datenbank regulär arbeitet.

Der Preis für diese Skalierung ist Komplexität. Ein Sharded Cluster benötigt mehr Server, mehr Konfiguration und mehr operatives Know-how. Queries, die über mehrere Shards gehen (Scatter-Gather), sind langsamer als solche, die auf einen Shard beschränkt bleiben. Die Wahl des Shard Keys ist irreversibel – eine nachträgliche Änderung erfordert ein Neuaufbauen der Collection.

Sharding sollte erst dann in Betracht gezogen werden, wenn Replica Sets ihre Grenzen erreichen. Für viele Anwendungen – selbst solche mit hunderten Gigabytes oder wenigen Terabytes – reicht ein gut konfiguriertes Replica Set völlig aus. Sharding ist für massive Datenmengen, die ein einzelnes Replica Set überfordern würden.

7.4 Cloud-Deployment: MongoDB Atlas und Self-Managed

Die operativen Herausforderungen von MongoDB – Deployment, Backups, Monitoring, Updates – haben zu managed Services geführt. MongoDB Atlas ist MongoDBs eigener Database-as-a-Service, verfügbar auf AWS, Azure und Google Cloud. Atlas nimmt Teams die operative Last ab: Deployment dauert Minuten, Backups erfolgen automatisch, Monitoring ist integriert, und Security-Updates werden von MongoDB gemanaged.

Atlas unterstützt alle Deployment-Modelle: Standalone für Entwicklung, Replica Sets für Produktion, Sharded Clusters für massive Skalierung. Die Konfiguration erfolgt über ein Web-Interface oder API. Skalierung bedeutet ein paar Klicks – von einer kleinen Instanz mit 2 GB RAM bis zu Clustern mit Terabytes und Hunderten von Shards. Die Abrechnung erfolgt nach tatsächlicher Nutzung, was besonders für Startups attraktiv ist.

Die Alternative ist Self-Managed in der Cloud: MongoDB auf eigenen EC2-Instances, Compute-Engine-VMs oder Azure-VMs. Dies bietet maximale Kontrolle über Konfiguration und Kosten, erfordert aber auch operatives Know-how. Teams müssen sich um Backups, Monitoring, Security-Patches und Skalierung selbst kümmern. Für Unternehmen mit strengen Compliance-Anforderungen oder sehr spezifischen Konfigurationsbedürfnissen kann dies die richtige Wahl sein.

Die folgende Tabelle fasst die Charakteristiken der verschiedenen Deployment-Modelle zusammen:

Modell Verfügbarkeit Skalierung Komplexität Typischer Einsatz
Standalone Keine Vertikal begrenzt Minimal Entwicklung, Tests
Replica Set Hoch durch Failover Vertikal begrenzt Moderat Produktion (Standard)
Sharded Cluster Sehr hoch Nahezu unbegrenzt horizontal Hoch Massive Datenmengen
Atlas (Managed) Je nach Konfiguration Flexibel Gering (operational) Schnelles Deployment, wenig Ops-Team
Self-Managed Cloud Je nach Konfiguration Flexibel Hoch Spezielle Anforderungen, Kostenkontrolle

7.5 Entscheidungskriterien: Das richtige Modell wählen

Die Wahl des Deployment-Modells sollte auf einer nüchternen Analyse der Anforderungen basieren, nicht auf Trends oder Vorlieben. Ein paar Leitfragen helfen bei der Entscheidung:

Wie groß ist das Datenvolumen, und wie schnell wächst es? Ein Replica Set kann problemlos mehrere Terabytes verwalten, wenn die Hardware entsprechend dimensioniert ist. Sharding wird erst relevant bei wirklich massiven Datenmengen oder extremen Performance-Anforderungen.

Wie kritisch ist Verfügbarkeit? Für eine interne Dokumentations-Datenbank mag Standalone ausreichen. Für einen Online-Shop, der pro Minute Downtime Tausende Euro verliert, ist ein Replica Set Minimum. Für global verteilte Anwendungen könnte sogar ein geografisch verteiltes Replica Set sinnvoll sein.

Welche operativen Ressourcen stehen zur Verfügung? Ein kleines Team ohne dedizierte Database Administrators profitiert immens von Atlas. Ein großes Unternehmen mit etablierten Ops-Prozessen könnte Self-Managed bevorzugen, um Kontrolle und Kostenoptimierung zu maximieren.

Wie sehen die Zugriffsmuster aus? Hohe Leselast spricht für Replica Sets mit verteilten Reads. Massive Schreiblast in bestimmte Daten-Partitionen könnte Sharding erfordern. Analytics-Workloads könnten von dedizierten Secondary-Knoten profitieren, die nicht für Produktion-Traffic verwendet werden.

Die beste Entscheidung ist oft evolutionär: Starten mit Standalone für Prototyping, migrieren zu einem Replica Set für erste Produktion, und erst bei tatsächlichem Bedarf zu Sharding übergehen. MongoDB macht diese Evolution relativ schmerzlos – ein Standalone kann zu einem Replica Set konvertiert werden, und ein Replica Set kann als erster Shard eines Sharded Clusters dienen.