Beiträge

Schinkelfest 2017

Welcher Ort dürfte geeigneter sein für die Preisverleihung des renommierten Schinkel-Preises des Architekten- und Ingenieurvereins zu Berlin (AIV) als der Veranstaltungssaal einer Ikone der modernen Architektur? So dachten wohl auch die Veranstalter des 162. Schinkelfestes und wählten den Otto-Braun-Saal unseres Hauses Potsdamer Straße bereits zum zweiten Mal nach 2015 für ihren Festabend aus. Barbara Schneider-Kempf begrüßte die Gäste herzlich und unterstrich in ihrem Grußwort den Einklang zwischen Veranstaltung und Ort. Sie freute sich, dass  „das Schinkelfest heute Abend gerade hier, gerade in diesem Gebäude gefeiert wird, um den Architektennachwuchs auszuzeichnen“.

Der Schinkel-Preis geht an die Gewinner eines jährlich ausgeschriebenen Wettbewerbs und wird stets am 13. März eines Jahres, dem Geburtstag von Karl-Friedrich Schinkel, an den Nachwuchs im Architektur- und Planungswesen vergeben. 2017 lag der Fokus der Wettbewerbsaufgaben auf dem Berliner Westkreuz, einem sicher nicht leicht zu gestaltenden Gelände, das von Verkehrstrassen, dem zurzeit nicht genutzten ICC, dem Omnibusbahnhof und Brachflächen dominiert wird. Drei verschiedene Aufgabenstellungen boten den Teilnehmerinnen und Teilnehmern Möglichkeiten unterschiedlichster Herangehensweisen.

Die Intention der Veranstalter, mit dem Wettbewerb und der Preisverleihung durchaus Einfluss auf die aktuelle Stadtentwicklung nehmen zu wollen, spiegelte sich in der Gästeliste wider. Katrin Lompscher, Senatorin für Stadtentwicklung und Wohnen, lobte in ihrem Grußwort die Arbeiten der Preisträger als Ideenpool mit realistischem Umsetzungspotential und Oliver Schruoffeneger, Bezirksstadtrat für Stadtentwicklung, Bauen und Umwelt in Charlottenburg-Wilmersdorf, wünschte sich Anregungen für den Umgang mit diesem problematischen Bezirksteil.

Die Ausstellung – Staatsbibliothek zu Berlin-PK – Carola Seifert – Lizenz CC-BY-NC-SA 3.0

Der Festvortrag von Prof. Dr. Harald Bodenschatz mit dem nur für Berlin-Kennerinnen und -Kenner nicht überraschenden Titel ‚2020: Berlin wird 100 Jahre alt’, gab einen interessanten und kenntnisreichen Überblick über die Situation der werdenden Großstadt im Jahre 1920. Hatte sicher der eine oder andere unter den Gästen nach der 750-Jahrfeier der Stadt im Jahre 1987 ein deutlich höheres Alter der heutigen Hauptstadt vor Augen, so führte die Frage, ob Wannsee, Spandau und Köpenick auch zu Berlin gehörten, auf die richtige Spur. Erst mit der Eingemeindung von 59 Landgemeinden und 27 Gutsbezirken zu einer Einheitsgemeinde mit 20 Bezirken wurde Berlin 1920 zu der Stadt, wie wir sie heute kennen. Verblüffend ähnelten die Fragen der damals beteiligten Planer denen der heute Verantwortlichen, auch dies wurde im Vortrag deutlich.

Oriel-Quartett – Staatsbibliothek zu Berlin-PK – Carola Seifert – Lizenz CC-BY-NC-SA 3.0

In der anschließenden, feierlichen Zeremonie wurden die Schinkel-Preise in den drei Kategorien und zahlreiche Sonderpreise verliehen. Die vollständige Dokumentation der Arbeiten und der vergebenen Preise ist online einsehbar. Bereits am Vormittag des 13. März wurde die Ausstellung mit den Arbeiten der Wettbewerbsteilnehmer in der Eingangshalle eröffnet. Sie ist noch bis zum 20. März geöffnet und für jeden frei zugänglich.

Eine würdige Entsprechung der Vielfalt der eingereichten Arbeiten bot die Musikauswahl des Oriel Quartetts. Hier stand mit Peteris Vasks Streichquartett Nr. 4 ein zeitgenössischer Aspekt Stücken von Mozart und Britten gegenüber.

V.l.n.r.: Prof. Dr. h.c. Wolfgang Schuster, Vorsitzender des AIV; der Festredner, Prof. Dr. Harald Bodenschatz; Karin Lompscher, Senatorin für Stadtentwicklung und Wohnen des Landes Berlin; Barbara Schneider-Kempf, Generaldirektorin der Staatsbibliothek – Staatsbibliothek zu Berlin-PK – Carola Seifert – Lizenz CC-BY-NC-SA 3.0

‚Für Forschung und Kultur’ steht seit einigen Jahren als eine Art Claim unter dem Namen der Bibliothek. Nicht alle großen Ereignisse, die in der Staatsbibliothek stattfinden, finden ihren Niederschlag in den Lesesälen und in der Wahrnehmung ihrer Benutzerinnen und Benutzer. Das Schinkelfest und die Preisverleihung an den Architektur-Nachwuchs gehört dabei ganz sicher zu den kulturellen Highlights des Bibliotheksjahres.

Microservices, Sicherheit

Dieser Beitrag in unserer Blogserie zum Thema Microservices, behandelt das Thema Authentifizierung und Autorisierung basierend auf dem OAUTH2 – Verfahren. Es werden die Vorteile und Herausforderungen dieser Lösung erörtert.

Im Rahmen der Entwicklungsprojekte der Staatsbibliothek zu Berlin, ist eine technische Anforderung, die nahezu in jedem Projekt gefordert wird, die Anmeldung von Benutzern und die Verwaltung der entsprechenden Benutzerrechte und Rollen. Es ist dabei zu prüfen, ob diese Anforderung im Rahmen einer Organisationslösung oder als eine individuelle, projektspezifische Lösung umgesetzt wird. Eine mögliche Organisationslösung sollter meiner Meinung nach folgende wichtige Anforderung unterstützen:

  • Integrierbarkeit in eine Microservices Architektur.
  • Unterstützung mehrerer Authentifizierungsverfahren, wie zum Beispiel, LDAP, Shibboleth oder ein individuelles Verfahren.
  • Unterstützung von Single Sign On und Single Sign Out.
  • Unterstützung verschiedenster Anwendungen.
  • Individuelle Erweiterbarkeit.

Im Vorfeld zur Lösungsbeschreibung möchte ich einige Begriffe, welche häufig in diesem Kontext verwendet werden, erläutern.

Authentifizierung
Die Authentifizierung dient der Überprüfung der Benutzeridentität. In der Regel geschieht dies mit der Eingabe eines Benutzernamens und eines Passworts.

Autorisierung
Hierunter werden die Gewährung von Benutzerrechten und das Zulassen bzw. Verweigern der entsprechenden Aktion in der Anwendung verstanden.

Single Sign On / Single Sign Out
Mittels Single Sign On wird das einmalige Anmelden am System ermöglicht, um mehrere Anwendungen ohne wiederholte Anmeldung nutzen zu können. Analog existiert der Single-Sign-Out-Mechanismus zum Abmelden.

LDAP
Ein Verzeichnis Dienst zur Verwaltung von Benutzerinformationen.

Token
Ein codierter Text welcher Nutzer bzw. Zugriffsinformationen enthält. Enthält allerdings keine Passwortinformationen.

Begibt man sich in diesem Bereich auf die Suche nach möglichen aktuellen Verfahren und Lösungen, findet man folgende populäre Lösungsansätze, welche einige der oben genannten Anforderungen unterstützen:

OAUTH2
OAUTH2 ist eine reine Autorisierungslösung und der Nachfolger von OAUTH 1.0. Das OAUTH2 Protokoll ermöglicht Anwendungen, Zugriff auf Webservices mit begrenzten Benutzerinformationen zu erhalten. Es wird bereits durch Anbieter von Webservices, wie zum Beispiel Facebook, Google oder auch Twitter verwendet. Alle Informationen zum Verfahren können Sie unter folgendem Link nachlesen.

OPEN ID Connect
Open ID Connect ist eine einfache Identitätsverwaltungsschicht basierend auf OAUTH2. Es ermöglicht Client Anwendungen die Identität eines Nutzers zu verifizieren und Nutzerinformationen zu erhalten. Es basiert auf HTTP REST Kommunikation.

SAML2, Security Assertion Markup Language
SAML2 ist ein Standard zum Austausch von Authentifizierungs-, und Autorisierungsinformationen und Nachfolger vom SAML Standard. SAML 2.0 ist XML-basiert und benutzt Sicherheitstoken zum Austausch von Nutzerinformationen. SAML basiert auf dem Zusammenspiel von einem Principal, dem Benutzer, einem Serviceprovider, einem Webservice zum Zugriff auf eine geschützte Ressource und einem Identity-Provider zur Prüfung der Identität eines Benutzers. SAML2 ist damit eine sogenannte Enterprise – Lösung, welche im gesamten Unternehmen bzw. der Organisation eingesetzt werden muss.

Für alle diese Verfahren sind bereits vielfältige Softwarebibliotheken und Produkte entwickelt worden. Eine Auswahl an Produkten welche diese Verfahren unterstützen sind folgende:

Eine gute Wahl ist meiner Meinung nach das Spring Security Framework. Die wichtigsten Gründe dafür sind:

  • Die gute Integrationsmöglichkeit für die Nutzung REST basierten Microservices,
  • Die Möglichkeiten der individuellen Erweiterbarkeit,
  • Die Unterstützung aller gängigen Authentifizierungsverfahren und Standards
  • Eine aktive Community und Weiterentwicklung
  • Die gute Integration in die Spring-Technologie.

Wie genau kann nun aber eine Lösung aussehen?

Eine mögliche Lösung hierfür wäre eine Remote-Fassade im Bereich der Sicherheit aufzubauen. Diese kann mögliche Autorisierungsverfahren verstecken und in Richtung der Anwendungen auf ein Verfahren standardisiert werden. Alle Anwendungen sind auf Basis des OAUTH2 Verfahren integriert.Folgende Abbildung veranschaulicht die Komponenten und das Verfahren.

Authentifizierung, Remote Fassade

Authentifizierung, Remote Fassade

Möchte der Benutzer eine Anwendung verwenden, wird dieser bei fehlender Authentifizierungsinformation auf die Anmeldeseite (Login) des Identity-Managementservers weitergeleitet. Dort kann der Nutzer seine Benutzerkennung eingeben und wird nach erfolgreicher Anmeldung zur ursprünglichen Anwendung zurück geleitet. Dieses Verfahren basiert auf dem OAUTH2 Flow „Authorization Code Grant“. Es können hier allerdings auch andere Flows für eine Anwendung verwendet werden. Beim Umleiten der Nutzeranfrage vom Identity-Management zur Anwendung wird dieser Umleitung ein sogenannter Token mitgegeben. Hier sollte meiner Meinung nach ein JSON Web Token (JWT) verwendet werden. Dieser Token enthält alle nutzerspezifischen Informationen und die entsprechenden Rechte und Rollen für diesen Benutzer. Die Anwendungen können nun diesen JWT auswerten und die entsprechenden Aktionen innerhalb der Anwendung zulassen bzw. verweigern. Zusätzlich zu dem OAUTH2 Standardverfahren ist es jetzt aber möglich für jede Anwendung ein Auhentifizierungsverfahren festzulegen. So könnte festgelegt werden, dass Benutzer der Anwendung A sich gegen das LDAP authentifizieren und Benutzer der Anwendung B sich gegen einen SAML2 Identity Provider authentifizieren. Hier agiert das Identity Management als eine Remote-Fassade zur Kapselung möglicher Authentifizierungsverfahren. Mit Hilfe des JWT können alle benutzerspezifischen Informationen platziert und ohne einen erneuten Login durch die Anwendungen ausgewertet werden.

Welche Vorteile bietet eine solche Lösung?

Diese Lösung hat den Vorteil, dass beliebige Authentifizierungsverfahren einmalig integrieren und mehrfach nachgenutzt werden können. Zusätzlich wird in Richtung der Anwendungen auf ein Verfahren standardisiert, was für die Client-Anwendungen weniger Anpassungen bei Erweiterungen des Indentity-Managements bedeutet und letztendlich auch Betriebsaufwände verringern kann. Ein weiterer Vorteil ist, dass jegliche Anwendungen mit allen benötigten Benutzerinformationen versorgen können ohne jemals die Benutzerauthentifizierung im Netzwerk ausgetauscht zu haben. Mit Hilfe des JWT können so auch Microservices ohne Userinterface die Nutzerinformationen erhalten und auswerten.

Welche Herausforderungen bringt diese Lösung mit sich?

Eine Herausforderung ist natürlich die Integration komplexer Authentifizierungsverfahren wie zum Beispiel SAML2. Hierbei müssen die Anmeldeinformationen bei dem entsprechenden Identity Provider der jeweiligen Organisation eingegeben werden und nicht im Standard-Login des Identity-Managements.
Eine weitere Herausforderung ist die unterschiedliche Darstellung derselben Anmeldeseite für unterschiedliche Anwendungen. Mögliche Ansätze zur Lösung dieser Thematik könnten auf Frontend-Komposition basieren. Dies bedeutet, dass die Anmeldeseite in die jeweilige Anwendung integriert und somit dem Anwendungslayout angepasst wird.
Neben der Anmeldung muss ebenfalls eine Lösung für eine einheitliche Abmeldung in allen Anwendungen gefunden werden. Dazu gibt es sogenannte Push Verfahren mit welcher das Identity Management die Anwendungen über die Benutzerabmeldung informieren kann.

Fazit

Das Thema Authentifizierung / Autorisierung und damit das Thema Sicherheit spielt im Bereich der Microservices eine wichtige Rolle. Bei der Konzeption einer Microservice-Architektur sollte aus meiner Sicht dieses Thema im Vorfeld separat und dediziert geplant werden. Es ist ein zentraler Bestandteil der so genannten Macroarchitektur. Denn jeder Microservices hat zur Aufgabe die Geschäftslogik entsprechend der Nutzerrechte zu gestalten. Dafür kann es natürlich nicht für jeden Microservices eine individuelle Sicherheitslösung geben. Die hier vorgestellte Lösung, hat den Vorteil, dass die Verwendung eines JWT und des OAUTH2-Verfahrens sich sehr gut für die Verwendung innerhalb einer Microservices Architektur eignet. Der JWT kann in jeden HTTP Request als Authorization Header mitgesendet werden, sodass ein HTTP REST basierter Microservice diesen auswerten kann. Es sollte allerdings darauf geachtet werden, dass die Anwendungslogik zur Auswertung des Tokens, sich nicht zu stark auf die Struktur des JWT festlegt. Wird diese nämlich im Laufe der Zeit grundlegend geändert müssen sämtliche Microservices angepasst werden. Mit der Auswahl des Frameworks Spring Security, dem OUATH2 Verfahren und dem JSON Web Token ist eine leichtgewichtige Integration sehr gut möglich.

Rückblick: Buchvorstellung „Das Rote Bauhaus“

Ein Beitrag von Gwendolyn Mertz, Verein der Freunde der Staatsbibliothek, und Christina Schmitz, Fachreferentin für Architektur

Am 19. September 2016 stellte die Architektin und Autorin, Dr. Ursula Muscheler, ihr neues Buch „Das rote Bauhaus. Eine Geschichte von Hoffnung und Scheitern“ auf Einladung des Vereins der Freunde in der Staatsbibliothek zu Berlin vor. In ihrem im Berenberg-Verlag erschienen Band geht sie von dem zweiten Bauhaus-Direktor, Hannes Meyer, aus, der nach seiner Entlassung beim Bauhaus 1931 dem Ruf in die Sowjetunion folgte. Mehr als 80 Gäste lauschten ausgewählten Passagen über die „Bauhaus Stoßbrigade Rotfront“, wie sich Meyer und seine mitreisenden Kollegen nannten, und andere „Russlandfahrer“ wie den Frankfurter Städtebauer Ernst May oder auch Bruno Taut. In der Sowjetunion glaubten sie ihre Ideen des funktionalen und sozialen Wohnungsbaus umsetzen, aber auch der drohenden Arbeitslosigkeit und den Ideologien der Nationalsozialisten entkommen zu können.

Im anschließenden Podiumsgespräch mit ihrem Verleger Heinrich von Berenberg sprach Ursula Muscheler über ihre Beweggründe für die Beschäftigung mit diesem vernachlässigten Kapitel der Bauhausgeschichte und vertiefte einige Aspekte: Erfolg war keinem der Bauhäusler wirklich beschert – ihre Entwürfe wurden von den Sowjets aus verschiedenen Gründen abgelehnt, die Architekten gerieten in die Fänge der stalinistischen Säuberungen. Manchen von ihnen gelang die rechtzeitige Ausreise, andere fielen dem Terror zum Opfer oder arrangierten sich mit der politischen Lage.

Begleitend zur Veranstaltung zeigte die Staatsbibliothek eine kleine Ausstellung mit herausragenden Stücken aus ihren Sammlungen, darunter Originalpublikationen aus der Bauhaus-Ära, ein Brief Hannes Meyers an Gerhart Hauptmann und ausgewählte Forschungsliteratur zur Rezeptionsgeschichte.

Die Liste der Exponate mit Begleittexten finden Sie hier zum Download. Für weitere Informationen wenden Sie sich gerne an Christina Schmitz, Fachreferentin für Architektur. Kontakt zum Verein der Freunde der Staatsbibliothek zu Berlin e.V. erhalten Sie über die Geschäftsstelle.

 

Ursula Muscheler: Das rote Bauhaus. Eine Geschichte von Hoffnung und Scheitern. Berlin: Berenberg 2016. ISBN 978-3-946334-10-1.

 

Eindrücke:

 

Microservices, Dokumentenmanagement

In diesem Beitrag unserer Blogserie zum Thema Microservices möchte ich die Vorteile dieses Architekturstiles an einem konkreten Beispiel einer Bibliotheksanwendung aufzeigen. Die hier erläuterten Erfahrungen haben wir in unserem Microservices Projekt im Bereich der Nachweissysteme machen dürfen und möchten diese gerne weiter geben.

Im Laufe unserer Arbeit für die Staatsbibliothek sind durch die Fachabteilungen für unterschiedlichste Anwendungen sehr häufig ähnliche oder gar identische Anforderungen genannt worden. Eine sehr oft formulierte Anforderung war das Management von XML-Dateien. Diese sollten in der Regel abgelegt, verändert, validiert, transformiert oder indiziert werden. Zielstellung dieses Verarbeitungsprozess war in der Regel die Präsentation der im XML enthaltenden Daten im Web.

Die klassische Herangehensweise bereits umgesetzter Projekte war hierbei die Evaluierung und Auswahl eines geeigneten Dokumentenmanagementsystems (DMS) und die Umsetzung der fachlichen Anforderungen innerhalb des DMS. Dabei wurden die im Bibliothekswesen sehr verbreiteten Systeme Mycore, Fedora, DSpace oder aber auch XML Datenbanken verwendet. Diese Systeme bieten in der Regel eine maschinelle Schnittstelle um die XML Dateien zu importieren, exportieren und zu manipulieren. Je nach DMS bietet dieses weitere Funktionen, wie zum Beispiel:

 

  • Generierung eines Indexes zur Suche,
  • Generierung einer Webpräsentation,
  • OAI-Schnittstelle,
  • Aufnahme von Metadaten,
  • Rechtemanagement,
  • Clusterbetrieb,
  • Massenverarbeitung

 

Dabei werden die DMS Funktionalitäten entweder direkt durch eine Webpräsentation oder aber durch eine selbst entwickelte Clientanwendung benutzt. Was aber ist nun problematisch oder beziehungsweise waren die negativen Erfahrungen mit solch einem Aufbau?

DMS Zugriff ohne Fassade

DMS Zugriff ohne Fassade

Ein problematischer Punkt war in der Regel ein Versionswechsel des DMS. Am Beispiel der Weiterentwicklung von der Fedora Version 3 zu der Fedora Version 4 ist die Schnittstelle des Fedora 4 Systems nicht kompatibel mit der des Altsystems. Diese fehlende Abwärtskompatibilität verursacht einen hohen Entwicklungsaufwand, sobald die Clientanwendung oder die Webpräsentation, basierend auf Fedora 3, auf ein Fedora 4 System migriert werden soll. Diese Aufwände sind technisch notwendig, bringen dem Anwender aber keine neue Funktionalität. Diese Tatsache macht die Rechtfertigung des entstehenden Aufwandes sehr schwer. Was wiederum dazu führen kann, dass die Gesamtanwendung nicht zeitnah weiterentwickelt werden kann.

Ein weiterer Punkt ist die Tatsache, dass die gesamte Fachlogik sehr häufig ebenfalls mit den Möglichkeiten der Dokumentenmanagementsysteme oder deren technischen Funktionen umgesetzt worden sind. Dies bedeutet, dass zum Beispiel die Art und Weise des Nachweises, die fachliche Objekte und die Workflows dort implementiert worden sind. Nicht nur bei einer inkompatiblen Migration, sondern auch bei einem Wechsel der DMS-Software müssen die fachlichen Objekte und Workflows neu entwickelt werden. Ebenfalls aufführen möchte ich hier die fehlende Nachnutzbarkeit. Werden durch eine andere Fachabteilung ähnliche Anforderungen in einem anderen Projekt geäußert, können die bereits entwickelten Funktionen nicht noch einmal verwendet werden. Dies basiert in der Regel auf der sehr engen Integration von Clientanwendung oder Webpräsentation und DMS. Auch im Betrieb solcher Systeme haben sich problematische Punkte aufgezeigt. Ein Ausfall des DMS hat direkt einen kompletten bzw. teilweisen Ausfall der Webpräsentation zur Folge. Eine Veränderung der Konfiguration der DMS-Komponente hat ebenfalls direkte Auswirkungen auf die Webpräsentation. Wartungsarbeiten am DMS bedeuten in der Regel einen Ausfall der Webpräsentation.

 

Aber wie kann nun die Microservice-Architektur in den aufgeführten Punkten eine mögliche Lösung darstellen?

 

Um mögliche Inkompatibilitäten zwischen Versionen eines Dokumentenmanagementsystems oder gar einen Wechsel eines Produktes zu ermöglichen, muss die Clientanwendung oder Webpräsentation von der Dokumentenmanagementsoftware entkoppelt werden. Im Bereich der Softwarearchitektur gibt es dafür eine Lösung, die als Fassade bezeichnet wird. Diese wird zwischen der Clientanwendung und dem DMS aufgebaut. Vorteil dieser Fassade ist es, dass diese jegliche Änderungen der DMS Komponente für die Clientanwendung unsichtbar werden lässt. So muss die Clientanwendung nicht mit jeder Änderung des DMS Systems angepasst werden und kann ausschließlich die fachlichen Objekte und Workflows umsetzen.Was aber hat diese Vorgehensweise mit der Microservice-Architektur zu tun? Bis zu diesem Punkt der Erläuterung, nichts. Setzt man nun aber diese Fassade als Microservice um, gewinnt man auf Seiten der Clientanwendung weitere Vorteile.

 

  • Als Microservice kann die Fassade sehr einfach skaliert und somit vielen Anwendungen zur Verfügung gestellt werden.
  • Als Microservice ist ein Zugriff auf das DMS gegen Netzwerklatenzen gesichert. Für die Zugriffe werden Metriken generiert. Diese können bewertet und ins Monitoring eingebunden werden.
  • Als Microservice kann die Fassade unabhängig von den Clientanwendungen weiterentwickelt werden. Während die Fachlichkeit von einem Entwicklerteam entwickelt wird, kann die Integration eines neuen DMS von einem anderen Team gleichzeitig entwickelt werden. So konnten wir im Laufe unseres Projektes drei unterschiedliche Ablagesysteme in der Fassade integrieren, ohne die Clientanwendung anpassen zu müssen.
  • Als Microservice bietet die Fassade eine hohe Nachnutzbarkeit integrierter DMS. Aufgrund der Vereinheitlichung der Schnittstelle können die unterschiedlichsten Clientanwendungen die Ablagesysteme und deren Funktionen nutzen.
  • Als Microservice kann eine Migration bzw. ein Wechsel des DMS ohne Aufwand im Bereich der Clientanwendung durchgeführt werden.
  • Als Microservice können alle Clientanwendungen von der Weiterentwicklung der Fassade profitieren. Wird ein neues DMS integriert, entsteht der Entwicklungsaufwand nur einmal. Dies bedeutet für alle anderen Clientanwendungen eine deutlich kürze Entwicklungszeit.
DMS Zugriff mit Microservice

DMS Zugriff mit Microservice

 

All diese positiven Auswirkungen dieser Architektur haben natürlich auch ihre Herausforderungen. Wir haben die Erfahrung gemacht, dass, sobald das DMS eine REST- Schnittstelle zur Steuerung bietet, der Aufwand der Integration sehr gering ist. Bietet das DMS hingegen keine REST-Schnittstelle so steigt der Integrationsaufwand. Eine weitere  Herausforderung bei dieser Vorgehensweise ist die Schaffung und Weiterentwicklung der einheitlichen Schnittstelle der DMS-Fassade. Diese muss die unterschiedlichen Adressierungen und Steuerungsmöglichkeiten aller DMS zu einem Standard-API zusammenführen. Um alle Möglichkeiten der Microservice-Architektur nutzen zu können, müssen die bereits vorgestellten „Platform Services“ aufgebaut und betrieben werden. Dies vereinfacht zwar den Betrieb, bedeutet initial aber einen Mehraufwand.

 

Fazit

In Anbetracht der aufgezeigten Vorteile fällt mein Feedback zur Microservice-Architektur im Ergebnis positiv aus. Mit sorgfältiger Planung lassen sich die Herausforderungen dieser Architektur meistern. Der initiale Mehraufwand ist meiner Meinung nach mit dem geringeren Aufwand im Dauerbetrieb zu rechtfertigen. Allerdings fehlen zum heutigen Zeitpunkt  noch die Langzeiterfahrung im produktiven Betrieb einer Microservice-Architektur. Aus diesem Grund  würde ich mich sehr über einen Erfahrungsaustausch zum Thema Microservices im Produktionsbetrieb oder ein Feedback zu diesem Beitrag freuen.

Microservices, Integration

Die Microservices Architektur bietet den Vorteil der freien Technologieauswahl bei jedem Microservice. Ein wichtiger Punkt unseres Evaluierungsprojektes war die Prüfung der Integrationsfähigkeit von Softwarekomponenten, welche nicht Java, bzw. Spring Cloud im Technologiestack enthalten. Dazu möchte ich in diesem Beitrag unserer Blogserie zeigen auf welche Art und Weise wir legacy Software, wie zum Beispiel Fedora4 Content Repository in die „Platform Service“ der Microservices Welt integriert haben.

 

Integration

Für die Integration solcher „nicht Java basierten Softwarekomponenten“ stellt Netflix Open Source Stack (Netflix OSS) das Projekt Prana bereit. Prana ist eine sogenannte Sidecar Anwendung. Durch die Nutzung von Prana ist es möglich die „Platform Service„, wie zum Beispiel Eureka, Circuit Breaker und Ribbon in solchen Projekten zu verwenden. Wie der Name „Beistellwagen“ schon verrät wird das Prana Projekt lediglich neben den nicht Netflix fähigen Microservice gestellt und konfiguriert. Wie genau das funktioniert, möchte ich gerne an folgendem konkreten Beispiel demonstrieren.

 

Dazu haben wir im ersten Schritt ein Spring Boot Projekt aufgesetzt und Spring Cloud Sidecar durch folgende Annotation an der „main“ Klasse aktiviert.

 

@EnableSidecar

@SpringBootApplication

public class SideCarApplication {

 

public static void main(String[] args) {

SpringApplication.run(SideCarApplication.class, args);

}

}

 

Anschließend müssen im Sidecar Projekt noch folgende Properties gesetzt werden:

 

spring.application.name=Fedora4-Sidecar

server.display-name=Staatsbibliothek Fedora Sidecar

server.port=9080

sidecar.health-uri=http://localhost:8080/rest/health.json

sidecar.port=8080

sidecar.home-page-uri=http://localhost:8080/

 

Mit der Angabe der health-uri wird auf einen REST Endpunkt der Fedora4 Anwendung verwiesen, aus welchem Sidecar die Statusinformation zur Übermittlung an Eureka erhält. Dazu haben wir im Fedora4 folgendes triviales JSON Dokument hinterlegt:

health.json

{„status“:“UP“}

Bei erreichbarem Fedora4 kann Sidecar nun diese Statusinformation an Eureka übermitteln. Sidecar muss auf demselben Server laufen wie Fedora4. Zusätzlich zur Sidecar Konfiguration müssen natürlich noch die Konfigurationswerte für Eureka, Hystrix und Ribbon gesetzt werden. Um Fedora4 in Eureka sichtbar zu machen haben wir daher für die Service Registry folgende Werte gesetzt:

 

eureka.instance.leaseRenewalIntervalInSeconds=10

eureka.client.healthcheck.enabled=true

eureka.client.serviceUrl.defaultZone=http://localhost:8761/serviceregistry/eureka/

eureka.client.registryFetchIntervalSeconds=5

 

Ist Fedora4 gestartet zeigt Eureka die Integration wie folgt an:

fedora-sidecar

Ist das Sidecar Projekt gestartet und verfügbar, kann anschließend Fedora4 über folgende URL angesteuert werden:

 http://<hostname>:9080/fedora4-sidecar/

 

Welche Vorteile bringt uns diese Integration nun aber ganz konkret.

 

  • ohne Fedora4 anpassen zu müssen, lässt es sich in die „Platform Services“ von Netflix integrieren,
  • Fedora4 ist damit in der Service Registry sichtbar und abrufbar,
  • ein Aufruf von Fedora4 über die Sidecar URL wird als Circuit Breaker Command ausgeführt,
  • es werden Hystrix Metriken generiert welche im Hystrix Dashboard sichtbar sind,
  • es kann Load Balancing verwendet werden, sobald Fedora4 mehrfach installiert ist,
  • es kann die zentrale Configuration Management Instanz verwendet werden.

 

Obwohl Fedora4 kein Microservice ist können Client Anwendungen die Service Registry nach der Einstiegs URL von Fedora4 fragen. Anschließend wird jede Anfrage der Clients via Hystrix abgesichert und aufgezeichnet. So konnten wir zum Beispiel die Antwortzeiten der Fedora4 REST API im Hystrix Dashboard aufzeichnen und auswerten.

hystrix-fedora

All diese Vorteile sind ohne eine einzige Anpassung des Fedora4 Systems möglich. Auf dieselbe Art  und Weise haben wir einen reinen Javascript Microservice eingebunden.

 

Fazit

Wie dieser Beitrag zeigt, ist die Integration einer Softwarekomponente, welche nicht den Netflix Stack via Bibliotheken Integration nutzen kann, sehr einfach. Die aufgezeigten Möglichkeiten, welche sich dadurch bieten finde ich beeindruckend. Hinzufügen muss ich allerdings, dass sich auf diese Art und Weise nur Softwarekomponenten integrieren lassen, welche über eine REST API angesprochen werden können. Da alle Aufrufe dieser REST API über Sidecar geroutet werden. Für Softwarekomponenten ohne REST API ist die Integration ebenfalls möglich aber etwas aufwendiger.

Microservices, Widerstandsfähigkeit

Widerstandfähigkeit eines Microservices Systems in Bezug auf Serviceausfälle oder Netzwerklatenz war ein wichtiger Aspekt, welchen wir in unserem Microservices Projekt eingehend untersuchen wollten. Daher freue ich mich dieses Thema und unsere Erfahrungen in unserer Blogserie etwas eingehender beleuchten zu können.

Widerstandsfähig bezieht sich hierbei auf die Client Anwendung, welche die einzelnen nachgelagerten Microservices verwendet. Dieser Begriff meint dabei, dass die Client Anwendung auch im Fall von Netzwerk- bzw. Serviceausfällen nicht blockiert und immer noch durch den Anwender verwendet werden kann. Blockieren kann die Anwendung zum Beispiel, wenn diese einen Microservice verwendet, welcher sehr viel Zeit benötigt, um eine Antwort im Netzwerk bereit zu stellen. Warum dieser Microservice nicht schnell genug antwortet, spielt bei dieser Betrachtung keine Rolle. Die Client Anwendung wartet solange bis entweder die Antwort eintrifft oder aber ein zuvor definierter Timeout einen Fehler erzeugt. Eine hohe Wartezeit einer Anfrage kann bei starker Verwendung der Client Anwendung dazu führen, dass immer mehr Anfragen der Nutzer das System immer stärker blockieren. Ein Blockieren der Client Anwendung kann aber auch durch eine Überlastung des Netzwerks ausgelöst werden. Die Client Anwendung fühlt sich in solchen Fällen für den Nutzer träge und langsam an. Im Falle von Webanwendungen verlässt der Nutzer in der Regel dann sehr schnell die Seite.

 

Als Lösung für solche Situationen bietet der Netflix OSS das Projekt Hystrix, als sogenannte „Circuit Breaker“ Bibliothek, an. Ein „Circuit Breaker“ ist eine Sicherung, welche ausgelöst wird, sobald gewisse Umstände eintreten. Hystrix bietet darüber hinaus viele zusätzliche Funktionalitäten:

 

  • kapselt ein Kommando und bietet synchrone und asynchrone Ausführung,
  • löst nach definiertem Timeout die Sicherung aus,
  • führt jedes Kommando in einem definierten Thread Pool aus,
  • auslösen der Sicherung bei zu hoher Fehlerrate eines Kommandos,
  • ermöglicht die Ausführung eines Fallbacks im Fehlerfall,
  • erzeugt Performance Metriken,
  • ermöglicht die Nutzung eines Caches.

 

Alle diese Funktionalitäten stehen zur Verfügung, sobald ein in der Client Anwendung ausgeführtes Kommando in ein „HystrixCommand“ überführt wird. Meiner Meinung nach ist es wichtig, den nachfolgend abgebildeten Ablauf der Ausführung eines Hystrix Kommandos zu verstehen.

Abbildung .1: Netflix, Hystrix Command Fflow Chart, Web URL: https://github.com/Netflix/Hystrix/wiki/How-it-Works [Stand 2016-05-25]

Abbildung .1: Netflix, Hystrix Command Flow Chart, Web URL: https://github.com/Netflix/Hystrix/wiki/How-it-Works [Stand 2016-05-25]

Die detaillierte Beschreibung des Ablaufs finden Sie hier. Der Grund, warum ich diese Abbildung hier aufgeführt habe ist, dass diese sehr schön zeigt, dass Hystrix nicht nur ein reiner Ciruit Breaker ist. Wie zu erkennen ist, bietet Hystrix ein definiertes Verfahren zur Absicherung eines Netzwerkkommandos. Es besteht mit Hilfe der Hystrix Metriken die Möglichkeit sehr einfach und bequem Antwortzeiten auszuwerten. Durch die Integration konnten wir in unserem Projekt die Antwortzeiten eines Fedora4 Content Repository Servers, eines EMC S3 Object Storage Servers und des lokalen Dateisystems vergleichen. Die Hystrix Metriken konnten wir sehr einfach mittels des Hystrix Dashboards visualisieren und in Echtzeit auswerten. So kann auch in produktiven Umgebungen die Reaktions- bzw. Widerstandsfähigkeit einzelner Systeme optimal bewertet werden. Dies ersetzt natürlich keine umfassende Monitoringlösung, bietet aber die Möglichkeit, die Auslastung einzelner Systeme schnell zu erkennen und richtig zu behandeln.

 

Die Integration

Die Integration von Hystrix ist, wie auch bei den anderen „Platform Services“ Komponenten, einmal mittels der nativen Netflix Bibliothek oder aber auch über das Spring Cloud Projekt möglich. In unserem Projekt haben wir beide Möglichkeiten erfolgreich durchgeführt.Spring Cloud bietet eine sehr einfache und leichte Integration via Annotation:

 

Beispiel:

@HystrixCommand(commandKey = „DMS->EMCS3:findObjectContent“, groupKey = „DMS->EMCS3“)

 

Hierbei wird lediglich der Name des Kommandos und des Threadpools definiert. Es ist über die Zusatzbibliothek hystrix-javanica zusätzlich möglich, alle Konfigurationswerte direkt in der Annotation aufzuführen. Wir haben uns allerdings dazu entschieden, die Konfiguration in der zentralen „application.properties“ Datei durchzuführen.

 

Im Bereich der nativen Netflix Bibliothek ist die Integration ebenfalls sehr leicht. Nach dem Einbinden der Abhängigkeiten hystrix-core und hystrix-metrics-event-stream kann die Integration durchgeführt werden. Die Klasse, mit welcher ein Kommando im Netzwerk ausgeführt wird, muss lediglich die Klasse HystrixCommand erweitern und die Methode run() implementieren. Die Konfiguration erfolgt über die Datei „eureka-client.properties“.

Bei einigen Standardwerten der Konfiguration mussten wir Anpassungen vornehmen, da Hystrix die Sicherung für unseren Anwendungsfall zu schnell ausgelöst hat. Dies ist uns bei Belastungstests mit dem Werkzeug JMeter aufgefallen. Letztendlich konnten wir mit folgenden Einstellungen ein sehr gutes Antwortverhalten bei einer stark belasteten Komponente erzeugen:

 

hystrix.command.default.execution.isolation.strategy=THREAD

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=120000

hystrix.command.default.execution.isolation.thread.maxConcurrentRequests=1024

hystrix.command.default.fallback.isolation.thread.maxConcurrentRequests=1024

hystrix.threadpool.default.coreSize=1024

hystrix.threadpool.default.maxQueueSize=1024

hystrix.threadpool.default.keepAliveTimeMinutes=2

hystrix.threadpool.default.queueSizeRejectionThreshold=15

hystrix.threadpool.default.metrics.rollingStats.numBuckets=12

hystrix.threadpool.default.metrics.rollingStats.timeInMilliseconds=1440  

 

Sich diese Konfigurationswerte genau zu betrachten und diese festzulegen, ist ein wichtiger Schritt bei der Integration von Hystrix. Allerdings muss natürlich jeder selbst entscheiden, welche Werte für welches Kommando sinnvoll sind.

 

Fazit

Die Integration ist, wie bereits bei den anderen „Platform Services“ des Netflix OSS, nicht sehr aufwendig. Dieses Werkzeug, finde ich persönlich, wegen der vielen zusätzlichen Funktionalitäten sehr interessant und nützlich. Es bietet eine standardisierte Lösung, um ein Netzwerkkommando gesichert auszuführen, ein Fallback zur Verfügung zu stellen, einen Cache zu nutzen und Performancemesswerte zu erzeugen. In Zukunft werde ich für mich persönlich daher immer bewerten, ob nicht die Verwendung dieser Bibliothek bei jeglichen Netzwerkzugriffen eines Projektes sinnvoll ist.

Microservices, Load Balancing

Die Prüfung der Skalierbarkeit von Microservices war ein weiteres sehr wichtiges Thema in unserem Microservices Projekt. Im Rahmen unser dazugehörigen Blog Serie möchte ich hier das Thema Load Balancing im Kontext der Microservice Architektur näher beleuchten. Häufig werden im Bereich der Bibliothekssysteme zentrale Dienste, wie zum Beispiel ein zentrales Dokumentenmanagement wie Fedora oder eine zentrale Suche mit Solr oder Elasticsearch benötigt. In unserem Projekt wollten wir herausfinden, wie und mit welchem Aufwand Services dynamisch skaliert werden können. Dies bedeutet, dass in Situationen in welchen die Client Anwendungen durch die Nutzer der Bibliothek stark verwendet werden, die Services dynamisch auf zusätzliche Server installiert und anschließend verwendet werden. Dynamisch bedeutet an dieser Stelle automatisiert und damit ohne Administrations-, Konfigurations- bzw. Entwicklungsaufwand.

Wie in unserem ersten Beitrag beschrieben, bietet die Microservices Architektur unter anderem den Vorteil der einfacheren und genaueren Skalierung einzelner Microservices. Wird nun eine Softwarekomponente bzw. ein Service auf mehrere Server automatisiert installiert, müssen diese auch durch die Anwendungen genutzt werden können. Als Teil der „Platform Services“ bietet der Netflix Open Source Stack (Netflix OSS) auch hier eine sehr gute Lösung. Bevor ich die konkrete Lösung vorstelle, möchte ich noch etwas zur Theorie des Load Balancing sagen. Grundsätzlich gibt es zwei wesentliche Varianten um dieses aufzubauen.

 

Zentrales Load Balancing.

Dabei wird ein zentraler Load Balancer zwischen den Client Anwendungen und den Services aufgebaut. Alle Anfragen der Clients werden über den Load Balancer geroutet und dieser verteilt die Anfragen nach einem bestimmten Verfahren auf die einzelnen Service Instanzen. Ein Nachteil dieser Lösung ist, dass der Load Balancer ein Single Point of Failure ist. Dies bedeutet, dass wenn diese Komponente ausfällt bzw. stark überlastet ist, sie keine Anfragen mehr von den Anwendungen zu den Services weiterleitet.

Zentrales Load Balancing

Zentrales Load Balancing

Dezentrales Load Balancing

Hierbei hält die Client Anwendung alle Informationen, welche Service Instanzen verfügbar sind, bei sich lokal vor. Diese Informationen werden regelmäßig aktualisiert, sodass die aktuelle Situation der verfügbaren Services dem Client jederzeit bekannt ist. Die Client Anwendung entscheidet mit Hilfe eines eingebauten Load Balancing Mechanismus selbst, welche Service Instanz für eine Anfrage verwendet wird. Damit ist keine zentrale Load Balancer Instanz mehr notwendig und es gibt keinen Single Point of Failure. Auch bei dieser Lösung gibt es wiederum Nachteile, dass zum Beispiel die lokale Information, welche Instanzen der Services verfügbar sind, veraltet sein kann.

Dezentrales Load Balancing

Dezentrales Load Balancing

Die einzelnen Load Balancing Verfahren, nach welchem Algorithmus eine von mehreren verfügbaren Service Instanzen ausgewählt wird, möchte ich hier nicht aufführen, da es in diesem Beitrag um die Integration im Bereich der Microservices Architektur geht und nicht um das Load Balancing als solches. Der Netflix OSS bietet mit der Bibliothek Ribbon eine Möglichkeit des dezentralen, client-seitigem Load Balancing. Die Information, welche Service Instanzen auf welchem Server verfügbar sind, basieren auf den Informationen aus der Service Registry Eureka. Durch die Integration von Eureka ist das Load Balancing dynamisch und wird jederzeit an die verfügbaren Instanzen angepasst. Es ist auch möglich, Ribbon ohne Eureka einzusetzen, was hier aber nicht näher erläutert werden soll, da es für den produktiven Einsatz nicht empfohlen werden kann.

 

Unsere Erfahrungen

Die Integration von Ribbon in eine Client Anwendung ist einmal mit der Spring Cloud oder aber durch die Einbindung der nativen Netflix Bibliothek möglich. Bei beiden Varianten gibt es jeweils die Möglichkeit mittels direkter Verwendung eines Ribbon Clients das Load Balancing zu integrieren oder die Methode REST Templates zu definieren und zu verwenden. Beide Varianten unterscheiden sich vom Aufwand nicht. Elegant bei der Template Variante ist aus meiner Sicht die Trennung der Definition der zur Verfügung stehenden Funktionalität und deren Verwendung. So können zentral alle zur Verfügung stehenden Templates definiert und diese anschließend an den unterschiedlichsten Stellen eingesetzt werden. Dies vereinfacht die Wartung der bestehenden Möglichkeiten sehr stark. Allerdings konnten wir beim Einsatz des REST Templates für einen HTTP POST Request mit Multipart Upload nicht erfolgreich umsetzen. Beim Absetzen des HTTP POST Request wurde jeweils folgender Fehler gemeldet:

the request was rejected because no multipart boundary was found

Bisher haben wir noch keine Antwort zu unsere Anfrage nach einer Lösung aus der ribbon usergroup erhalten. Zusätzlich zur Integration im Quellcode muss das Load Balancing noch konfiguriert werden. Hier kann zum Beispiel auch zwischen den möglichen Verteilungsverfahren gewählt werden. Ribbon unterstützt zum Beispiel folgende:

  • RoundRobinRule
  • AvailabilityFilteringRule
  • WeightedResponseTimeRule

Alle Details zur Konfiguration von Ribbon können im Wiki des Projektes nachgelesen werden. Zusammenfassend können wir sagen, dass die Integration von Ribbon in eine Anwendung ohne großen Aufwand umzusetzen ist und sehr zuverlässig funktioniert. Bis auf die Ausnahme des HTTP POST Multipart Request sind wir auf keine weiteren Schwierigkeiten gestoßen.

 

Einsatz des Load Balancing

Unsere Client Anwendungen im Pilotprojekt bietet die Funktion eines Upload von XML Dateien. Diese lädt die Dateien nach der Auswahl im Browser via einer REST Schnittstelle in ein Dokumentenmanagementsystem (Microservice). In die Client Anwendungen haben wir das Load Balancing mit Hilfe der nativen Netflix Bibliothek integriert. In einem Test eines Ausfalls von einem der Dokumentenmanagement Services während des Uploads von 1000 XML Dateien konnten wir zeigen, dass der Upload nicht beeinträchtigt wird. Der Anwender bemerkt nicht, dass zu Beginn des Uploads noch zwei und während des Uploads nur noch eine Service Instanz des Dokumentenmanagement Services die Daten speichert. Ohne den Einsatz von Eureka und Ribbon wäre der Upload bei Ausfall des Dokumentenmanagement Services abgebrochen.

 

Fazit:

Auch für das Thema Load Balancing kann ich den Einsatz für zentrale Services in Kombination mit einer Service Registry nur stark empfehlen. Der Aufwand der Integration in eine Java Anwendung ist meines Erachtens eher gering und lohnt sich. Nach Abschluss der Integration können die Microservices einfach skaliert und die Client Anwendung kann so jederzeit stärker verwendet werden und reagiert robuster auf Ausfälle.

Microservices, Service Registry „Die Zentrale“

Im Rahmen unseres IT Projektes „Microservices“ und der damit verbundenen Blog Serie möchte ich in diesem Beitrag über unserer Erfahrungen mit den „Platform Services“, welche ein zentraler Baustein in der Microservices Architektur sind, berichten. Es sind zusätzliche Dienste welche den Betrieb von zahlreichen Anwendungsservices vereinfachen. Dazu gehören unter anderem

Alle diese Dienste ermöglichen es eine große Anzahl an Microservices zu betreiben und nutzbar zu machen. Diese Auflistung sieht auf den ersten Blick nach sehr viel Aufwand und technischer Infrastruktur aus und beinhaltet Begrifflichkeiten, welche tiefgehendes, technisches Wissen erfordern um die Bedeutung und Notwendigkeit verstehen zu können. Aus diesem Grund möchte ich in den kommenden drei Beiträgen etwas Licht ins Dunkle bringen und versuchen den Mehrwert dieser technischen Services zu erläutern. Beginnen möchte ich mit der Service Registry, weil diese aus meiner Sicht die grundlegendste Komponente ist auf welcher viele der anderen Services aufsetzen.

 

Die Services Registry stellt in gewisser Weise eine Art Telefonzentrale dar , die Clientanwendung, wie zum Beispiel ein Content Management System oder aber eine andere beliebige Webanwendung, anrufen können um nach einem Dienst zufragen, welcher gerade benötigt wird. Tatsächlich fragt die aufrufende Anwendung mit einem Namen wie zum Beispiel: „Suche“ oder „Dokumentenmanagement“ die Service Registry und erhält die Information wie dieser Service zu erreichen ist. Die Information beinhaltet eine vollständige URL und kann als Einstiegspunkt zur Verwendung des Service benutzt werden.

 

Die einfachere und klassische Variante ohne die Verwendung einer Service Registry ist, dass die Client Anwendung die URL auf den Einstiegspunkt selber gespeichert hat. Allerdings gibt es bei dieser klassischen Variante einige Nachteile:

 

  • Die URL ist statisch in der Clientanwendung gepflegt und muss bei Veränderungen der URL mit geändert werden. Zieht der zu nutzende Service auf einen anderen Server um oder ändert sich der TCP/IP Port, muss die Clientanwendung in der Regel mit angepasst werden.
  • Es ist keine Verwendung von clientseitigem Load Balancing möglich. Das bedeutet, selbst wenn der Service auf mehreren Servern eingerichtet ist, kann der Client diese nicht dynamisch nutzen.
  • Es gibt oft keine Echtzeit Übersicht über den aktuellen Stand der zur Verfügung stehenden Services. Es besteht natürlich die Möglichkeit, ein sehr gutes Monitoring einzurichten, was diese Fähigkeit besitzt. Allerdings sind die klassischen Monitoring Lösungen wie zum Beispiel Nagios dafür nicht konzipiert und vorgesehen. In den meisten Fällen sind diese auch so nicht eingerichtet.

 

Diese aufgeführten Nachteile der herkömmlichen Verknüpfung von Clientanwendung und Anwendungsdienst (Service)  zeigen im Umkehrschluss natürlich auch die Vorteile einer Service Registry:

 

  • Zentrale Übersicht aller Service und deren Status
  • Möglichkeit eines Load balancing
  • Keine clientseitige Anpassung bei Service und Infrastruktur Änderungen

 

Aber rechtfertigen diese Vorteile den Aufwand und den Betrieb einer Service Registry? Der Aufwand der Installation einer Service Registry ist sehr gering, da es bereits sehr gute und ausgereifte Produkte gibt:

 

 

Die beiden erst genannten Produkte sind diejenigen mit der höchsten Verbreitung und damit auch die ausgereiftesten. In unserem Projekt haben wir hauptsächlich auf den Netflix OSS gesetzt und daher auf Eureka. Auch wir haben in unserem Pilotprojekt sehr gute Erfahrungen mit Eureka gemacht. Wichtig bei der Verwendung ist, dass die Service Registry nicht wiederum selbst zum Single Point of Failure wird und daher immer mehrfach betrieben werden sollte. Aber auch dieser Aspekt ist mit sehr geringem Aufwand umzusetzen. Ich empfehle für den Einstieg daher ein Spring Boot Projekt mit aktivierter Service Registry, welches im Beispiel Microservices Projekt von Eberhardt Wolff zur Verfügung steht. Sie werden erstaunt sein, mit wie wenig Quellcode die Service Registry umgesetzt ist.

Der Quellcode…

@SpringBootApplication
@EnableEurekaServer
@EnableDiscoveryClient
public class ServiceRegistryApplication {

public static void main(String[] args) {
SpringApplication.run(ServiceRegistryApplication.class, args);
}
}

 

Fazit:

Aus meiner persönlichen Sicht ist der Einsatz einer Service Registry auch ohne die Verwendung der gesamten Microservices Architektur von unschätzbarem Vorteil, sobald mehrere zentrale Services im Hause betrieben werden. Alleine die Tatsache, dass nicht mehr mit jeder Infrastruktur Anpassung die Client Anwendung und die Dokumentation bzw. das Monitoring angepasst werden müssen, sind im Dauerbetrieb mit geringem Personaleinsatz von unschätzbarem Wert. Hinzu kommt, dass wir in unserem Beispiel Projekt sowohl die Anbindung von Java Webanwendungen als auch von reinen HTML / Javascript Anwendungen relativ einfach umsetzen konnten. Wir konnten aus dem weit verbreiteten CMS Typo3 sehr leicht die Service Registry nach einem Service anfragen und diesen anschließend nutzen. Integriert man diese Anfrage Logik zum Beispiel in eine Typo3 Extension und macht diese so nachnutzbar für andere Typo3-Projekte, wird der Aufwand auf alle Projekte betrachtet noch geringer und der Nutzen somit noch größer. Zusätzlich bietet eine Service Registry als Basis der Platform Services weitere Möglichkeiten, welche ebenfalls von unschätzbarem Wert, um stabilen Betrieb von zentralen Services sind.

 

Diese Möglichkeiten werde ich in den kommenden Beiträgen detailliert aufführen und zeigen, wie man zum Beispiel ein bestehendes Fremdsystem, wie zum Beispiel Fedora Content Repository oder Pazpar2-Suche, in eine solche Service-Struktur einfach einbindet, ohne die Produkte selbst anpassen zu müssen.

Ich freue mich daher auf die kommenden Beiträge und hoffe auf zahlreiche Kommentare.

New Urbanism: bei uns, nebenan und vor der Haustür

Am heutigen Samstag, 19. März, verleiht die Notre Dame School of Architecture (Indiana, USA) in einer ganztägigen Zeremonie zum 14. Mal den renommierten Richard H. Driehaus-Preis, den international wichtigsten Preis für Traditionelle Architektur und Neuen Urbanismus. Preisträger der mit 200.000 US-Dollar dotierten Auszeichnung ist in diesem Jahr Scott Merrill, Gründer und Chefdesigner des US-amerikanischen Architekturbüros Merrill, Pastor & Colgan. Er wird gewürdigt für seine originellen Entwürfe, die regionale Besonderheiten der Landschaft ebenso aufnehmen wie klassische Formentraditionen aus allen Epochen und Regionen. Merrills Projekte reichen von Ferienanlagen, Wohnblocks und Büroquartieren über Kirchenbauten, Rathäuser und Stadtparks bis hin zu Tanzclubs oder auch einem Bahnhof für Hochgeschwindigkeitszüge in den Vereinigten Arabischen Emiraten.

Zu wegweisenden Vertretern und Bauten der Traditionallen Architektur und des Neuen Urbanismus, der in den späten 1980er Jahren in den USA entstand, können Sie sich auch über unsere Bestände informieren. Darunter finden sich auch einige Berliner Bauten, wie der im amerikanischen Backsteinstil von Hans Kollhoff errichtete Kollhoff-Tower am Potsdamer Platz oder die 2015 eröffnete Mall of Berlin am Leipziger Platz von Sergei Tchoban, um nur zwei Beispiele zu nennen. Wichtigstes Prinzip des New Urbanism ist die Rückbesinnung auf die Vorteile kleiner, überschaubarer Städte und Gemeinden, die sich an historischen Altstädten orientieren und durch Nachhaltigkeit und hohe Lebensqualität auszeichnen. Wohn- und Geschäftsviertel sollen nicht mehr streng getrennt sein, sondern eine gemeinsame Einheit mit fußgängerfreundlichen Plätzen und Grünflächen bilden, so dass lebenswerte Nachbarschaften entstehen.

Sie möchten mehr über die Umsetzung dieser Ideen und andere städtebauliche und architektonische Highlights in Berlin erfahren? Am 27. April um 16.30 Uhr zeigen wir Ihnen in unserem Workshop „Bauten, Parks und Plätze – Literaturrecherche zur Architektur am Beispiel Berlins“ wie Sie die richtige Lektüre finden. Melden Sie sich gleich hier an!

Ach übrigens: Der große Bruder des Driehaus-Preises – wenn auch nur halb so hoch dotiert – ist der international noch mehr beachtete Pritzker-Architektur-Preis, mit dem zunächst Jay A. Pritzker und nach dessen Tod die Hyatt-Stiftung bereits seit 1979 jährlich Spitzenleistungen der modernen Architektur würdigt. Auch zu diesen Geehrten haben unsere Kataloge einiges zu bieten. Als deutsche Preisträger wurden bisher Gottfried Böhm (1986) und Frei Otto (2005) ausgezeichnet.

Für Informationen über den diesjährigen Preisträger Alejandro Aravena aus Chile, der am 4. April im UNO-Hauptquartier in New York ausgezeichnet wird, dürfen wir Sie an unseren guten Nachbarn, das Iberoamerikanische Institut verweisen.

Wieder Kuben in Guben

Die „Urvilla der Moderne“ des großen Architekten Mies van der Rohe in Guben/Gubin soll wiederauferstehen. Eine Tagung und eine Ausstellung in der Staatsbibliothek geben am 11. März 2016 den Startschuss für das Rekonstruktionsvorhaben.

Mies, Mies, immer nur Mies. Direkt neben der Neuen Nationalgalerie am Kulturforum wird bei einer Tagung am 11. März 2016 eine weitere Ikone des Baukünstlers verhandelt. Im Otto-Braun-Saal der Staatsbibliothek geht es um ein Haus aus Backstein, das der große Architekt der Moderne rund vierzig Jahre zuvor in einen Hang in Guben staffelte. Die Villa Wolf von 1926 gilt mit ihrem offenen Grundriss als die Mies’sche „Urvilla der Moderne“. Gelegen im heute polnischen Teil der Stadt, wurde sie im Zweiten Weltkrieg zerstört, ist darum weitestgehend unbekannt und soll nun als weltweit erstes Mies-Museum wiederaufgebaut werden. Mit der Auftaktveranstaltung, die von einer Ausstellung begleitet wird, stellt Florian Mausbach, Initiator des Projekts und ehemaliger Präsident des Bundesamtes für Bauwesen und Raumordnung, sein Rekonstruktionsvorhaben der Öffentlichkeit vor. Dazu hat er ein Programm zusammengestellt, das mit einer Reihe interessanter Namen aufwartet: Neben den internationalen Mitstreitern kommen renommierte Mies-Experten wie Wita Noack (Haus Lemke) oder Wolf Tegethoff und der ehemalige Finanzminister und „verhinderte Architekt“ Hans Eichel zu Wort. Außerdem spricht Fernando Ramos Galino. Der spanische Architekt hatte in den Achtzigerjahren Mies‘ berühmten Pavillon des Deutschen Reichs für die Weltausstellung von 1929 in Barcelona wiederaufbauen lassen und berichtet nun von dieser Erfahrung.

Aber was war eigentlich das Besondere am Haus Wolf? Die Villa war so etwas wie der erste revolutionäre Schritt Mies van der Rohes hin zum freien Raum. Aus den kleinen „Urkuben“, den Backsteinen, entwickelt er einen großen Kubus. Das Flachdach ermöglichte es dem dritten und letzten Bauhausdirektor, den Grundriss frei zu gestalten. So entstand seine erste radikal modern gestaltete Villa. Die nun der Vergessenheit entzogen werden soll, sagt Florian Mausbach, der das Vorhaben mit dem Satz „Wir wollen einen Schatz ausgraben und wieder bekannt machen“ begründet. Haus Wolf soll das erste und wichtigste Ausstellungsstück des neuen Mies-van-der-Rohe-Museums werden. Damit erledigen sich für den Projektinitiator auch alle Fragen der Rekonstruktionsdebatte.

Studierende der Fachhochschule Potsdam haben auf Basis von Scans der Originalentwürfe aus dem Mies-Archiv des New Yorker MoMA Pläne für den möglichst originalen Wiederaufbau der „Urvilla der Moderne“ angefertigt. Diese sind nun in einer Ausstellung zu sehen, die vom 11. März bis 9. April 2016 im Foyer der Staatsbibliothek gezeigt wird. Bis das fertige 1:1 Modell der Villa Wolf dann steht, sind aber noch einige Schritte nötig. Es gilt, den noch komplett vorhandenen Keller – in dem übrigens ein Großteil der Porzellansammlung des damaligen Bauherren, des Textilfabrikanten Erich Wolfs, in Scherben liegt – archäologisch zu sondieren. Gemeinsam mit polnischen Studierenden der TU Posen werden Studenten der HTW Berlin Ausgrabungen vornehmen. Diese Arbeit ist auch notwendig, um die Daten der Originalpläne zu verifizieren. Vor allem aber gilt es, die Finanzierung zu sichern und die Baukosten von grob geschätzt 2 Millionen Euro zusammenzubringen. Wenn alles gut läuft, könnte 2019 – dem Jahr des 100. Bauhausjubiläums und des 50. Todestags Mies van der Rohes – Baustart sein.

Dieser Text wurde auf der Grundlage eines Interviews mit Florian Mausbach erstellt von unserer Gastautorin Gesine Bahr-Reisinger, Wissenschaftliche Redakteurin der Abteilung Medien und Kommunikation der Stiftung Preußischer Kulturbesitz.