Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

27
MongoDB Europe 2016 Old Billingsgate, London 15. November mongodb.com/europe Mit dem Code benjaminlorenz20 sind Ihre Tickets 20 % günstiger!

Transcript of Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Page 1: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

MongoDB Europe 2016Old Billingsgate, London

15. Novembermongodb.com/europe

Mit dem Code benjaminlorenz20 sindIhre Tickets 20 % günstiger!

Page 2: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Back to Basics 2016: Webinar 6

Produktivsetzung einer AnwendungBenjamin Lorenz

Senior Solutions Architect, MongoDB Frankfurt@benjaminlorenz

V1.1

Page 3: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

3

Rückblick

• Webinar 1: Einführung in NoSQL– Verschiedene Typen von NoSQL-Datenbanken, MongoDB ist eine

Dokumentdatenbank• Webinar 2: Ihre erste MongoDB-Anwendung

– Erstellen von Datenbanken und Collections, CRUD-Operationen, Indizes und explain()

• Webinar 3: Schema-Design– Dynamische Schemata, Einbettung von Dokumenten

• Webinar 4: Text- und Geoindizes• Webinar 5: Einführung in das Aggregation Framework

Page 4: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

4

Produktivsetzung einer Anwendung

• Der Prozess, in dessen Rahmen neu entwickelte Software für Anwender zugänglich gemacht wird

• Die wichtigsten Aspekte aus der Datenbankperspektive:– Dauerhaftigkeit– Skalierbarkeit– Datensicherheit– Allgemeine Hinweise für die Produktion

Page 5: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

5

Dauerhaftigkeit – Replica Sets

Node 1

Node 2 Node 3

Page 6: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

6

Initialisierung eines Replica Sets

Node 1

Node 2 Node 3

Node 1(Primary)

Node 2(Secondary)

Node 3(Secondary)

Replikation Replikation

Heartbeat

Page 7: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

7

Node 2(Secondary)

Node 3(Secondary)

Heartbeat

Wahl des Primary

Node 1(Primärknoten)

Replica Set – Ausfall des Primary

Page 8: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

8

Node 1(Primärknoten)

Node 2(Primary)

Node 3(Secondary)

Heartbeat

Replikation

Replica Set – Neuer Primary

Page 9: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

9

Node 2(Primary)

Node 3(Secondary)

Heartbeat

Replikation

Node 1Wiederherstellung

Replikation

Replica Set – Wiederherstellung

Page 10: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

10

Node 2(Primary)

Node 3(Secondary)

Heartbeat

Replikation

Node 1(Secondary)

Replikation

Replica Set – Mit neuem Primary wieder vollständig

Page 11: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Starke Konsistenz vs. geringe Latenz

Page 12: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

12

Node 1(Primary)

Node 2(Secondary)

Node 3(Secondary)

Anwendung

Treiber

Lesen & schreiben

Starke Konsistenz

Page 13: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

13

Node 1(Primary)

Node 2(Secondary)

Node 3(Secondary)

Anwendung

Treiber

Geringe Latenz

Lesen Lesen

Lesen & schreiben

Page 14: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

14

Write Concern

• Hiermit lässt sich festlegen, welche Art von Rückmeldung auf einen Schreibvor-gang erfolgt:

• w:0 : Der Treiber schickt das Paket ab und wartet anschließend nicht auf Rückmeldung vom Server.

• w:1 : Alle vom Server generierten Fehlermeldungen werden an die Anwendung zurückgeschickt.

• w:majority : Es wird rückgemeldet, ob der Schreibvorgang auf mehr als der Hälfte der Knoten des Replica Sets erfolgt ist.

• Journaling • j:false : Schreiboperationen müssen nicht im Journal erfasst werden.• j:true : Schreiboperationen müssen im Journal erfasst werden.

Page 15: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Schreibmodus: w:0

Page 16: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Schreibmodus: w:1

Page 17: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Schreibmodus: w:j

Page 18: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Schreibmodus: w:majority

Page 19: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Sharding

Page 20: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

20

Engpass: Ein-/Ausgabe

Page 21: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Engpass: Arbeitsspeicher

Page 22: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Sharded Cluster

mongos mongos mongos

Primary

Secondary

Secondary

Primary

Secondary

Secondary

Primary

Secondary

Secondary

Primary

Secondary

Secondary

Primary

Secondary

Secondary

Anwendung

Treiber

Config Server

Page 23: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

23

Einrichten von Replica Sets und Sharded Clusters

• Einfachste Option: Server und Management von MongoDB– MongoDB Atlas

• Etwas komplizierter: Ihre Server, cloudbasiertes Management– MongoDB Cloud Manager

• Noch etwas komplizierter: Ihre Server, Management in Ihrem Unternehmen– MongoDB Ops Manager

• Komplizierteste Option– Sie erledigen alles selbst, mit Skripts und manuell eingegebenen

Befehlen. (Anleitungen in der Dokumentation)

Page 24: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

24

Datensicherheit – Mehrschichtiger Schutz

• Nutzen Sie ausschließlich durch SSL geschützte Verbindungen.• Richten Sie Anwender, Passwörter und Zugriffsrollen für alle Datenbanken ein.• Personenbezogene Daten und Kreditkartendaten sollten nur verschlüsselt

gespeichert werden.• Aktivieren Sie die Protokollierung (Auditing), wenn Sie zurückverfolgen können

müssen, wer welche Änderungen vorgenommen hat.• Aktivieren Sie Monitoring aller Nodes, um verdächtige Operationen zu

identifizieren.• Ihre Datenbank sollte nicht universell zugänglich sein – klare, restriktive

Firewall-Regeln sind Pflicht.

Page 25: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

25

Allgemeine Hinweise für die Produktion• Nutzen Sie die aktuelle MongoDB-Version. Spielen Sie alle Patches ein. (64-Bit-Version für Produktion)• Die Storage Engine Wired Tiger (Standardoption) bietet die beste Leistung.• Wählen Sie den angemessenen Write Concern aus.• Konfigurieren Sie den Connection Pool auf Basis der Anzahl der zu erwartenden gleichzeitigen Verbindungen.• Stellen Sie genug RAM und CPU für die zu erwartende Arbeitslast bereit.• Nutzen Sie nach Möglichkeit Solid-State-Festplatten (SSD).• Deaktivieren Sie NUMA (Non Uniform Memory Access).• Sorgen Sie für genügend Swap-Space (sonst stoppt der OOM-Daemon in Linux Ihre MongoDB-Prozesse).• Machen Sie sich mit den Komprimierungsoptionen für Wired Tiger vertraut: none, snappy (Standard) und zlib.• Für RAID-Nutzer: Wir empfehlen RAID10.• Das Dateisystem XFS bietet die beste Leistung.• Für VM-Nutzer: Nutzen Sie einen NOOP-Scheduler für virtuelle Geräte.• Synchronisieren Sie die Systemzeit aller Nodes in Ihrem Cluster mit NTP.• Deaktivieren Sie die Option atime für alle Dateisysteme, auf denen Sie Datenbankdateien speichern.• Erhöhen Sie die Obergrenze für die Anzahl der Dateideskriptoren.• NFS und Dateisysteme mit eigener Replikation (SANs) sind für MongoDB ungeeignet.

Page 26: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

26

Vor der Inbetriebname

• Sprechen Sie mit uns.• Lassen Sie uns Ihre Konfiguration überprüfen (Health Check).• Nutzen Sie unsere automatisierten Tools (Atlas, Cloud Manager,

Ops Manager).

Die meisten Produktionsprobleme treten auf, wenn die Kunden alles allein machen wollen.

Page 27: Back to Basics - Webinar 6: Produktivsetzung einer Anwendung

Fragerunde