Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP...

33
Skalierbare Webanwendungen Thomas Bachmann Lead Software Architect & CIO Mambu GmbH Twitter: @thobach

Transcript of Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP...

Page 1: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Skalierbare Webanwendungen

Thomas BachmannLead Software Architect & CIO

Mambu GmbH

Twitter: @thobach

Page 2: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling
Page 3: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Anwendungsbeispiel

● Hohe Nichtfunktionale Anforderungen○ Sicherheit

■ Vertraulichkeit■ Integrität■ Verfügbarkeit (auch während Upgrades)

○ Skalierbarkeit■ große Datenmengen

○ Performance■ Transaktionen / Sekunde■ Reporting■ Isolation

Page 4: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Traditioneller Monolith

Page 5: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Status Quo

SQL slave RDS DB instance

read replica

SQL mastercache node bucket with objects

Load Balancer

Application Servers

download distribution

Herausforderungen● konstante Antwortzeiten

unabhängig von aktueller Last und Datenmenge

● Verfügbarkeit während Upgrades

● hoher Datendurchsatz bei OLTP● kurze Antwortzeiten

bei OLAP Auto Scaling Group

Horizontal Scaling

Vertical Scaling

Read Query Caching

Horizontal Scaling

Page 6: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Skalierbarkeit und Verfügbarkeit der Persistenzschicht

SQL slave RDS DB instance

read replica

SQL mastercache node bucket with objects

Horizontal Scaling

Vertical Scaling

Read Query Caching

Horizontal Scaling

Page 7: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Lösungsalternativen✅ Horizontale und vertikale Skalierung (Cloud Computing)✅ Infrastruktur Automatisierung zur Performance Isolation ___(Cloud Computing)✅ Caching Cluster / Read-Replicas für Leseanfragen● NoSQL vs RDBMS● Column Stores vs. Row Stores● Polyglot Persistence & CQRS vs. CRUD & REST

Skalierbarkeit und Verfügbarkeit der Persistenzschicht

Page 8: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● NoSQL (Document & Key-Value Stores) vs RDBMS○ z.B. MongoDB vs MySQL

● NoSQL: Horizontale Skalierbarkeit / Sharding, kein Schema, Managed Service ohne Downtime

Image Sources: https://medium.baqend.com/nosql-databases-a-survey-and-decision-guidance-ea7823a822d

Skalierbarkeit und Verfügbarkeit der Persistenzschicht

Page 9: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● NoSQL (Document & Key-Value Stores) vs RDBMS○ z.B. MongoDB vs MySQL

Image Sources: https://webassets.mongodb.com/_com_assets/collateral/MongoDB_Architecture_Guide.pdf?_ga=2.32389758.1356611663.1504764515-1149550766.1504764515

Skalierbarkeit und Verfügbarkeit der Persistenzschicht

Page 10: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● Column Stores vs Row Stores○ z.B. Apache Cassandra vs MySQL

● Column Stores: schneller lesen, (langsamer schreiben), schnelle Schema Änderungen

Image Sources: http://blog.agilityworks.co.uk/our-blog/demystifying-the-column-store-store-statistics-in-sap-hana-and-the-benefits-for-business-in, http://www.sciencedirect.com/science/article/pii/S1319157816300453

Skalierbarkeit und Verfügbarkeit der Persistenzschicht

Page 11: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● In-Memory Computing und Key-Value Stores (NoSQL)○ z.B. SAP HANA und Redis

● Schnelle Zugriffszeiten (Latenz)Image Source: http://www.sciencedirect.com/science/article/pii/S1319157816300453

Skalierbarkeit und Verfügbarkeit der Persistenzschicht

Page 12: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● Polyglot Persistence & CQRS vs. CRUD & REST

● “Best of breed” für jeden AnfragetypImage Source: http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/

Skalierbarkeit und Verfügbarkeit der Persistenzschicht

Page 13: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Skalierbarkeit und Verfügbarkeit der Anwendungslogik

Application Servers

Auto Scaling Group

Page 14: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Anforderungen● Last

○ hoher Datendurchsatz bei OLTP

● Datenmenge○ schnelle Antworten bei OLAP

● Performance Isolation bei Mandantenfähigkeit○ Last eines Kunden beeinträchtigt

andere Kunden nicht

Skalierbarkeit und Verfügbarkeit der Anwendungslogik

● Verfügbarkeit während Upgrades/Updates○ Infrastruktur (Hardware,

Betriebssystem)○ Datenspeicher Version○ Datenbank Schemas

Page 15: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Lösungsalternativen✅ Horizontale und vertikale Skalierung (Cloud Computing)✅ Managed Services (Cloud Computing)✅ Blue/Green Deployments✅ Serverless Computing● Asynchrone Verarbeitung

○ Streaming / Batch Processing / MapReduce○ Messaging

● Microservices, Self-Contained Systems (SCS)

Skalierbarkeit und Verfügbarkeit der Anwendungslogik

Page 16: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● Asynchrone Verarbeitung: Streaming / Batch Processing / MapReduce○ z.B. Apache Hadoop / Spark

● Schnelle (Live) Analysen auf großen Datenmengen (Latenz)Image Source: https://www.bigdatareviews.org/?page_id=783, https://blog.matthewrathbone.com/2013/02/09/real-world-hadoop-implementing-a-left-outer-join-in-hadoop-map-reduce.html

Skalierbarkeit und Verfügbarkeit der Anwendungslogik

Page 17: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● Asynchrone Verarbeitung: Messaging○ z.B. JMS

● Hoher Datendurchsatz in Peak Zeiten, kurze Antwortzeiten, Nichtverfügbarkeit der Consumer kein Problem

Image Source: https://docs.microsoft.com/en-us/azure/architecture/patterns/competing-consumers

Skalierbarkeit und Verfügbarkeit der Anwendungslogik

Page 18: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● Microservices & Self-Contained Systems (SCS)

● Skalierung auf Serviceebene

Image Source: https://martinfowler.com/articles/microservices.html, https://www.slideshare.net/ewolff/microservices-and-selfcontained-system-to-scale-agile

Skalierbarkeit und Verfügbarkeit der Anwendungslogik

Page 19: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Zusammenfassung

Page 20: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Zusammenfassung● Überblick über Architektur Patterns zur Skalierbarkeit

und Verfügbarkeit von Webanwendungen

● Überblick über Technologien zur Skalierbarkeit und Verfügbarkeit von Webanwendungen

● Architekturevolution am Beispiel einer Enterprise Java Anwendung aus dem Finanzsektor

Page 21: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Status Quo

SQL slave RDS DB instance

read replica

SQL mastercache node bucket with objects

Load Balancer

Application Servers

download distribution

Anforderungen● konstante Antwortzeiten

unabhängig von aktueller Last und Datenmenge

● Verfügbarkeit während Upgrades

● hoher Datendurchsatz bei OLTP● kurze Antwortzeiten bei OLAP

Auto Scaling Group

Horizontal Scaling

Vertical Scaling

Page 22: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Zielarchitektur

SQL slave RDS DB instance

read replica

SQL mastercache node bucket with objects

Load Balancer

Application Servers

Lösungen● Microservices● Key-Value Store:

Redis● Asynchrone

Verarbeitung

● ROLAP

Auto Scaling Group

Horizontal Scaling

Load Balancer

Application Servers

Auto Scaling Group

cache cluster

APIGateway

Monolith

Load Balancer

Application Servers

Auto Scaling Group

cache cluster

Authenti-cation

Load Balancer

Application Servers

Auto Scaling Group

cache cluster

Savings Transactions

message queue

sync API

download distribution

Page 23: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Fragen und Feedback

Page 24: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Danke

Page 25: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Backup Folien

Page 26: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Betrieb

Page 27: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● Monitoring● Logging● Alerting● Fehlertoleranz● Redundanz

Betrieb

Page 28: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● Redundanz kritischer Komponenten oder Nutzung redundanter Dienste○ Virtuelle Maschine - Physikalischer Rechner -

Rechenzentrum - Region● Fehlertoleranz des Gesamtsystems

○ ohne menschliches Eingreifen○ Fehler erkennen○ Fehlerhafte Komponente entfernen○ (Betrieb aufrecht erhalten dank Redundanz)○ Ersatz für fehlerhafte Komponente bereitstellen und

installieren

Redundanz und Fehlertoleranz

Page 29: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Verfügbarkeit während Upgrades

SQL slave RDS DB instance

read replica

SQL mastercache node bucket with objects

Application Servers

Auto Scaling Group

Horizontal Scaling

Vertical Scaling

Read Query Caching

Page 30: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Anforderungen● Verfügbarkeit während Upgrades/Updates

○ Infrastruktur (Hardware, Betriebssystem)○ Anwendung○ Datenbank Schemas○ Abhängigkeiten (Datenbank, Cache)

Verfügbarkeit während Upgrades

Page 31: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Lösungsalternativen✅ Managed Services (Cloud Computing)✅ Blue/Green Deployments✅ Column Stores✅ NoSQL● RDBMS● Asynchrone Verarbeitung & Caching✅ Microservices & Self-Contained Systems (SCS)

Verfügbarkeit während Upgrades

Page 32: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

● Commands: Asynchrone Verarbeitung via Messaging

● Queries: Caching Cluster / Read-Replicas

Lösungen bei Nicht-Verfügbarkeit des (No)SQL Master

Verfügbarkeit während Upgrades

Load Balancer

Application Servers

Auto Scaling Group

cache cluster

SCS

(No)SQL master

message queue

RDS DB instance

read replica

Horizontal Scaling

● Commands mit Validierung & Berechnung:Caching + Asynchrone Verarbeitung via Messaging

Page 33: Skalierbare Webanwendungen · Microservices Key-Value Store: Redis Asynchrone Verarbeitung ROLAP Auto Scaling Group Horizontal Scaling Load Balancer Application Servers Auto Scaling

Anforderungen● Last

○ hoher Datendurchsatz bei OLTP

● Datenmenge○ schnelle Antworten bei OLAP

● Performance Isolation bei Mandantenfähigkeit○ Last eines Kunden beeinträchtigt

andere Kunden nicht

Skalierbarkeit und Verfügbarkeit der Persistenzschicht

● Verfügbarkeit während Upgrades/Updates○ Infrastruktur (Hardware,

Betriebssystem)○ Datenspeicher Version○ Datenbank Schemas