SOA basierte NOSQL Lösung im Mobile-Umfeld

530 Aufrufe

Veröffentlicht am

Dieser Artikel zeigt, wie Bewährtes zielgerichtet mit Modernem kombiniert werden kann, ohne einer buzzword-getriebenen Entwicklung oder einer unnötig komplexen Lösung durch den Einsatz zu vieler Frameworks zu erliegen.

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
530
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

SOA basierte NOSQL Lösung im Mobile-Umfeld

  1. 1.  SchwerpunktthemaMobil mit OSGi und DBF (DBF-Dateien, [dBase]) mit fester Satzstruktur sowie zugehö- rige Indizes anzulegen, zu durchsuchen und zu modifizieren.SOA-basierte Mehr zur Entstehung und zu den Hintergründen von xBaseJ findet sich unter [xBaseJBuch].NoSQL-Lösung im Architektur und Hotspots der UmsetzungMobile-Umfeld Das vorliegende Gesamtsystem skizziert ein Produkt, das aus einer Mischung aus grundsätzlichen architektonischen Erwä-Michael Hüttermann, Daniel Schneller gungen („horizontal slicing“) und anwendungsfallgetriebe- ner Vorgehensweise („vertical slicing“) evolutionär konstru-Dieser Artikel zeigt, wie Bewährtes zielgerichtet mit Modernem kombi- iert werden kann. Das Gesamtsystem lässt sich in verschiedeneniert werden kann, ohne einer buzzword-getriebenen Entwicklung oder Teilsysteme zerlegen, von denen das mobile Endgerät eines isteiner unnötig komplexen Lösung durch den Einsatz zu vieler Frame- und hier näher betrachtet werden soll (s. Abb. 1).works zu erliegen. Das Teilsystem „Mobile“ besteht im Wesentlichen aus einem umfangreichen Softwaresegment und den DBF-Dateien, in de- nen Stamm- und Bewegungsdaten vorgehalten werden. Das Eine mobile Applikation zur Datenerfassung baut auf der Softwaresegment setzt sich zusammen aus verschiedenen Soft-E Plattform Windows CE6 und IBM J9 Java VM auf. An die wareeinheiten, die ihrerseits aus wiederverwendbaren Kom-Lösung existieren insbesondere die folgenden Anforderungen: ponenten bestehen.H Netzwerkunabhängigkeit: Alle Daten müssen auf dem Gerät Die Softwareeinheit „DBF Unit“ kapselt die externe Biblio- vorgehalten werden, um auch ohne Netzwerkverbindung thek „xbasej“ als OSGi-Bundle. Ein technischer Wrapper nutzt einsatzfähig zu bleiben. dessen API und kapselt essenzielle Zugriffsoperationen aufH Robustheit: Bei unerwartetem Neustart muss jederzeit ein DBF-Dateien, wie das Öffnen und Schließen sowie das Vor- konsistenter und möglichst aktueller Datenbestand gewähr- und Zurücknavigieren innerhalb von Dateien. Die von diesem leistet sein. technischen Wrapper bereitgestellte Schnittstelle wird von ei-H Performance: Die Lösung muss so schnell sein, dass eine im ner O/DBF-Mapping-Schicht genutzt, die konkrete DBF-Datei- Akkord stattfindende Erfassung von Daten nicht behindert en sowie deren „Spalten“, Indizes und Wertebereiche definiert. wird. Für jede DBF-Datei existiert ein Pendant in der O/DBF-Schicht,H Ressourcen: Die Lösung muss auch gemäß der eingeschränk- das die Zugriffe isoliert und kapselt. Das Mapping wird von ten Ressourcen im mobilen Umfeld (Rechenleistung, Ar- statuslosen Zwischenservices angesprochen. beitsspeicher) tragfähig sein. Zu Ihren Diensten: ServicesVon SQL zu NoSQL Die Zwischenservices fungieren als Gateway und Adapter zwi-Es existieren SQL-Datenbanken, wie Apache Derby Embed- schen den heterogenen Technologien und Persistenz-Varian-ded oder Microsoft SQL Server Compact, die unter JavaME ein- ten, und liefern Fassaden, um die darunter liegende technischesetzbar sind. Die Wenigsten verfügen dabei aber über einen zu Komplexität zu verstecken und feingranulare Aufrufe zu sinn-JavaME kompatiblem JDBC-Treiber [JSR169]. Trotz theoreti- vollen Operationen zu aggregieren. Da DBF-Dateien intern mitscher ACID*-Kompatibilität lassen sich bei diesen Datenbanken Zeigern auf Datensätze arbeiten, die dort verharren, wo sie zu-auf einem mobilen Endgerät zudem operative Probleme mit letzt positioniert wurden, ist für die auf die Persistenz zugrei-Daten nicht vollständig ausschließen, was insbeson-dere bei einer großen Zahl geografisch weit verstreu-ter Geräte eine gegebenenfalls technisch anspruchsvol-le Fehlerbehebung unpraktikabel macht. Eine leichtgewichtige Alternative zu einer SQL-Datenbank sind strukturierte Datendateien. ZumEinsatz kann dabei die unter der LGPL verfügbarexBaseJ-Bibliothek [xBaseJ] kommen. Diese bietet dienötige Funktionalität, um Dateien im dBase-Format Alle Implementierungen der in Abbildung 1 dargestellten Schnittstellen sind über OSGi De- clarative Services realisiert, werden zur Lauf- zeit u. a. abhängig vom konkreten Hardwaretyp aufgelöst, und könnten – zumindest theoretisch – ebenso zur Laufzeit ausgewechselt werden.* ACID (Atomicity, Consistency, Isolation, Durability): Atomarität, Konsis- Abb. 1: Dekomposition des Systems: Das Teilsystem „Mobile“ wird zerlegt in Softwareein-tenzerhaltung, Isolation und Dauerhaftigkeit. Steht im Gegensatz zu BA- heiten und KomponentenSE (Basically Available, Soft-State, Eventual Consistency), siehe [Brew00].www.javaspektrum.de 13
  2. 2. Schwerpunktthema fenden Services Zustandslosigkeit obligatorisch – ne-ben der architektonischen Erwägung, dass derartige lfdNr operation objekt datenfelder…Services grundsätzlich zustandslos sein sollten. Auf 0 INS KOPF id=0; bearbeiter=Mustermann; datum=2099-xx-xx; …Ebene der Implementierung ist Zugriffsschutz durchMonitore Pflicht („two-phase locking“), um Datenzu- 1 INS POS id=1; artikelnr=471123; anzahl=2griffe zu isolieren und nicht-funktionale Anforderun- 2 INS POS id=2; artikelnr=635233; anzahl=1; rabatt=2gen an die Datenhaltung (wie Dauerhaftigkeit, Iso-liertheit und Konsistenzerhaltung) zu bedienen. 3 UPD POS id=1; artikelnr=471123; anzahl=3 Den fachlichen Kern bilden die „Business services“. 4 INS POS id=3; artikelnr=998653; anzahl=1Diese bedienen sich der Zwischenservices (und nurdieser), kombinieren deren Funktionen zu fachlich- 5 DEL POS id=2konsistenten Operationen und bilden so Geschäftslo- 6 CLOSE KOPFgik ab. Fachliche Services sind von Details der Imple-mentierung der Datenhaltung entkoppelt. Die Kom- Tabelle 1: Exemplarische Datendatei als DBF, mit Operationen, Zielobjekt und Datenfeldern, imponenten UI (mit Controls, Navigationslogik, Ge- „ASCII-Fix“-Formatschäftslogik) und Webservices greifen ausschließlichüber die Services auf die Datenhaltung zu. Ein REST-basierter Eine typische Datendatei wird im Dateisystem (vereinfacht)Webservice übermittelt nebenläufig Bewegungsdaten an einen als DBF abgelegt, siehe Tabelle 1. Die Spalte „operation“ enthältServer und lädt aktuelle Stammdaten nach. jeweils eine der möglichen CRUD-Operationen (Create, Read, Services erwarten und liefern Geschäftsobjekte. Das UI be- Update, Delete), ergänzt um einige wenige Meta-Operationen.handelt folglich ausschließlich Geschäftsobjekte und stellt Zur Entwicklungszeit werden ACID-kritische Codefragmen-diese dar. Die über das UI durchgeführten Änderungen (auch te mit einer besonders hohen Testabdeckung versehen undNeuanlagen und Löschungen) werden von Services persistiert, sensitive Metriken fortlaufend abgeprüft („Continuous Inspec-die in umgekehrter Richtung auch eingehende Änderungen tion“). So können potenzielle Fehlersituationen, wie „verlorenean der Datenhaltung an das UI propagieren. Eine klare Un- Updates“ oder das „Phantomproblem“, frühzeitig aufgespürtterscheidung zwischen konsumierenden und produzierenden werden.Services hilft beim Entwurf einer serviceorientierten Architek-tur (SOA). Auch wenn bereits Änderungen an der „Business Unit“ er- Logische und physikalische Datenstrukturhöhte Ansprüche an die Disziplin der Anwendungsentwicklerstellen, können durch die klare Trennung der Zuständigkeiten Anders als bei der „Java Persistence API“ (JPA) sind in dieser(Separation of Concerns) recht einfach, flexibel und wartbar Lösung die Strukturen der Daten auf dem Datenhaltungsme-neue Anwendungsfälle umgesetzt und bestehende Kompo- dium und innerhalb der Anwendung sehr verschieden. Auf-nenten wiederverwendet und adaptiert werden. grund dessen wird die Datei beim ersten Zugriff auf die enthal- Eine von der Fachanwendung unabhängige Plattform kap- tene Stückliste komplett sequenziell gelesen und ein entspre-selt Basisfunktionalität, wie beispielsweise die Datenhaltungs- chender Objekt-Graph im Speicher aufgebaut. Veränderungenschicht (die „DBF Unit“) und technische Services (wie die Im- an dieser In-Memory-Darstellung, beispielsweise das Hinzufü-plementierung eines Rollensystems). Diese robuste Plattform gen neuer Positionen, werden als entsprechende Sätze an dieliefert frühe Rückkopplungen über Anomalien sowohl zur bestehende Datei angehängt. Im Falle von Abstürzen ist somitBuild- als auch zur Laufzeit („fail fast“-Ansatz). Ebenfalls ent- höchstens die letzte Änderung verloren, eine Beschädigung an-haltene technische Wartungsdienste, wie Recovery-Mechanis- derer Daten ist durch den ausnahmslosen Verzicht auf Modifi-men für defekte Dateien und Wiedererstellung von Indizes, kationen bereits geschriebener Daten ausgeschlossen.sind auf dem mobilen Endgerät unerlässlich und können rol- Neben der Robustheit bringt diese Entkopplung auch ei-lenbasiert als Teil der ausgelieferten Anwendung zur Verfü- ne hohe Geschwindigkeit mit sich, da sich alle relevantengung gestellt werden. Daten im Speicher befinden und Änderungen sich damit in nahezu konstanter und sehr kurzer Zeit durchführen lassen. Trade-offs, die das Verfahren mit sich bringt, sind die Limi-Transaktionsprotokoll tierung der gleichzeitig im RAM zu haltenden Datenmenge, die durch das Wegfallen des Overheads komplexerer Frame-Wichtige Herausforderung beim Einsatz einer per se nicht voll- works und die vergleichsweise kleinen Objekte aber im vor-ständig den ACID-Prinzipien folgenden Lösung ist die Sicher- liegenden Fall praktisch kein Problem darstellt, sowie diestellung konsistenter Datenzustände, insbesondere angesichts initiale Verzögerung beim Einlesen einer bereits begonnenender zentralen Bedeutung von Schreibzugriffen in einer relativ Transaktionsdatei.unzuverlässigen Systemumgebung; ein alternativer Lösungs-ansatz wie BASE ist im vorliegenden Fall nicht ausreichend. Um diese Konsistenz zu gewährleisten, wird für die Bewe- Fortlaufend automatisch lieferngungsdaten eine an Transaktionslogs klassischer SQL-Daten-banken angelehnte Lösung eingesetzt. Anstatt beispielsweise Eine komponentenbasierte Architektur ist eine Vorausset-eine Stückliste in zwei miteinander über Schlüssel verbunde- zung zum Aufbau einer feingranularen Build-/Deployment-nen Tabellen – jeweils für Kopf- und Postendaten – zu spei- Infrastruktur**. Softwareeinheiten und einzelne Komponen-chern, wird pro Liste nur eine einzige Datei erzeugt, die den ten sollten einzeln kompilierbar und paketierbar sein, undVerlauf aller Änderungen in Form chronologisch aufeinander zentrale Fragestellungen, beispielsweise zum Abhängigkeits-aufbauender Einzelschritte dokumentiert. Auf diese Weiselässt sich das Problem unvollständiger Updates über mehrere ** Im Umkehrschluss: Eine monolithische Anwendung wird in aller Regel auchTabellen hinweg vermeiden. monolithisch gebaut und entsprechend hölzern bereitgestellt. 14 JavaSPEKTRUM 3/2012
  3. 3.  Schwerpunktthema Fazit Die gegebenen Rahmenbedingungen, insbesondere die im Ver- gleich zur Server- und Desktop-Java-Entwicklung sehr ein- geschränkte Hardware, aber auch die mit JavaME limitierte Laufzeitplattform, die viele häufig eingesetzte Standardframe- works von vornherein ausschließt, machen einige Kreativität erforderlich, um funktionale, aber auch nicht-funktionalen An- forderungen zu erfüllen. Mit einem Stack aus Altbewährtem und Modernem, kombiniert mit einem schlanken Entwick- lungsprozess in einem kreativen und agilen Team, kann aber letztlich eine Anwendung bereitgestellt werden, die durch ihre klare Struktur und ihren modularen Aufbau auch für zukünf- tige Erweiterungen tragfähig ist. Gemäß Martin Fowlers Defi- nition [NoSQL] nutzen NoSQL-Lösungen weder ein relationa-Abb. 2: End2End-Ansatz mit einer multi-channel, joined platform/app delivery les Modell noch SQL oder Schemas, sodass die in diesem Ar-pipeline tikel skizzierte Lösung sogar mit „NoSQL-enabled“ etikettiert werden kann.management, zu Versionierungs- und Branchingstrategiensowie zu effizienten Werkzeugintegrationen, sind zu adres- Linkssieren (vgl. [AgileALM]). Im vorliegenden Fall liefert eine De-livery-Pipeline kontinuierlich potenzielle Release-Candidates [AgileALM] M. Hüttermann, Agile ALM, Manning, 2011(s. Abb. 2). [Brew00] E. A. Brewer, Towards Robust Distributed Systems, Der kontinuierliche Build durchläuft bei jeder Änderung im PODC Keynote, 19.7.2000,Versionskontrollsystem die „Commit stage“. Diese Stage bein- http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdfhaltet das Kompilieren und Testen auf Modul-Ebene und stellt [dBase] http://de.wikipedia.org/wiki/DBASEbei Erfolg Binärdateien zur Verfügung. Diese sind Ausgangs- [JSR169] Java Specification Request 169:punkt für die weiteren Schritte. Ein Quality Gate für statische JDBC Optional Package for CDC/Foundation Profile,Codeanalyse und Testabdeckung ist ebenfalls eingeflochten. http://www.jcp.org/aboutJava/communityprocess/final/jsr169Der Release-Candidate durchläuft automatische Akzeptanz- [NoSQL] http://martinfowler.com/bliki/NosqlDefinition.htmltests und wird zudem manuell getestet. [xBaseJ] http://sourceforge.net/projects/xbasej Da die Anwendung auf mehrere Kanäle verteilt werden muss [xBaseJBuch] R. Hughes, The Minimum You Need to Know(verschiedene Hardware-Hersteller), wird vom Integrations- About Java and xBaseJ, Free-eBook, 2007,system die Anwendung automatisch für alle möglichen Ziel- http://www.theminimumyouneedtoknow.com/xbase_toc.htmlumgebungen paketiert und konfiguriert, um schließlich auf diefinale Zielumgebung verteilt zu werden. Verlaufen manuelleTests auf den jeweiligen Endgeräten erfolgreich, kann aus demRelease-Candidate potenziell ein Release werden. Die Promoti-on zu einem Release hängt von vielen Faktoren ab, sodass nichtjeder Kandidat an dieser Stelle zwingend zum Release wird. Michael Hüttermann, Oracle Java Champion, Das System behandelt Fachanwendung und Plattform unter- ist freiberuflicher Entwickler/Architekt und Deliveryschiedlich. Im Vergleich zur Fachanwendung werden neue Re- Engineer. Er ist Autor der Bücher „Agile Java-Entwick-leases der Plattform in deutlich längerer Taktung bereitgestellt, lung in der Praxis“, „Fragile Agile“ und „Agile ALM“.da Änderungen an zentralen Komponenten eher die Ausnah- E-Mail: michael@huettermann.netme sind als die Regel. Daniel Schneller ist Senior Software Consultant und Leiter des Competence Center Mobile Develop- ment bei der codecentric AG. Er ist außerdem Autor Wesentliche Eckpfeiler der Werkzeugkette sind Maven/ des „MySQL Admin Cookbook“. Tycho (wobei OSGi-Manifests die führenden Medien E-Mail: ds@danielschneller.de sind), Subversion, Jenkins (mit dem Build-Pipeline- Plug-in) und Nexus (mit der Möglichkeit, P2-Reposito- ries zu halten).www.javaspektrum.de 15

×