SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Microservices?
hbieser - CC0 Public Domain - https://pixabay.com/de/termitenhügel-ameisen-landschaft-695209/
Wer braucht eigentlich
Aktuelle Trends der Softwareentwicklung in der Praxis
…und dann erzählte er mir,
dass er einen Monolithen entwickelt.
Copyright 1997 New Line Cinema
Copyright 2015 Scott Adams - http://dilbert.com/strip/2015-12-20
mgkaya - Copyright 2008 - http://www.istockphoto.com/de/foto/verzweifelt-geschäftsmann-gm483617735-7529059
Stefan Macke
http://soa.rocks
anwendungsentwickler
podcast.de
@StefanMacke
BarnImages - CC0 Public Domain - https://pixabay.com/de/apple-geschäft-cafe-kaffee-971117/
BRAIN_PAIN - CC0 Public Domain - https://pixabay.com/de/stehende-kugel-kugel-munition-1138905/
Monam - CC0 Public Domain - https://pixabay.com/de/gerechtigkeit-waage-gleichgewicht-423446/
Budzlife - creativecommons.org/licenses/by/2.0/ - www.flickr.com/photos/budslife/1771179517/ katja - CC0 Public Domain - https://pixabay.com/de/faultier-zweizehenfaultier-regenwald-1448822/
kikatani - CC0 Public Domain - https://pixabay.com/de/elefant-afrika-afrikanischer-elefant-111695/lostmaxi - CC0 Public Domain - https://pixabay.com/de/roter-panda-zoo-tier-1434921/
Microservices
REST
Single Page Apps
NoSQL
Redis Elixir
Mongo
DB
Node.js
Neo4j Groovy
REST
Microservices SPAs
Microservices
Hans - CC0 Public Domain - https://pixabay.com/de/ameisen-waldameisen-hand-gefahr-4239/
Ade Oshineye - Martin tells it like it is, CC BY 2.0, https://commons.wikimedia.org/w/index.php?curid=2938441
Quelle: http://www.martinfowler.com/articles/microservices.html
• Architekturstil
• mehrere kleine Prozesse
• leichtgewichtige Kommunikation
• individuell deploybar
• unterschiedliche Sprachen
• unterschiedliche Persistenz
Martin Fowler
SOA
done right!
Unsplash - CC0 Public Domain - https://pixabay.com/de/bergsteigen-bergsteiger-berg-802099/
Activedia - CC0 Public Domain - https://pixabay.com/de/schildkröte-natur-grün-wild-1309900/ Unsplash - CC0 Public Domain - https://pixabay.com/de/gepard-jagd-leopard-tierwelt-tier-731293/
Arnon Rotem-Gal-Oz - https://twitter.com/arnonrgo
Quelle: http://arnon.me/2014/03/services-microservices-nanoservices/
A nanoservice is a service whose
overhead (communications,
maintenance, and so on) outweighs
its utility.
Arnon
Rotem-Gal-Oz
REST
REST
Pipsimv - CC0 Public Domain - https://pixabay.com/de/faultier-tier-faul-schlafen-359217/
Geek & Poke - http://geek-and-poke.com/geekandpoke/2013/6/14/insulting-made-easy
Roy Fielding - https://twitter.com/fielding
Quelle: https://www.ics.uci.edu/~fielding/pubs/
dissertation/rest_arch_style.htm
Representational State Transfer
• ressourcenorientiert
• zustandslos
• einheitliche Schnittstelle
Roy Fielding
yunjeong - CC0 Public Domain - https://pixabay.com/de/rubber-duck-ente-puppe-546253/bykst - CC0 Public Domain - https://pixabay.com/de/speckstein-stein-grabstein-material-447299/
POST /users?
POST /sessions?
GET /login?
PUT /user/1/login?
User Login
Wert ist zu lang?
Parameter fehlt?
Falsches Format?
Wert ist null?
400 Bad Request
Geek & Poke - http://geek-and-poke.com/geekandpoke/2016/10/18/simply-explained
http://my-api/v4
http://my-api/v1
http://my-api/v2
http://my-api/v3
http://knowyourmeme.com/memes/facepalm
{"Herausgeber":"Xema","Nummer":"1234
-5678-9012-3456","Deckung":2e+6,"Wae
hrung":"EURO","Inhaber":{"Name":"Must
ermann","Vorname":"Max","maennlich":t
rue,"Hobbys":["Reiten","Golfen","Lesen"]
,"Alter":42,"Kinder":[],"Partner":null}}
SPAs
SPAs
atuweb - CC0 Public Domain - https://pixabay.com/de/roter-panda-zoo-hübsch-970798/
<body>
<div ng-app="my-app" />
<script src="myapp.js" />
</body>
NoSQL
baluda - CC0 Public Domain - https://pixabay.com/de/afrika-elefant-text-tier-savanne-466602/
Jenn Vargas - https://creativecommons.org/licenses/by-nc-nd/2.0/ - https://www.flickr.com/photos/foreverdigital/3375076856/
Thaliesin - CC0 Public Domain - https://pixabay.com/de/bauklötze-steine-bunt-spielzeug-1563961/
Fazit
PDPics - CC0 Public Domain - https://pixabay.com/de/rückspiegel-spiegel-fahrrad-167054/
O’Reilly - https://www.oreilly.com/people/35c9606b-5b03-45c2-b4a8-aa3df4910c95
Quelle: https://www.oreilly.com/ideas/are-microservices-for-you-
you-might-be-asking-the-wrong-question
Should I use microservices?
Why do you want to change?
What isn’t working for you?
Sam Newman
Geek & Poke - http://geek-and-poke.com/geekandpoke/2014/11/8/frameworks
Glen Jeffreys - FreeImages.com License - http://de.freeimages.com/photo/the-end-1517690
Microservices?
Wer braucht eigentlich
http://soa.rocks
anwendungsentwickler
podcast.de
@StefanMacke

Weitere ähnliche Inhalte

Ähnlich wie Wer braucht eigentlich Microservices - Aktuelle Trends der Softwareentwicklung in der Praxis

Web Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkWeb Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 Talk
Fabian Lange
 

Ähnlich wie Wer braucht eigentlich Microservices - Aktuelle Trends der Softwareentwicklung in der Praxis (11)

Strategy in a digital world
Strategy in a digital worldStrategy in a digital world
Strategy in a digital world
 
Was nicht passt wird responsive gemacht - Extended Edition
Was nicht passt wird responsive gemacht - Extended EditionWas nicht passt wird responsive gemacht - Extended Edition
Was nicht passt wird responsive gemacht - Extended Edition
 
Von Social-Media zu einem integrierten Informationsmanagement im Unternehmen
Von Social-Media zu einem integrierten Informationsmanagement im UnternehmenVon Social-Media zu einem integrierten Informationsmanagement im Unternehmen
Von Social-Media zu einem integrierten Informationsmanagement im Unternehmen
 
Keynote WissKom12
Keynote WissKom12Keynote WissKom12
Keynote WissKom12
 
Adobe spark 09.04.2019
Adobe spark 09.04.2019Adobe spark 09.04.2019
Adobe spark 09.04.2019
 
Design ist unsichtbar UX Congress Frankfurt 2016
Design ist unsichtbar UX Congress Frankfurt 2016Design ist unsichtbar UX Congress Frankfurt 2016
Design ist unsichtbar UX Congress Frankfurt 2016
 
Web Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkWeb Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 Talk
 
Web 2.0 Technologien in der Bauingenieurausbildung
Web 2.0 Technologien in der BauingenieurausbildungWeb 2.0 Technologien in der Bauingenieurausbildung
Web 2.0 Technologien in der Bauingenieurausbildung
 
Keynote Peter Ganten at Univention Summit 2016
Keynote Peter Ganten at Univention Summit 2016Keynote Peter Ganten at Univention Summit 2016
Keynote Peter Ganten at Univention Summit 2016
 
Nexthamburg Mobile
Nexthamburg MobileNexthamburg Mobile
Nexthamburg Mobile
 
Sicherheitsbetrachtung der Cloudifizierung von Smart- Devices
Sicherheitsbetrachtung der Cloudifizierung von Smart- DevicesSicherheitsbetrachtung der Cloudifizierung von Smart- Devices
Sicherheitsbetrachtung der Cloudifizierung von Smart- Devices
 

Wer braucht eigentlich Microservices - Aktuelle Trends der Softwareentwicklung in der Praxis

Hinweis der Redaktion

  1. Herzlich Willkommen zum ersten Vortrag der SEROM 2016! :-D Im Sinne des Konferenzthemas möchte ich über die Alltagstauglichkeit moderner Technologien im Mittelstand sprechen.
  2. Auf den „großen“ Konferenzen (z.B. JAX, BASTA, RubyConf) findet man aktuelle Beispiele für Vorträge zu allerlei modernen Themen.
  3. Da kann man sich schon komisch vorkommen, wenn man nicht die neusten Technologien einsetzt.
  4. Manchmal denke ich, dass der Einsatz der Technologien um ihrer selbst Willen erfolgt und eigentlich gar kein Problem löst.
  5. Also ist das alles auch relevant für mittelständische Betriebe im Oldenburger Münsterland?
  6. Ich arbeite in genau solch einem Unternehmen.
  7. Ich bin Softwarearchitekt und -entwickler in einem mittelständischen Unternehmen (ca. 2km Luftlinie vom Fizz entfernt).
  8. Und wir entwickeln weniger „moderne“ Webanwendungen, sondern „klassische“ Enterprise-Software. Bei uns wird noch „richtig“ gearbeitet!
  9. Das ist übrigens mein Arbeitsplatz.
  10. Unser Kernprodukt ist VERSIS…
  11. …auf Basis von Adabas/Natural.
  12. Und VERSIS ist kein moderner Web-Hipster, sondern eher der Linux-Greybeard. VERSIS dürfte sogar schon Auto fahren ;-)
  13. Das bedeutet nicht, dass ich etwas gegen moderne Themen habe! Im Gegenteil: Ich finde sie richtig spannend!
  14. Ich bin nur der Meinung, dass man nicht jeden Trend mitmachen sollte ohne nachzudenken. Es gibt keine Silver Bullet, die alle Probleme löst.
  15. Jede Technologie hat Vor- und Nachteile. Und ich fokussiere heute mal die Nachteile der aktuellen Trends.
  16. Ich habe 20 Minuten Zeit, daher kann ich leider nicht alle Trends „bashen“, sondern muss eine Auswahl treffen.
  17. Es gibt zu jedem Thema immer eine kurze Erklärung, dann werden mögliche Alternativen/Vorgänger genannt und zum Schluss werden einige Nachteile gezeigt.
  18. Dies ist eine Architekturskizze mit den genannten Technologien (REST, Microservices, SPA, NoSQL).
  19. Fangen wir an mit dem aktuellen Ober-Hype-Thema Microservices.
  20. Was sind eigentlich Microservices? Martin Fowler fasst in seinem Artikel die zentralen Eigenschaften zusammen.
  21. Und hier noch eine kurze und knackige Zusammenfassung! I guess it is easier to use a new name (Microservices) rather than say that this is what SOA actually meant (http://arnon.me/2014/03/services-microservices-nanoservices/)
  22. Die „klassische“ Alternative zu Microservices wäre der gute alte Monolith.
  23. Im Vergleich zu direkten Methodenaufrufen (1ns) im Monolithen sind Aufrufe per HTTP enorm langsam (10.000ns). Das spielt für einzelne Benutzer wahrscheinlich keine Rolle, aber für Massenprozesse sicherlich. Siehe auch: https://gist.github.com/jboner/2841832 http://java-is-the-new-c.blogspot.de/2015/06/dont-rest-revisiting-rpc-performance.html http://stackoverflow.com/questions/27248559/does-java-take-time-to-call-a-method https://plumbr.eu/blog/performance-blog/how-expensive-is-a-method-call-in-java
  24. Die Option, Microservices in unterschiedlichen Technologien zu entwickeln, mag sich für Entwickler spannend anhören, aber welches Unternehmen will das wirklich? Außerdem sind technische Hilfen (wie z.B. automatische Refactorings) ggfs. technologieübergreifend nicht möglich.
  25. Durch die mehreren Sprachen wird eine komplexere Infrastruktur nötig, z.B. mehrere Build-Tools, Deployment-Pipelines, API-Versionierung. Das geht bei sog. „Nanoservices“ noch weiter. Das gezeigte Zitat fasst die Sinnhaftigkeit dieses Ansatzs gut zusammen.
  26. Ein häufiges Beispiel für Vorteile von Microservices ist der mögliche Ausfall einzelner Systemteile. Beispiel Netflix: Empfehlungen sind weg -> Rest der Anwendung läuft weiter. Das ist nett, aber was ist in einer Enterprise-Anwendung, wenn ein zentraler Service fehlt? Welche echte Anwendung besteht aus hauptsächlich optionalen Komponenten?
  27. Weiter geht‘s mit dem nächsten großen Thema: Representational State Transfer.
  28. Heutzutage ist es schon fast eine Beleidigung, wenn man nicht „restful“ entwickelt.
  29. Doch was ist REST eigentlich genau? REST ist ein Architekturprinzip für verteilte Systeme, das die Grundlage des WWW bildet. Häufig wird JSON als Format für den Datenaustausch verwendet.
  30. Die Alternative zu REST ist „klassisches“ SOAP mit XML-Nachrichten.
  31. Ich vergleiche SOAP mit statischer Typisierung und REST mit dynamischer. Bei REST gibt es so gut wie keine Validierung der Nachrichten, Services sind schlecht dokumentierbar und eine Codegenerierung wie bei SOAP ist praktisch nicht möglich.
  32. Das „Uniform Interface“ ist eine tolle Idee, doch nicht jede Aktion lässt sich sinnvoll als CRUD-Operation abbilden. Bitte nicht einfach alle Entitäten komplett über REST freigeben -> Geheimnisprinzip verletzt!
  33. Die Kennzeichnung von Fehlersituationen ist auch schwierig, da sich nicht alle Situationen auf HTTP-Statuscodes abbilden lassen.
  34. Die angeblich so tolle „lose Kopplung“ wird in der Praxis auch selten benötigt. Wann werden z.B. Server und Client unabhängig voneinander weiterentwickelt?
  35. Stattdessen landet man meistens in der API-Versionierungshölle.
  36. Exkurs: JSON (das häufig als Austauschformat verwendet wird) kann im Vergleich zu XML nicht spezifiziert/validiert werden. Es sind (aufwändige) dynamische Tests nötig, um Änderungen mitzubekommen.
  37. Das nächste Thema sind die „Single Page Apps“.
  38. Single Page Apps sind Webanwendungen, die aus einer einzigen HTML-Datei bestehen und den eigentlich Inhalt dynamisch nachladen.
  39. So könnte eine Seite aussehen, die gerade vom Browser geöffnet wurde.
  40. Erst ein paar Sekunden später sind die eigentlichen Inhalte (inkl. Menüeinträge) sichtbar.
  41. Die Alternative zu SPAs sind „klassische“ serverbasierte Webanwendungen, die den Browser nur zur Darstellung der Inhalte nutzen.
  42. Da die Logik im Client abläuft, hat dieser vollen Zugriff auf den Code. Das könnte ein Sicherheitsproblem sein.
  43. Zumindest bei der Validierung kommt man nicht drum herum, diese doppelt zu implementieren: im Server und im Client. Außerdem ist meist ein „Polyglot Programming“ nötig, da die Backends oft in anderen Sprachen entwickelt werden (z.B. Java, C#).
  44. Ggfs. führt der intensive Einsatz von JavaScript noch zu anderen Problemen: Performanceprobleme im lokalen Browser Browser-Controls funktionieren nicht mehr Seite läuft gar nicht ohne JavaScript Suchmaschinen „sehen“ den Inhalt nicht
  45. Und das letzte Thema ist der große Bereich der NoSQL-Datenbanken.
  46. Unter NoSQL werden verschiedene Konzepte bei der Datenhaltung zusammengefasst: Key-Value-Stores (Redis) Spaltenorientierte Datenbanken (Cassandra) Objektorientierte Datenbanken (db4o) Dokumentendatenbanken (MongoDB) Graphendatenbanken (neo4j)
  47. Die Alternative sind die guten alten relationalen Datenbanken wie Oracle, SQL Server etc.
  48. Ein zentraler Nachteil der verschiedenen nicht-relationalen Datenbanken ist, dass es keine einheitliche Abfragesprache gibt. Ggfs. muss man für jedes System eine individuelle Sprache lernen.
  49. Die meisten NoSQL-Datenbanken unterstützen keine Transaktionen. Die werden in vielen Anwendungen aber benötigt.
  50. Bei vielen NoSQL-Datenbanken ist der Vorteil der Schemalosigkeit gleichzeitig ein Nachteil, weil die Toolunterstützung nicht so gut ist. Außerdem können Unsicherheit bzgl. der tatsächlichen Daten, mangelnde Integrität und schlechte Performance die Folge sein. Siehe auch: http://de.slideshare.net/infinitegraph/schema-meetupfeb2014key
  51. Damit komme ich auch schon zum Fazit des Vortrags.
  52. Die vorgestellten Technologien bieten viele neue Chancen und eröffnen ganz neue Möglichkeiten bei der Softwareentwicklung. Nicht umsonst setzen sie viele Top-Unternehmen ein.
  53. Anstatt einfach so auf den Trend-Zug aufzuspringen, sollte man sich zunächst überlegen, was man sich dadurch erhofft.
  54. Und das heißt nicht, dass man jeden Trend mitmachen und seine Software alle 2 Jahre runderneuern muss.