SOA basierte NOSQL Lösung im Mobile-Umfeld

  • Published on
    25-Jan-2015

  • View
    257

  • Download
    3

Embed Size (px)

DESCRIPTION

Dieser Artikel zeigt, wie Bewhrtes zielgerichtet mit Modernem kombiniert werden kann, ohne einer buzzword-getriebenen Entwicklung oder einer unntig komplexen Lsung durch den Einsatz zu vieler Frameworks zu erliegen.

Transcript

  • 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 Hintergrnden von xBaseJ findet sich unter [xBaseJBuch].NoSQL-Lsung imArchitektur und Hotspots der UmsetzungMobile-UmfeldDas vorliegende Gesamtsystem skizziert ein Produkt, das aus einer Mischung aus grundstzlichen architektonischen Erw-Michael Httermann, Daniel Schneller gungen (horizontal slicing) und anwendungsfallgetriebe- ner Vorgehensweise (vertical slicing) evolutionr konstru-Dieser Artikel zeigt, wie Bewhrtes zielgerichtet mit Modernem kombi-iert werden kann. Das Gesamtsystem lsst sich in verschiedeneniert werden kann, ohne einer buzzword-getriebenen Entwicklung oderTeilsysteme zerlegen, von denen das mobile Endgert eines isteiner unntig komplexen Lsung durch den Einsatz zu vieler Frame-und hier nher 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-EPlattform Windows CE6 und IBM J9 Java VM auf. An diewareeinheiten, die ihrerseits aus wiederverwendbaren Kom-Lsung existieren insbesondere die folgenden Anforderungen:ponenten bestehen.HNetzwerkunabhngigkeit: Alle Daten mssen auf dem GertDie Softwareeinheit DBF Unit kapselt die externe Biblio-vorgehalten werden, um auch ohne Netzwerkverbindungthek xbasej als OSGi-Bundle. Ein technischer Wrapper nutzteinsatzfhig zu bleiben. dessen API und kapselt essenzielle Zugriffsoperationen aufHRobustheit: Bei unerwartetem Neustart muss jederzeit ein DBF-Dateien, wie das ffnen und Schlieen sowie das Vor-konsistenter und mglichst aktueller Datenbestand gewhr-und Zurcknavigieren innerhalb von Dateien. Die von diesemleistet sein.technischen Wrapper bereitgestellte Schnittstelle wird von ei-HPerformance: Die Lsung 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.Fr jede DBF-Datei existiert ein Pendant in der O/DBF-Schicht,HRessourcen: Die Lsung muss auch gem der eingeschrnk- das die Zugriffe isoliert und kapselt. Das Mapping wird vonten Ressourcen im mobilen Umfeld (Rechenleistung, Ar-statuslosen Zwischenservices angesprochen.beitsspeicher) tragfhig 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 verfgen dabei aber ber einen zuKomplexitt zu verstecken und feingranulare Aufrufe zu sinn-JavaME kompatiblem JDBC-Treiber [JSR169]. Trotz theoreti-vollen Operationen zu aggregieren. Da DBF-Dateien intern mitscher ACID*-Kompatibilitt lassen sich bei diesen DatenbankenZeigern auf Datenstze arbeiten, die dort verharren, wo sie zu-auf einem mobilen Endgert zudem operative Probleme mitletzt positioniert wurden, ist fr die auf die Persistenz zugrei-Daten nicht vollstndig ausschlieen, was insbeson-dere bei einer groen Zahl geografisch weit verstreu-ter Gerte 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 verfgbarexBaseJ-Bibliothek [xBaseJ] kommen. Diese bietet dientige Funktionalitt, um Dateien im dBase-FormatAlle Implementierungen der in Abbildung 1dargestellten Schnittstellen sind ber OSGi De-clarative Services realisiert, werden zur Lauf-zeit u. a. abhngig vom konkreten Hardwaretypaufgelst, und knnten zumindest theoretisch ebenso zur Laufzeit ausgewechselt werden.* ACID (Atomicity, Consistency, Isolation, Durability): Atomaritt, 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.de13

2. Schwerpunktthema fenden Services Zustandslosigkeit obligatorisch ne-ben der architektonischen Erwgung, dass derartigelfdNr operation objekt datenfelderServices grundstzlich zustandslos sein sollten. Auf0 INSKOPF id=0; bearbeiter=Mustermann; datum=2099-xx-xx; Ebene der Implementierung ist Zugriffsschutz durchMonitore Pflicht (two-phase locking), um Datenzu- 1 INSPOS id=1; artikelnr=471123; anzahl=2griffe zu isolieren und nicht-funktionale Anforderun- 2 INSPOS id=2; artikelnr=635233; anzahl=1; rabatt=2gen an die Datenhaltung (wie Dauerhaftigkeit, Iso-liertheit und Konsistenzerhaltung) zu bedienen. 3 UPDPOS id=1; artikelnr=471123; anzahl=3 Den fachlichen Kern bilden die Business services.4 INSPOS id=3; artikelnr=998653; anzahl=1Diese bedienen sich der Zwischenservices (und nurdieser), kombinieren deren Funktionen zu fachlich-5 DELPOS id=2konsistenten Operationen und bilden so Geschftslo- 6 CLOSEKOPFgik 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-Formatschftslogik) und Webservices greifen ausschlielichber die Services auf die Datenhaltung zu. Ein REST-basierter Eine typische Datendatei wird im Dateisystem (vereinfacht)Webservice bermittelt nebenlufig Bewegungsdaten an einen als DBF abgelegt, siehe Tabelle 1. Die Spalte operation enthltServer und ldt aktuelle Stammdaten nach.jeweils eine der mglichen CRUD-Operationen (Create, Read, Services erwarten und liefern Geschftsobjekte. Das UI be- Update, Delete), ergnzt um einige wenige Meta-Operationen.handelt folglich ausschlielich Geschftsobjekte und stellt Zur Entwicklungszeit werden ACID-kritische Codefragmen-diese dar. Die ber das UI durchgefhrten nderungen (auch te mit einer besonders hohen Testabdeckung versehen undNeuanlagen und Lschungen) werden von Services persistiert, sensitive Metriken fortlaufend abgeprft (Continuous Inspec-die in umgekehrter Richtung auch eingehende nderungen tion). So knnen potenzielle Fehlersituationen, wie verlorenean der Datenhaltung an das UI propagieren. Eine klare Un- Updates oder das Phantomproblem, frhzeitig aufgesprtterscheidung 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 Datenstrukturhhte Ansprche an die Disziplin der Anwendungsentwicklerstellen, knnen durch die klare Trennung der Zustndigkeiten Anders als bei der Java Persistence API (JPA) sind in dieser(Separation of Concerns) recht einfach, flexibel und wartbar Lsung die Strukturen der Daten auf dem Datenhaltungsme-neue Anwendungsflle 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 unabhngige Plattform kap- tene Stckliste komplett sequenziell gelesen und ein entspre-selt Basisfunktionalitt, wie beispielsweise die Datenhaltungs- chender Objekt-Graph im Speicher aufgebaut. Vernderungenschicht (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 Stze an dieliefert frhe Rckkopplungen ber Anomalien sowohl zur bestehende Datei angehngt. Im Falle von Abstrzen ist somitBuild- als auch zur Laufzeit (fail fast-Ansatz). Ebenfalls ent- hchstens die letzte nderung verloren, eine Beschdigung an-haltene technische Wartungsdienste, wie Recovery-Mechanis- derer Daten ist durch den ausnahmslosen Verzicht auf Modifi-men fr defekte Dateien und Wiedererstellung von Indizes, kationen bereits geschriebener Daten ausgeschlossen.sind auf dem mobilen Endgert unerlsslich und knnen 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 durchfhren lassen. Trade-offs, die das Verfahren mit sich bringt, sind die Limi-Transaktionsprotokolltierung 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-stndig den ACID-Prinzipien folgenden Lsung ist die Sicher- liegenden Fall praktisch kein Problem darstellt, sowie diestellung konsistenter Datenzustnde, insbesondere angesichts initiale Verzgerung beim Einlesen einer bereits begonnenender zentralen Bedeutung von Schreibzugriffen in einer relativ Transaktionsdatei.unzuverlssigen Systemumgebung; ein alternativer Lsungs-ansatz wie BASE ist im vorliegenden Fall nicht ausreichend. Um diese Konsistenz zu gewhrleisten, wird fr die Bewe- Fortlaufend automatisch lieferngungsdaten eine an Transaktionslogs klassischer SQL-Daten-banken angelehnte Lsung eingesetzt. Anstatt beispielsweise Eine komponentenbasierte Architektur ist eine Vorausset-eine Stckliste in zwei miteinander ber Schlssel verbunde- zung zum Aufbau einer feingranularen Build-/Deployment-nen Tabellen jeweils fr 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 Abhngigkeits-aufbauender Einzelschritte dokumentiert. Auf diese Weiselsst sich das Problem unvollstndiger Updates ber mehrere ** Im Umkehrschluss: Eine monolithische Anwendung wird in aller Regel auchTabellen hinweg vermeiden. monolithisch gebaut und entsprechend hlzern bereitgestellt. 14 JavaSPEKTRUM 3/2012 3. Schwerpunktthema Fazit Die gegebenen Rahmenbedingungen, insbesondere die im Ver- gleich zur Server- und Desktop-Java-Entwicklung sehr ein- geschrnkte Hardware, aber auch die mit JavaME limitierte Laufzeitplattform, die viele hufig eingesetzte Standardframe- works von vornherein ausschliet, machen einige Kreativitt erforderlich, um funktionale, aber auch nicht-funktionalen An- forderungen zu erfllen. Mit einem Stack aus Altbewhrtem 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 fr zuknf- tige Erweiterungen tragfhig ist. Gem Martin Fowlers Defi- nition [NoSQL] nutzen NoSQL-Lsungen 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 Lsung 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. Httermann, Agile ALM, Manning, 2011(s. Abb. 2). [Brew00] E. A. Brewer, Towards Robust Distributed Systems, Der kontinuierliche Build durchluft bei jeder nderung imPODC 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 Binrdateien zur Verfgung. Diese sind Ausgangs-[JSR169] Java Specification Request 169:punkt fr die weiteren Schritte. Ein Quality Gate fr statischeJDBC Optional Package for CDC/Foundation Profile,Codeanalyse und Testabdeckung ist ebenfalls eingeflochten. http://www.jcp.org/aboutJava/communityprocess/final/jsr169Der Release-Candidate durchluft 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 Kanle 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 fr alle mglichen Ziel-http://www.theminimumyouneedtoknow.com/xbase_toc.htmlumgebungen paketiert und konfiguriert, um schlielich auf diefinale Zielumgebung verteilt zu werden. Verlaufen manuelleTests auf den jeweiligen Endgerten erfolgreich, kann aus demRelease-Candidate potenziell ein Release werden. Die Promoti-on zu einem Release hngt von vielen Faktoren ab, sodass nichtjeder Kandidat an dieser Stelle zwingend zum Release wird. Michael Httermann, 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 Bcher Agile Java-Entwick-leases der Plattform in deutlich lngerer 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 auerdem AutorWesentliche Eckpfeiler der Werkzeugkette sind Maven/ des MySQL Admin Cookbook.Tycho (wobei OSGi-Manifests die fhrenden Medien E-Mail: ds@danielschneller.desind), Subversion, Jenkins (mit dem Build-Pipeline-Plug-in) und Nexus (mit der Mglichkeit, P2-Reposito-ries zu halten).www.javaspektrum.de 15