Performance Management und Hochverfügbarkeit im Lebenszyklus von Enterprise-Anwendungen an praktischen Beispielen mit Oracle Thomas Budich | Thomas Kober 9. Juni 2015 © 2015 Demandware Agenda 2 1 Vorstellung 2 Stakeholder / Anforderungen 3 Software-Lebenszyklus 4 Performance Tuning 5 Performance Tuning - Beispiele 6 Hochverfügbarkeit - Beispiele © 2015 Demandware Vorstellung 3 © 2015 Demandware Demandware • SaaS Softwareanbieter für weltweite E-Commerce-Shopsysteme • Kunden sind lediglich mit Weiterentwicklung und Anpassung ihres Shops beschäftigt. • New York Stock Exchange seit 2012 Entwicklung neuer Funktionalität Hochverfügbar und Performance Production Development Entwicklung neuer Features Staging Bearbeitung der Business Daten 4 © 2015 Demandware Sandbox Sandbox Sandbox Sandbox Sandbox Sandbox Three Tier Architecture Content Delivery Network AppServer 5 © 2015 Demandware WebServer WebServer WebServer AppServer AppServer AppServer AppServer Demandware • 2004 von Stephan Schambach gegründet • 10 Nieder- lassungen • Plattform derzeit in 49 Ländern über 17 Datenzentren vertreten 6 © 2015 Demandware Stakeholder / Anforderungen 7 © 2015 Demandware Stakeholder Business User • User Interface • Geschäftslogik • Plattform Entwickler 8 © 2015 Demandware • Entscheider • Projektmanager • Nutzer • • • • Netzwerk Storage Betriebssystem Server • Datenbank • Webserver Administrator Anforderung: Datenbank(un)abhängigkeit Abhängig Unabhängig Nutzung optimierter Features Große Kundenbasis Geringer Testaufwand Einfache Integration Einfache Architektur Speziell 9 © 2015 Demandware Generisch Anforderung: Hochverfügbarkeit Maximale Hochverfügbarkeit Einfache Hochverfügbarkeit Betriebskosten Geschäftskosten Reputation 10 © 2015 Demandware Geringe Komplexität Einfache Prozesse Software-Lebenszyklus 11 © 2015 Demandware Software-Lebenszyklus • • • • langfristige generische Lösung Produkt kurzfristige spezielle Lösung 12 © 2015 Demandware Projekt Betrieb • Bug Fixes • Extract, Transform, Load kompatibel rollback-fähig risikoarm Bug Fixes Migration DB-Umgebungen in der Software-Herstellung Produkt Development • Einfache Installation • Wenig Ressourcen • Einfache manuelle Wartung 13 © 2015 Demandware Projekt Build / Auto Test • Automatische Installation • Wenig Ressourcen • Automatische Wartung • Viele Features Betrieb Migration Integration LoadTest / Produktion • Performance • Produktionsnahe • Daten • Hosts • Konfiguration • Patch Level • Performance • HA • Backup / Recovery • Monitoring • Alerting • Security Software Produzenten Produkt Grundlegende Architektur APIs Allgemeine Business Logik Module Vertikale Lösungen Allgemeine Integrationen Partner Projekt Wiederkehrende Probleme im Projektgeschäft Spezielle Kundenwünsche Integration Migration 14 © 2015 Demandware Performance Tuning 15 © 2015 Demandware Feedback Loops Messen Umsetzen Analysieren Definieren 16 © 2015 Demandware Feedback Loops / Software Komponenten 17 © 2015 Demandware M Messen - Werkzeuge Xceptance LoadTest 18 © 2015 Demandware U A D M Messen - Werkzeuge Xceptance – Benchmark Trend Report 19 © 2015 Demandware U A D M Messen – Werkzeuge Grafana / Graphite 20 © 2015 Demandware U A D M Analysieren / Messen - Werkzeuge Oracle Enterprise Manager Database Control • Web Interface um Oracle DBs zu verwalten • Liefert Informationen zu Performance und Status von DBs • Administrative Tasks: - Schema Objekte (Tabellen, Sichten, Indexe, …) - Benutzer, Speicher und Plattenspeicher - Backup und Recovery - Import und Export von Daten • Logon: https://<hostname>:1158/em 21 © 2015 Demandware U A D M Analysieren / Messen - Werkzeuge Oracle Enterprise Manager Database Control • Top Aktive Sessions 22 © 2015 Demandware U A D M Analysieren - Werkzeuge 1. SQL Ausführungsplan • SQL*Plus, SQL Developer, Oracle Enterprise Manager (OEM) • Benutzung: - SET AUTOTRACE ... - explain plan for <SQL> • plan.sql 23 © 2015 Demandware U A D M Analysieren - Werkzeuge U 2. AWR, ASH oder ASH-Simulation (S-ASH) “Performance-Daten-Sammler” für: - Warteereignisse D Response Time (time/trx) • AWR - Automatic Workload Repository Queue Time (Waiting) Service Time (CPU) Arrival Rate (trx/time) - „Active Session History“ (ASH) Statistiken o CPU und Waits im Sekundentakt - Ressourcenverbrauch: OS, Sessions, Objekte und SQLs - Basis für andere Werkzeuge • ash1.png • S-ASH: github.com/pioro/orasash, www.pythian.com/blog/trying-out-s-ash/ 24 © 2015 Demandware A Response Time M Definieren U A D Antwortszeit • Reduzierung der Antwortzeit des “Add To Cart”-Zugriffs um mindestens 5% • Produktimport im Update-Mode von 100k Produkten innerhalb von 30min • Beschleunigung der Startupzeiten der Applikationsserver auf 40s im Produktionsmodus Ressourcen • Eliminierung der Dateizugriffe auf JSP-Dateien während der Ausführung von Shop-Zugriffen 25 © 2015 Demandware M Umsetzung - Lösungsfindung U A D • Ressourcen vs. Antwortzeit • Wartbarkeit vs. Performance Anforderungen • Generisch vs. Speziell Prozesse Architektur 26 • Businessprozesse • Betriebsprozesse • • • • Content Delivery Network Webschicht Applikationsschicht Datenschicht © 2015 Demandware M Umsetzung - Lösungsfindung U A D • Betriebssystem • Netzwerk Infrastruktur • Storage • • • Technologien • Relational Database Key Value Store Document Store In Memory • Netzwerk • Speicher Ressourcen • CPU 27 © 2015 Demandware Performance Tuning - Beispiele 28 © 2015 Demandware Schema Design: Tabellen und Datentypen • Problem: Erstellung des DB- Schemas mit >500 Tabellen durch >80 Entwickler • Lösung: Generische Frameworks - Objektrelationale Abbildung - Initialisierung - Lokalisierung - Migration - Import und Export - Datenreplikation • attr.sql, attr_lob.sql 29 © 2015 Demandware Schema Design: Indexe Index Tabelle • Probleme: 1. Vollständige Tabellen absuchen 2. Laden von Massendaten wenn Indexe vorhanden • Lösungen: 1. Indexe (B-tree Struktur) anlegen, Aber: erhöhte Kosten, erschwerte Migration 2. Indexe ausschalten, Daten laden, Indexe einschalten • fbi.sql 30 © 2015 Demandware Schema Design: Suche • Problem: Auswahl der Suche und der geeigneten Indexstrukturen • Lösungen: - like – Suche nach ähnlichen Mustern o ... [NOT] LIKE ... [ESCAPE ‚..’], Muster kann Spezialzeichen enthalten o Keine Indexbenutzung, wenn führendes Zeichen “%” oder “_” - regexp_like – Regular Expression Matching o REGEXP_LIKE (source, pattern [, match_parameter ]) - Oracle Text – integrierte Volltextrecherche der DB - Externe Suche – Apache Lucene, Apache Solr, ElasticSearch, ... • ctx.sql 31 © 2015 Demandware Schema Design: Integritätsbedingungen • Probleme: 1. Laden von Massendaten 2. Reihenfolge der DMLs bei Fremdschlüssel- und Eindeutigkeitsbedingung • Lösung: 1. Massendaten laden mit ausgeschalteten Integritätsbedingungen 2. Sofortige oder verzögerte Integritätsbedingungen o Prüfung sofort nach dem SQL oder beim Commit der Transaktion • def_con.sql, dis_con.sql 32 © 2015 Demandware Verschiedenes – JDBC und SQL • Problem: - JDBC Connection Pool und Firewall • Lösung: - sqlnet.expire_time - oder aktives „keep alive“ des Clients • Problem: - Exakte Query-Zeilenzahl für Pagination bei großen Datenmengen • Lösung: - Count mit analytischer Klausel - count over() as rowCount • count_over.sql 33 © 2015 Demandware Verschiedenes – JDBC und SQL • Problem: - Wiederkehrende Produktimporte: Massendaten in Tabellen „Einmischen“ - Wenn beim INSERT–Versuch ein Eindeutigkeitsfehler auftritt, wird ein UPDATE angewendet. • Lösung: - MERGE (SQL:2003 / 2008) o when not matched then insert ... o when matched then update ... o Nur noch ein einziges und effizienteres SQL-Kommando o Leichter zu warten • merge.sql 34 © 2015 Demandware Partitionierung • Probleme: Tabellen mit Massendaten • Verwaltung: erschwerte administrative Tätigkeiten • Leistung: schlechte DML- und Abfragegeschwindigkeit • Lösung: - Partitionierung – die Unterteilung von Tabellen und Indexen in „kleinere Stücke“ mit effizienter Speicherverwaltung und verbesserter Zugriffsleistung, Arten: o RANGE, HASH, LIST, INTERVAL, REFERENCE und Kombinationen o z.B. RANGE bei Datum • part.sql 35 © 2015 Demandware Parallelität und Batchverarbeitung • Problem: - Grenzen in sequentieller Verarbeitung erreicht • Lösungen: - Paralleles RDBMS-SQL: aufteilen in parallele Operationen o Parallel Query/SQL, Parallel Query/DML und Parallel Query/DDL - „Do It Yourself“ (DIY) Parallelität o Oracle unterstützt Multiuser-Situationen, Client kann also parallele Verarbeitung (Threads) mit der DB starten - JDBC-Batch Datenmanipulation • para.sql, orphan_del_parallel.png 36 © 2015 Demandware Hochverfügbarkeit - Beispiele 37 © 2015 Demandware Hochverfügbarkeit und Skalierbarkeit • Problem: - Hochverfügbarkeit und - „Disaster Recovery“ und - Skalierbarkeit • Eine Lösung: - Oracle „Real Application Clusters“ (RAC) o Verfügbarkeit o Skalierbarkeit o Lastverteilung o Hohe Performance 38 © 2015 Demandware Hochverfügbarkeit – RAC <100km • Standalone RAC - Simple Cluster - Extended Cluster (größere Distanz <100km) o Kein Schutz gegen erweiterte Katastrophen • RAC im Multi Datacenter - Data Guard (standby sites) - Streams / Golden Gate o Datenreplikation, Bi-direktionale Replikation, Datentransformation, Teilmengen, heterogene Plattformen 39 © 2015 Demandware Site A Site B HA – Von „Einfach“ bis zum Maximum Klon Produktion Site A Site B Backup Global Data Services (GDS) Restore Move Data Guard Recovery Manager (RMAN) • Active Data Guard • 12c: Far Sync, ‚naher‘ Standby Standby Primär Sync oder Database • Single Instanz DB • Multiple aktiv-aktiv DBs (RAC) 40 © 2015 Demandware Async Primär Far-Sync Sync Standby Async Streams GoldenGate Fast Connection Failover • Problem: Transparenter Verbindungs-Failover • Lösung: Fast Connection Failover (FCF) o Demo.java o Universal Connection Pool (UCP) + FCF + Oracle Notification Service (ONS) setFastConnectionFailoverEnabled(true) + setONSConfiguration(…) - Simulation Knotenausfall: srvctl stop instance -d RAC -i rac1 | rac2 o Instance name connected: rac1 …! o SQLRecoverableException: ORA-01089: immediate shutdown in progress … Connection retry necessary … failover … Instance name connected: rac2! - Erweiterung: nur gültige JDBC Connections o FCFCheckConOnBorrowDemo.java o setValidateConnectionOnBorrow(true)! 41 © 2015 Demandware Karriere – Demandware/Jena Markus Wille Senior Recruiter Talent Acquisition EMEA +49 [email protected] Vielen Dank Thomas Budich [email protected] Thomas Kober [email protected] 42 © 2015 Demandware (0)3641 310 2711 Fragen und Antworten? 43 © 2015 Demandware