www.wikidata.de-de.nina.az
Dieser Artikel ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Microservices sind ein Architekturmuster der Informationstechnik bei dem komplexe Anwendungssoftware aus unabhangigen Prozessen generiert wird die untereinander mit sprachunabhangigen Programmierschnittstellen kommunizieren Die Dienste sind weitgehend entkoppelt und erledigen eine kleine Aufgabe So ermoglichen sie einen modularen Aufbau von Anwendungssoftware 1 2 Inhaltsverzeichnis 1 Philosophie und Details 2 Typische Bestandteile einer Microservice Architektur 3 Abgrenzung zu SOA 4 Vorteile 5 Nachteile 6 Beispiele 7 Siehe auch 8 Literatur 9 Weblinks 10 EinzelnachweisePhilosophie und Details BearbeitenDer Gedanke hinter Microservices entspricht weitgehend dem der Unix Philosophie Do One Thing and Do It Well frei ubersetzt Erledige nur eine Aufgabe und erledige sie gut Die Dienste sollten ublicherweise die folgenden Eigenschaften haben Die Services konnen einfach ersetzt werden Der Umfang eines Microservices sollte fur jedes Teammitglied uberschaubar sein Ein Microservice sollte vom zustandigen Team ublicherweise 5 bis 7 Entwickler mit vertretbarem Zeitaufwand z B innerhalb eines Monats neu erstellt und ersetzt werden konnen Ein Microservice sollte einen Bounded Context im Sinne von Domain driven Design implementieren Die Dienste haben eine einzige Geschaftsfunktion Sie konnen beispielsweise einen Bestellvorgang die Registrierung oder die Rechnungserstellung umfassen jedoch nicht mehrere dieser Dinge Der Nutzen fur den Benutzer steht im Mittelpunkt Die Kernfunktionalitat sollte fruhzeitig ausgeliefert werden um einen moglichst fruhen Nutzen bereitzustellen Schnittstellen sollten z B uber Humane Registries selbstdokumentierend sein Beispielsweise Swagger fur JSON basierte REST Services Nach der Bereitstellung einer neuen Version des Services muss die alte Version des Endpunktes fur eine bestimmte Zeit weiter bereitgestellt werden Hauptartikel REST Versionierung Ein Microservice wird nur von einem Team entwickelt Die Architektur liegt uber den Microservices und ist auf Grund des Gesetzes von Conway durch die Teamaufteilung sichtbar Alternativ dazu kann ein Team fur mehrere fachlich zusammenhangende Microservices verantwortlich sein Kommunikationsoverhead und Interessenskonflikte zwischen Teams werden auf der Ebene der Architektur behandelt Die Schnittstellen verstecken Implementierungsdetails Es werden dabei bevorzugt Standardverfahren mit geringem Overhead wie REST eingesetzt Es sollte nicht ersichtlich sein mit welcher Architektur ein Microservice selbst implementiert wurde Datenbanken werden nicht von mehreren Services verwendet sondern immer nur von einem einzigen Service Dies betrifft auch Zugriffe uber Views und Stored Procedures Microservices werden gegenuber anderen Services isoliert Jeder Microservice kann eine andere Programmiersprache Datenbank oder einen ganz anderen Technologie Stack nutzen Microservices sollten Abhangigkeiten untereinander vermeiden und wenn dann nur asynchrone Abhangigkeiten haben Jeder Microservice sollte unabhangig von anderen Microservices in Produktion gebracht werden konnen Objekte welche in mehreren Bounded Contexts vorkommen werden in jedem Service getrennt implementiert Beispielsweise wird derselbe Kunde in einem Authentifizierungssystem einem Bestellsystem einem Logistiksystem und einem Rechnungssystem jeweils durch unterschiedliche Objekte reprasentiert da an die Objekte unterschiedliche Anforderungen gestellt werden Microservices werden in getrennten OS Containern virtuellen Maschinen oder Servern ausgeliefert Dies sichert den Service gegenuber einer Uberlastung des Host Systems durch einen anderen Service Wie alle Services mussen auch Microservices sicher sein Microservices sollten dezentralisiert und horizontal skalierbar sein Funktionale Architekturen mit Zustandsfreiheit werden bevorzugt Dies betrifft etwa Caches z B zum Speichern von Benutzer Sessions welche als eigener Service etwa in Form einer In Memory Key Value Datenbank ausgefuhrt werden mussen Microservices isolieren Fehlerereignisse und zustande von anderen Services Logging Monitoring und Operations Datenbanken ermoglichen die Beobachtbarkeit Authentifizierung Autorisierung und Kryptographie sichern die Daten vor ungewunschtem Zugriff Die Grosse eines Microservices wird hierbei dadurch nach unten begrenzt dass die Netzwerkkommunikation zwischen Microservices ressourcenintensiv ausfallen kann und fur jeden Microservice ein eigenes Deployment vorgesehen werden muss Typische Bestandteile einer Microservice Architektur BearbeitenMicroservices benotigen sehr viel Infrastruktur welche durch jeweils eigenstandige Services implementiert wird Fur die Lastverteilung externer HTTP Anfragen von Clienten kommen Load Balancer zum Einsatz Statische Inhalte werden mittels eines Content Delivery Network ausgeliefert Die fur die Geschaftsanforderungen zustandigen Services werden durch eine Reihe von Plattform oder Infrastruktur Services unterstutzt Diese ubernehmen zentrale Aufgaben wie das Anwendungs und Service Monitoring Logging Webservices Operations Datenbanken Konfigurationsmanagement Verschlusselung Autorisierung und Authentifizierung sowie Autoscaling Softwareverteilung A B Testing und Fault Injection Testing FIT Zudem gibt es zentrale Routingdienste welche sich um die Zuordnung von URLs zu Instanzen mit den jeweiligen Diensten kummern Hierzu kommen noch Dienste fur die Datenpersistierung insbesondere Caching relationale Datenbanken und NoSQL Datenbanken sowie BLOB Speicher fur beliebige Dateien Abgrenzung zu SOA BearbeitenSowohl SOA Serviceorientierte Architektur als auch Microservices nutzen Dienste als Architektur Elemente SOA nutzt Dienste um verschiedene Anwendungen zu integrieren Die Kombination der Dienste erfolgt durch Orchestrierung oder Choreografie und Portale konnen eine gemeinsame Benutzerschnittstelle UI fur alle Dienste bieten Microservices strukturieren eine Anwendung durch Dienste Jeder Microservice kann eine Benutzerschnittstelle enthalten und Geschaftsprozesse implementieren wie sie bei SOA in der Orchestrierung zu finden sind Vorteile BearbeitenWeil Microservices unabhangig voneinander verteilt und entwickelt werden konnen konnen Teams unabhangiger voneinander arbeiten Das ermoglicht die Skalierung agiler Entwicklungs Prozesse ohne viel Kommunikations und Koordinationsaufwand zu erzeugen Microservices sind idealerweise klein Dadurch bleiben sie ubersichtlich und leicht weiterentwickelbar Bei Bedarf konnen sie durch eine Neuimplementierung ersetzt werden Oft schleichen sich bei Systemen ungewollte Abhangigkeiten ein Die Abhangigkeiten zwischen Microservices mussen uber die API eingefuhrt werden Das ist aufwandig und passiert nicht aus Versehen Microservices konnen unabhangig voneinander skaliert werden Microservice Systeme konnen gegen den Ausfall anderer Services abgesichert werden so dass das Gesamtsystem robust ist Wenn Schlusseldienste identifiziert wurden konnen im Falle einer Uberlastung unkritische Services reduziert oder abgeschaltet werden um Ressourcen fur kritische Services frei zu machen Nachteile BearbeitenMicroservices werden wegen einiger Merkmale kritisiert Die Abhangigkeiten zwischen den Microservices sind bei einer Microservicearchitektur nicht offensichtlich Es ist oftmals unklar welche Microservices welche anderen Microservices in welcher Version benotigen Die verteilte Architektur erzeugt zusatzliche Komplexitat vor allem Netzwerk Latenzen Lastverteilung oder Fehlertoleranz siehe dazu auch Fallacies of Distributed Computing Da es mehr Systeme gibt die ausfallen konnen als bei monolithischen Services steigt auch die Wahrscheinlichkeit dass mindestens eine Komponente ausfallt Wenn die Microservices wie ublich untereinander synchrone Abhangigkeiten haben wirkt sich der Ausfall eines Microservices unmittelbar auf das Gesamtsystem aus Die Vielzahl an Services macht die Softwareverteilung und das Testen komplexer Der Aufwand fur die Migration bestehender Systeme ist betrachtlich und bedeutet in der Regel auch eine Anpassung der Kommunikationskultur in den beteiligten Organisationen 3 Das Logging und Monitoring wird komplexer da mehrere Systeme involviert sind welche ggf unterschiedliche Logging und Monitoringtechnologien einsetzen Es sollten daher zusatzlich zu dezentralen Logging und Monitoringlosungen zentrale Logging Monitoring und OpsDB Dienste eingesetzt werden Da es sich um ein potenziell weltweit verteiltes System handelt mussen nicht nur unterschiedliche Zeitzonen der Client Anwendungen sondern auch unterschiedliche Zeitzonen der Hosts berucksichtigt werden Eine Zeitsynchronisierung zwischen den Hosts z B mittels NTP oder noch besser PTP und die Verwendung passender Zeit Bibliotheken z B Joda Time oder Noda Time wird damit zwingend notwendig 4 5 Da es sich bei Microservices um eine verteilte Architektur handelt muss aufgrund des CAP Theorems zwischen Verfugbarkeit der Anwendung und der Datenkonsistenz gewahlt werden Monolithische Systeme konnen hingegen sowohl maximal verfugbar als auch maximal konsistent sein Da die Microservices in unterschiedlichen Programmiersprachen und Software Stacks implementiert werden konnen werden sie das oft auch was zu den Nachteilen des polyglotten Programmierens fuhrt Das Know how kann nicht mehr geteilt werden es erhohen sich die Anforderungen an die Entwicklungswerkzeuge und das Plattform Management Zudem muss die Funktionalitat von Bibliotheken teilweise dupliziert werden Beispiele BearbeitenVon folgenden Internetdiensten ist bekannt dass sie Microservices benutzen Google 6 Amazon 7 6 Twitter 6 eBay 6 Netflix 8 The Guardian 9 SoundCloud 10 Spotify 11 Zalando 12 Otto 13 Siehe auch BearbeitenRepresentational State Transfer Self contained SystemsLiteratur Bearbeitendotnetpro Nr 4 2015 S 12 31 Sam Newman Microservices Konzeption und Design mitp 2015 ISBN 978 3 95845 081 3 englisch Building Microservices Designing Fine Grained Systems 2015 Ubersetzt von Knut Lorenzen Christian Horsdal Gammelgaard Microservices in NET Manning Publications 2016 ISBN 978 1 61729 337 5 Chris Richardson Microservices Patterns Manning 2019 ISBN 978 1 61729 454 9 englisch 491 S Weblinks BearbeitenJames Lewis Martin Fowler Microservices 25 Marz 2014 abgerufen am 9 November 2015 englisch Guido Steinacker Von Monolithen und Microservices In Informatik Aktuell 2 Juni 2015 abgerufen am 13 Januar 2018 Einzelnachweise Bearbeiten Eberhard Wolff Microservices Grundlagen flexibler Softwarearchitekturen 2 Auflage ISBN 978 3 86490 555 1 microservices buch de Sam Newman Microservices Konzeption und Design ISBN 978 3 95845 081 3 Microservices In Jens Fromm und Mike Weber Hg 2016 OFIT Trendschau Offentliche Informationstechnologie in der digitalisierten Gesellschaft Berlin Kompetenzzentrum Offentliche IT ISBN 978 3 9816025 2 4 Noah Sussman Falsehoods programmers believe about time In Infinite Undo Abgerufen am 12 April 2017 englisch Noah Sussman More falsehoods programmers believe about time wisdom of the crowd edition In Infinite Undo Abgerufen am 12 April 2017 englisch a b c d Todd Hoff Deep Lessons From Google And EBay On Building Ecosystems Of Microservices In High Scalability 1 Dezember 2015 abgerufen am 11 Marz 2017 Microservices bei Amazon Abgerufen im 1 Januar 1 Microservices bei Netflix Abgerufen im 1 Januar 1 Microservices bei Guardian Abgerufen im 1 Januar 1 Microservices bei SoundCloud Abgerufen im 1 Januar 1 Schedule Thursday 3rd Dec conference In gotocon com Abgerufen am 19 April 2016 From Monolith to Microservices Zalando s Journey In infoq com Abgerufen am 5 Oktober 2016 Guido Steinacker Von Monolithen und Microservices In Informatik Aktuell 2 Juni 2015 abgerufen am 28 April 2016 Abgerufen von https de wikipedia org w index php title Microservices amp oldid 235220239