130605 buildfrei skalieren_fuer_bigdata

29
1 Buildfrei skalieren für Big Data mit Z2 Henning Blohm ZFabrik Software KG 5.6.2013

description

Die wachsende Komplexität von Geschäfts- und Internetanwendungen und gestiegenen Erwartungen an die Agilität der Entwicklung verlangen einen neuen, effizienteren Ansatz zur Systementwicklung im Team. Automatisierung in hochskalierenden Umgebungen werden vom üblichen Push-Deployment-Ansatz ausgebremst. Das z2-Environment addressiert beide Problembereiche.

Transcript of 130605 buildfrei skalieren_fuer_bigdata

Page 1: 130605 buildfrei skalieren_fuer_bigdata

1

Buildfrei skalieren für Big Data mit Z2

Henning Blohm

ZFabrik Software KG5.6.2013

Page 2: 130605 buildfrei skalieren_fuer_bigdata

2

Teil 1:

Buildfrei entwickeln und skalieren

Teil 2:

Big Data, Cloud, und wie es zusammenpasst

Page 3: 130605 buildfrei skalieren_fuer_bigdata

3

BUILDFREI ENTWICKELN UND SKALIEREN

1. Teil

Page 4: 130605 buildfrei skalieren_fuer_bigdata

4

Masterfrage:Warum braucht man mehr als das?

Source code andconfiguration

Execution Environment

Page 5: 130605 buildfrei skalieren_fuer_bigdata

5

Bzw. wäre es nicht schön… wenn große Projekte so einfach zu ändern wären wie kleine? wenn Hotfixes ohne Build & Deployment gingen? keinen lokalen Build haben zu müssen? wenn Integration auf Knopfdruck ginge? keinen Appserver installieren zu müssen? nicht mehr deployen zu müssen? wenn Java mit den Roundtripzeiten von Skripten ginge?

Page 6: 130605 buildfrei skalieren_fuer_bigdata

6

So funktioniert Z2

Z2-Environment: ■ Pull von verschiedenen Quellen■ Tut was nötig ist (inkl. Kompilation)

Page 7: 130605 buildfrei skalieren_fuer_bigdata

7

Entwickeln mit Z2

Page 8: 130605 buildfrei skalieren_fuer_bigdata

8

Ausskalieren mit Z2

Siehe auch http://www.z2-environment.net/blog/2013/01/z2-deployment-potpourri/

Page 9: 130605 buildfrei skalieren_fuer_bigdata

9

Vorteile

■ Kein build engineeringKeine lokale build config, schnelles setupKeine Build-Infrastruktur!

■ Kleine Checkouts, kein DeploymentWeniger re-compiling, schnelle roundtrips

■ System-zentrischImmer aktuell, immer integriert

■ Pull-AnsatzEinfacher Scale-out

Cost effective

Productive

Scalable

Page 10: 130605 buildfrei skalieren_fuer_bigdata

10

Einsparungen*

Pro Entwickler:

* geschätzt

Kleines Entwicklungsteam<=10

Grosses Entwicklungsteam > 10

Lokale Buildkonfiguration 2% 1%

Integration mit Änderungen (sync,. build, re-deployment) 5% 10%

Kommunikation mit Build-Engineer, Anpassen von zentralem Build

2% 4%

Summe 9% 15%

Page 11: 130605 buildfrei skalieren_fuer_bigdata

11

Weitere Zutaten

■ Add-On Repositories erweitern FähigkeitenSpring, Hadoop, Vaadin, …

■ Klares, einfaches ModularisierungskonzeptTrennung von API und Implementierung

■ Erprobte ArchitekturFür z. B. modularisierte Spring/Hibernate Anwendungen

Page 12: 130605 buildfrei skalieren_fuer_bigdata

12

ERSTE DEMOUpdate einer Web Anwendung

Page 13: 130605 buildfrei skalieren_fuer_bigdata

13

Welches Problem wird denn hier eigentlich gelöst?

Page 14: 130605 buildfrei skalieren_fuer_bigdata

14

Wenn es größer und modular wird:

Projekt- und Repositorystruktur

≠Ausführungs- & Deploymentmodell

=>

Page 15: 130605 buildfrei skalieren_fuer_bigdata

15

Mit anderen Worten:Die beiden verstehen sich nicht.

Deshalb die ganze Maschinerie!

Page 16: 130605 buildfrei skalieren_fuer_bigdata

16

BIG DATA MACHT SINN, WENN…2.1. Teil

Page 17: 130605 buildfrei skalieren_fuer_bigdata

17

Entscheidungswege NoSQL*

Kein RDBMS, weil…

Nicht-relationale Daten

“Zuviele” Daten

Dokumenten-artig

Graphen Tabellenartig (Big Table)

Dokumente / Blobs

* brutal simplifiziert

Page 18: 130605 buildfrei skalieren_fuer_bigdata

18

Zuviele Daten?

Problem ist hierbei in der Regel nicht primär die Ablage, sondern die effiziente Analyse.Hier gilt:

■ Parallelisierung ausnutzen, um O(1) zu bleiben■ Lokales streamen > verteilter Query

=> Der Klassiker: Map/Reduce

Page 19: 130605 buildfrei skalieren_fuer_bigdata

19

Problemstellung:

Wie kommt der Code zum Knoten?

Was kann der Code dort machen?

Page 20: 130605 buildfrei skalieren_fuer_bigdata

20

Alternativen:

■ Nativ: Map/Reduce API, jar bauen, deploy

Sehr bare-metal. Kein Container-support

■ Vielleich andere Sprache benutzen - Z. B. Pig oder JavaScript M/R?

Gut weil einfacher – aber eingeschränkt!

Page 21: 130605 buildfrei skalieren_fuer_bigdata

21

Mit z2@hadoop

Hadoop wird natürlicher Teil der Lösung:■ Ausführung von Z2 in embedded mode als Hadoop task

■ M/R Job „lebt“ im gleichen Modulraum wie der Rest der Lösung

■ Einfachstes Job scheduling: Ohne build und programmatisch

Page 22: 130605 buildfrei skalieren_fuer_bigdata

22

ZWEITE DEMOUpdate und Ausführung eines Map/Reduce Jobs

Page 23: 130605 buildfrei skalieren_fuer_bigdata

23

UND JETZT ALLE ZUSAMMEN2.2. Teil

Page 24: 130605 buildfrei skalieren_fuer_bigdata

24

Cloud-Provisionierungs-Rezept

■ Knotentypen definierenFrontend, Datenknoten, Masterknoten, RDBMS,…Diese müssen vollautomatisch am Leben gehalten werden

■ Welche sind Skalierungsrelevant?Frontend, DatenknotenDiese müssen vollautomatisch installierbar sein

■ Konfiguration mit Policies:■ Alle Konfiguration zentral im SCM■ Alle paar Minuten überprüfung der Knotenpolicy

Page 25: 130605 buildfrei skalieren_fuer_bigdata

25

Provisionierung mit CfEngine+Z2

Bemerke: Der Pull Ansatz zieht immer alles gerade!

Page 26: 130605 buildfrei skalieren_fuer_bigdata

26

DRITTE DEMOPush der Änderungen ins Produktivsystem

Page 27: 130605 buildfrei skalieren_fuer_bigdata

27

Z2 ist Open Source Software!

Interessiert? Ideen?

Wir zeigen gerne mehr Details vor Ort

Bitte einfach bei [email protected] melden

Page 28: 130605 buildfrei skalieren_fuer_bigdata

28

Hier geht’s weiter:

Wiki:

redmine.z2-environment.netBlog:

www.z2-environment.net/blogSite:

www.z2-environment.eu

Page 29: 130605 buildfrei skalieren_fuer_bigdata

Die wachsende Komplexität von Geschäfts- und Internetanwendungen und gestiegenen Erwartungen an die Agilität der Entwicklung haben in den letzten Jahren zu einer beeindruckenden Entwicklung im Bereich der Build- und Integrationswerkzeuge geführt.

Mit Ansätzen wie Continuous Delivery über eine Tool Chain aus Continuous Integration Servern, Artefact Repositories und Build-Werkzeugen wie Maven gelingt es, vollständige Build- und Testautomatisierung für Java-basierte Software-Lösungen zu erreichen.

Mit den Anforderungen an massive und flexible Skalierung in Cloud und Big Data Szenarien hat sich ein weiteres Problemfeld aufgetan: Automatische Verteilung und Konfiguration von Software im Großen. Hier finden Configuration Management Werkzeuge wie Apache Puppet und CFEngine ihre Anwendung.

Die Automatisierung hat allerdings ihren Preis: Je mehr Komplexität in die Werkzeuge wandert, desto Fehleranfälliger wird der Prozess, desto schwieriger wird es, strukturelle Änderungen der Software vorzunehmen.

Dies trifft insbesondere auf den traditionellen „Push“-Deploymentansatz in der Java Entwicklung zu. Ändert sich die Menge der Deployables, so ergeben sich häufig auch nicht-triviale Änderungen entlang der gesamten Prozesskette – vom Entwickler bis zur Konfiguration der Produktivsysteme. Kann die Laufzeitumgebung sich aber selber an Änderungen von Quellen und Konfiguration seiner Systemdefinition anpassen, so entfällt nicht nur ein Großteil der Produktionsinfrastruktur, es werden auch Entwicklungszyklen beschleunigt und frühe Integration gefördert.

Die Open-Source Umgebung z2-Environment implementiert einen solchen “Systemzentrischen” Ansatz, der keine Build-Infrastruktur benötigt, Entwicklersetup minimiert und gleichzeitig Deployment-Updates dramatisch vereinfacht und beschleunigt.

Ein solcher Pull-Deployment Ansatz bewährt sich auch bei der Entwicklung und Ausführung von verteilten Map-Reduce Algorithmen, da kein gesondertes Deployment mehr vonnöten ist und JobImplementierungen mit anderen Anwendungskomponenten gleichgestellt sind. Da keine Applikationskomponenten zu verteilen sind wird auch die automatische Konfiguration mit Hilfe von Configuration Management Werkzeugen einfacher und robuster.

Der Vortrag enthält eine Live-Demonstration auf Basis von CFEngine, Z2 und Apache Hadoop.

Abstract