Folien

Werbung
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
Herunterladen