View
14
Download
0
Category
Preview:
Citation preview
Skalierbare Webanwendungen
Thomas BachmannLead Software Architect & CIO
Mambu GmbH
Twitter: @thobach
Anwendungsbeispiel
● Hohe Nichtfunktionale Anforderungen○ Sicherheit
■ Vertraulichkeit■ Integrität■ Verfügbarkeit (auch während Upgrades)
○ Skalierbarkeit■ große Datenmengen
○ Performance■ Transaktionen / Sekunde■ Reporting■ Isolation
Traditioneller Monolith
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
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
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
● 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
● 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
● 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
● 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
● 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
Skalierbarkeit und Verfügbarkeit der Anwendungslogik
Application Servers
Auto Scaling Group
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
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
● 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
● 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
● 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
Zusammenfassung
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
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
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
Fragen und Feedback
Danke
Backup Folien
Betrieb
● Monitoring● Logging● Alerting● Fehlertoleranz● Redundanz
Betrieb
● 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
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
Anforderungen● Verfügbarkeit während Upgrades/Updates
○ Infrastruktur (Hardware, Betriebssystem)○ Anwendung○ Datenbank Schemas○ Abhängigkeiten (Datenbank, Cache)
Verfügbarkeit während Upgrades
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
● 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
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
Recommended