SlideShare ist ein Scribd-Unternehmen logo
1 von 174
Downloaden Sie, um offline zu lesen
#WISSENTEILEN
Hands-On
Microservices
Arne Limburg & Lars Röwekamp
@arneLimburg | @mobileLarson | @_openknowledge
#WISSENTEILEN
Was genau ist eigentlich ein guter
Microservice?
#WISSENTEILEN
Functional Decompensation
Single Responsibility Principle
Share nothing*
Consumer Contracts (a.k.a. Interfaces)
Lightweight Communication
Independently develop, test, deploy, run
Heterogeneous (a.k.a. Polyglot)
*share as little as possible
#WISSENTEILEN
Bussiness
Focused
*time-to-market
#WISSENTEILEN
#WISSENTEILEN
<set-up />
#WISSENTEILEN
Service Design
#WISSENTEILEN
Aufteilen nach
Domänen
Objekten
Service
Design
#WISSENTEILEN
Aufteilen nach
Domänen
Objekten
Service
Design
#WISSENTEILEN
„If every service has to
be updated at the same
time it’s not loosely
coupled.“
Adiran Cockcroft
#WISSENTEILEN
„If you have to know
to much about
surrounding services
you don‘t have a
bounded context.“
Adiran Cockcroft
#WISSENTEILEN
Aufteilen nach
Domänen
Objekten
Service
Design
#WISSENTEILEN
„Loosely coupled
service oriented
architecture with
bounded contexts.“
Adiran Cockcroft
#WISSENTEILEN
Bounded Context?
• Klare Grenzen
• Business-Prozesse
• Inkonsistenzen vermeiden
• e.g. „check out“
• e.g. „search products“
• e.g. „my recommendations“
#WISSENTEILEN
Aufteilen nach
Bounded
Contexts
Service
Design
#WISSENTEILEN
Aufteilen nach
Bounded
Contexts
Service
Design
Was ist mit gemeinsam benutzen Objekten?
#WISSENTEILEN
Aufteilen nach
Bounded
Contexts
Service
Design
Sind die Objekte wirklich identisch
oder heißen sie nur (zufällig) gleich?
#WISSENTEILEN
Aufteilen nach
Bounded
Contexts
Service
Design
Auch syntaktisch identische Objekte können
zu unterschiedlichen Services gehören
#WISSENTEILEN
Service
Design
Herausforderung:
Daten konsistent?
#WISSENTEILEN
Service
Design
Herausforderung:
Daten konsistent
• einen Data-Owner
definieren
• schreibend nur
via Data-Owner
#WISSENTEILEN
Web Shop
#WISSENTEILEN
#WISSENTEILEN
Communication
#WISSENTEILEN
Wie kommunizieren Services untereinander?
#WISSENTEILEN
#WISSENTEILEN
Search
Idee:
Ein Search-Service
liefert Suchergebnisse
#WISSENTEILEN
Search
Idee:
Ein Search-Service
liefert Suchergebnisse
RESTfull
• Resources via URI
• State Transfer via http Methods
• Headers, Caches, Status-Codes …
#WISSENTEILEN
Search
https://ok-shop.de/search?query= …
Idee:
Ein Search-Service
#WISSENTEILEN
Search
ok 200
[
…
„list of products“
…
]
Idee:
Ein Search-Service
#WISSENTEILEN
Search
no content 204
[ ]
Idee:
Ein Search-Service
#WISSENTEILEN
Search
Super
Search
?
Herausforderung:
Der aktuelle Search-Service
soll um einen zweiten
SuperSearch-Service
ergänzt werden.
#WISSENTEILEN
Search
Super
Search
search?query= … supersearch?query= …
Koordination der Aufrufe
Aggregation der Ergebnisse
Resilience im “Fall des Falles“
btw: starre Kopplung
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
simplesearch?query= … supersearch?query= …
Search
API
search?query= …
Koordination der Aufrufe
Aggregation der Ergebnisse
Resilience im “Fall des Falles“
btw: starre Kopplung
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
search?query= …
Search
API
Aggregation der Ergebnisse
Koordination der Aufrufe
Resilience im “Fall des Falles“Search MQ Result MQ
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
User gibt Suchbegriff ein …
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
search?query= …
Search
API
Search MQ Result MQ
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
„Search“ Msg
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ „Simple Search“ Result Msg
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ „Super Search“ Result Msg
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
Neue Idee:
zwei Search-Services
#WISSENTEILEN
Simple
Search
Super
Search
Search
API
Search MQ Result MQ
ok 200
[
…
„merged list
of products“
…
]
Neue Idee:
zwei Search-Services
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
Versioning
#WISSENTEILEN
TOLERANT READER PATTERN
http://www.example.com/addresses/42
àLiefert Adresse
{
street: {
"name": "Poststraße",
"number": "1",
},
"city": "26122 Oldenburg"
}
#WISSENTEILEN
TOLERANT READER PATTERN
http://www.example.com/addresses/42
Attribut hinzufügen
{
street: {
"name": "Poststraße",
"number": "1",
"additionalAdressLine": "2. Obergeschoss"
},
"city": "26122 Oldenburg"
}
#WISSENTEILEN
http://www.example.com/addresses/42
Client erwartet
{
street: {
"name": "Poststraße",
"number": "1",
}...
}
TOLERANT READER PATTERN
Server schickt
{
street: {
"name": "Poststraße",
"number": "1",
"additionalAdressLine":
"2. Obergeschoss"
}...
}
#WISSENTEILEN
TOLERANT READER PATTERN
http://www.example.com/addresses/42
Attribut-Umbenennung
{
street: {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1",
},
"city": "26122 Oldenburg"
}
#WISSENTEILEN
TOLERANT READER PATTERN
http://www.example.com/addresses/42
àAbwärtskompatible Änderungen: Umbenennen durch Kopieren
{
street: {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1",
},
"city": "26122 Oldenburg"
}
#WISSENTEILEN
Photo by Irene Fertik, USC News Service. Copyright 1994, USC.
„Be conservative in what you do,
Be liberal in what you accept
from others“
RFC 793, Robustness Principal (John Postel)
#WISSENTEILEN
Es darf nichts entfernt werden
Keine Veränderung von Verarbeitungsregel
Optionales darf nie Required werden
http://zalando.github.io/restful-api-guidelines
Alles was hinzugefügt wird, muss optional sein
#WISSENTEILEN
http://www.example.com/addresses/42
Client erwartet
{
street: {
"name": "Poststraße",
"number": "1",
}...
}
MAGNANIMOUS WRITER PATTERN
Server schickt
{
street: {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1“
}...
}
http://tenderware.blogspot.de/2011/05/magnanimous-writer.html
#WISSENTEILEN
http://www.example.com/addresses/42
Client erwartet
{
street: {
"streetName": "Poststraße",
"houseNumber": "1",
}...
}
MAGNANIMOUS WRITER PATTERN
Server schickt
{
street: {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1“
}...
}
http://tenderware.blogspot.de/2011/05/magnanimous-writer.html
#WISSENTEILEN
PUT http://www.example.com/addresses/42
Client schickt
{
street: {
"name": "Poststraße",
"number": "1",
}...
}
MAGNANIMOUS WRITER PATTERN
Server erwartet
http://tenderware.blogspot.de/2011/05/magnanimous-writer.html
#WISSENTEILEN
MAGNANIMOUS WRITER PATTERN
PUT http://www.example.com/addresses/42
Client schickt
{
street: {
"name": "Poststraße",
"number": "1",
}...
}
http://tenderware.blogspot.de/2011/05/magnanimous-writer.html
Server erwartet
{
street: {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1“
}...
}
oder
oder
#WISSENTEILEN
MAGNANIMOUS WRITER PATTERN
PUT http://www.example.com/addresses/42
Client schickt
{
street: {
"streetName": "Poststraße",
"houseNumber": "1",
}...
}
http://tenderware.blogspot.de/2011/05/magnanimous-writer.html
Server erwartet
{
street: {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1“
}...
}
oder
oder
#WISSENTEILEN
ABWÄRTSKOMPATIBILITÄT
http://www.example.com/addresses/42
àAbwärtskompatible Änderungen: Umbenennen durch Kopieren
{
street: {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1",
},
"city": "26122 Oldenburg"
}
Geht da noch mehr?
#WISSENTEILEN
ABWÄRTSKOMPATIBILITÄT
http://www.example.com/addresses/42
àZusammenführen und Teilen von Attributen
{
street: {
...
"streetName": "Poststraße",
"houseNumber": "1",
"addressLine1": "Poststraße 1",
}
...
}
#WISSENTEILEN
ABWÄRTSKOMPATIBILITÄT
http://www.example.com/addresses/42
àHerausforderungen: Zusammenführen von Attributen
{
street: {
...
"streetName": "Poststraße",
"houseNumber": "1",
"addressLine1": "Poststraße 1",
}
...
}
#WISSENTEILEN
ABWÄRTSKOMPATIBILITÄT
http://www.example.com/addresses/42
àHerausforderungen: Teilen von Attributen
{
street: {
...
"addressLine1": "Poststraße 1",
}
"city": "26122 Oldenburg",
"zipCode": "26122",
"cityName": "Oldenburg"
}
#WISSENTEILEN
ABWÄRTSKOMPATIBILITÄT
http://www.example.com/addresses/42
àHerausforderungen: Ebene von Attributen ändern
{
street: {
...
"addressLine1": "Poststraße 1"
}
"addressLine1": "Poststraße 1",
...
}
#WISSENTEILEN
ABWÄRTSKOMPATIBILITÄT
http://www.example.com/addresses/42
àHerausforderungen: Ebene von Attributen ändern
{
...
"zipCode": "26122",
"cityName": "Oldenburg",
"location": {
"zipCode": "26122",
"cityName": "Oldenburg"
}
}
#WISSENTEILEN
ABWÄRTSKOMPATIBILITÄT
http://www.example.com/addresses/42
àHerausforderungen: Ebene von Attributen ändern
{
...
"zipCode": "26122",
"cityName": "Oldenburg",
"location": {
"zipCode": "26122",
"cityName": "Oldenburg"
}
}
Bei jeder Modelländerung muss
eine Migrationsstrategie
einbezogen werden!
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
ABWÄRTSKOMPATIBILITÄT
{
street: {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1",
"addressLine1": "Post... 1",
"addressLine2": ""
}
"addressLine1": "Poststraße 1",
"addressLine2": "",
"city": "26122 Oldenburg",
"zipCode": "26122",
"cityName": "Oldenburg",
"location": {
"zipCode": "26122",
"cityName": "Oldenburg"
}
}
http://www.example.com/v1/addresses/42
àBisher nur abwärtskompatible Änderungen
#WISSENTEILEN
ABWÄRTSKOMPATIBILITÄT
{
street: {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1",
"addressLine1": "Post... 1",
"addressLine2": ""
}
"addressLine1": "Poststraße 1",
"addressLine2": "",
"city": "26122 Oldenburg",
"zipCode": "26122",
"cityName": "Oldenburg",
"location": {
"zipCode": "26122",
"cityName": "Oldenburg"
}
}
http://www.example.com/v1/addresses/42
àViele Attribute deprecated
#WISSENTEILEN
WEITERENTWICKLUNG
{ "street": {
"name": "Poststraße",
"streetName": "Poststraße",
"number": "1",
"houseNumber": "1",
"addressLine1": "Post... 1",
"addressLine2": ""
},
"addressLine1": "Poststraße 1",
"addressLine2": "",
"city": "26122 Oldenburg",
"zipCode": "26122",
"cityName": "Oldenburg",
"location": {
"zipCode": "26122",
"cityName": "Oldenburg"
}
}
Schnittstelle Schnittstelle {
"addressLine1": "Poststraße 1",
"addressLine2": "",
"location": {
"zipCode": "26122",
"cityName": "Oldenburg"
}
}
V1 V2-SNAPSHOT
#WISSENTEILEN
Data Consistency
#WISSENTEILEN
#WISSENTEILEN
Checkout
Idee:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Orders
#WISSENTEILEN
Checkout
Idee:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Orders
Herausforderung:
Wie kommen die notwendigen
Daten zum Checkout-Service?
#WISSENTEILEN
Checkout
Idee:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Datenversorgung:
Zu dem Zweck hält der
Checkout-Service ein
Replikat der notwendigen
Daten*.
Orders
Preferred Delivery Address
Preferred Payment Method*ggf. als eigene Domänen-Repräsentation
#WISSENTEILEN
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Idee:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Herausforderung:
Aber was ist, wenn die
bevorzugte Lieferadresse bzw.
Zahlungsmethode nicht zur
Anwendung kommen soll?
#WISSENTEILEN
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Idee:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Alternative Adresse:
… im „Ausnahmefall“ wird der
Address-Service zur Auswahl
einer anderen Adresse heran-
gezogen.
#WISSENTEILEN
Checkout
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
POST https://ok-shop.de/orders
Orders
Preferred Delivery Address
Preferred Payment Method
#WISSENTEILEN
Checkout
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
201 created
Location: …/orders/1234
Orders
Preferred Delivery Address
Preferred Payment Method
#WISSENTEILEN
Address
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
#WISSENTEILEN
Address
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
GET …/addresses
(list all addresses)
#WISSENTEILEN
Address
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
200 ok
[
„list of
addresses“
]
#WISSENTEILEN
Address
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
PUT …/addresses/123
(change pref. delivery address)
#WISSENTEILEN
Address
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
204 no content
[ ]
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
pref. delivery
address changed
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
pref. delivery address changed
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
pref. delivery
address changed
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Checkout
Orders
Preferred Delivery Address
Preffered Payment Method
Idee:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Herausforderung:
Was ist, wenn eine neue
Adresse verwendet werden
soll?
#WISSENTEILEN
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Idee:
Der gesamte Bestellvorgang
kann im „Normalfall“ mit Hilfe
des Checkout-Service
abgehandelt werden.
Neue Adresse anlegen:
… neue Adressen werden über
den Address-Service angelegt
und im Anschluss repliziert.
#WISSENTEILEN
Address
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
POST …/addresses/
(add new pref. delivery address)
#WISSENTEILEN
Address
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
201 created
Location ...
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
pref. delivery
address changed
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
pref. delivery address changed
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
pref. delivery
address changed
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Address MQ
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service
Herausforderung:
Und was ist, wenn der
Address-Service nicht
verfügbar ist?
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service
Fachlicher Workaround :
z.B. durch Setzen der Adresse
nur für die aktuelle
Bestellung via UI.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
POST …/orders/
(with typed in address)
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service
Fachlicher Workaround :
z.B. durch Setzen der Adresse
nur für die aktuelle
Bestellung via UI.
#WISSENTEILEN
Address Checkout
Orders
Preferred Delivery Address
Preferred Payment Method
Addresses
Preferred Delivery Address
201 created
Location …
Idee:
Im „Normalfall“ nur der
Checkout-Service.
Im „Ausnahmefall“ zusätzlich
der Address-Service
Fachlicher Workaround :
z.B. durch Setzen der Adresse
nur für die aktuelle
Bestellung via UI.
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
Security
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
Product
Idee:
Ein Product-Service liefert
zu empfehlende Produkte
oder alternativ die Liste der
Bestseller.
Product
nicht eingeloggt eingeloggt
gutes Service Design:
Ein Service hat genau eine
fachlich Verantwortlichkeit
und ein dazu passendes
Domänen Modell
#WISSENTEILEN
Neue Idee:
Wenn nicht eingeloggt,
liefert ein Bestseller-Service
die Liste der Top-10.
Wenn eingeloggt, liefert ein
Recommendation-Service
zu empfehlende Produkte.
Bestseller Recomm
nicht eingeloggt eingeloggt
#WISSENTEILEN
Herausforderungen:
Wer stellt fest, ob
eingeloggt oder nicht
(UI vs. Services)?
Wie kommen die Login-
Informationen zum
Recommendation-Service?
Wie werden „Session“ Info
verteilt, wenn mehrere Services
in einen Call involviert sind
(Context Propagation)?
Bestseller Recomm
nicht eingeloggt eingeloggt
#WISSENTEILEN
Exkurs: Sicher ist sicher! Sicher?
• Server based Security
via Session auf dem Server
• Token based Security
via Austausch von Token
#WISSENTEILEN
Server
based
Security
#WISSENTEILEN
Token
based
Security
#WISSENTEILEN
Exkurs: Sicher ist sicher! Sicher?
JWT (JSON Web Token)
• neue, einfache und kompakte Specs
• Token plus public & private „Claims“
• digitale Signatur und/oder Encryption
• als Bearer Token und für SSO
#WISSENTEILEN
#WISSENTEILEN
Herausforderungen:
Wer stellt fest, ob
eingeloggt oder nicht
(UI vs. Services)?
Wie kommen die Login-
Informationen zum
Recommendation-Service?
Wie werden „Session“ Info
verteilt, wenn mehrere Services
in einen Call involviert sind
(Context Propagation)?
Bestseller Recomm
nicht eingeloggt eingeloggt
#WISSENTEILEN
Bestseller Recomm
Neue Idee:
Zwei Services plus
API-Service als Weiche.
Recomm
API
#WISSENTEILEN
Bestseller Recomm
Neue Idee:
Zwei Services plus
API-Service als Weiche.
Recomm
API
Eingeloggt? Nein.
Recommendations?
#WISSENTEILEN
Bestseller Recomm
Neue Idee:
Zwei Services plus
API-Service als Weiche.
Recomm
API
Bestseller
#WISSENTEILEN
Bestseller Recomm
Neue Idee:
Zwei Services plus
API-Service als Weiche.
Recomm
API
Auth
Provider
login
#WISSENTEILEN
Bestseller Recomm
Neue Idee:
Zwei Services plus
API-Service als Weiche.
Recomm
API
Auth
Provider
ok & Token
#WISSENTEILEN
Bestseller Recomm
Neue Idee:
Zwei Services plus
API-Service als Weiche.
Recomm
API
Auth
Provider
Recommendations?
Eingeloggt? Ja.
#WISSENTEILEN
Bestseller Recomm
Neue Idee:
Zwei Services plus
API-Service als Weiche.
Recomm
API
Auth
Provider
User? Role?
#WISSENTEILEN
Bestseller Recomm
Neue Idee:
Zwei Services plus
API-Service als Weiche.
Recomm
API
Auth
Provider
Recommendations für User
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
Monitoring
#WISSENTEILEN
#WISSENTEILEN
Search
Idee:
Bei einer Suche durch den
Search-Service wird neben
den Treffern auch deren
Verfügbarkeit angezeigt.
gutes Service Design:
Ein Service hat genau eine
fachlich Verantwortlichkeit
und ein dazu passendes
Domänen Modell
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Bei einer Suche wird neben
den Treffern auch deren
Verfügbarkeit angezeigt.
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Herausforderung:
Performance ist deutlich
schlechter als erwartet!
Wo liegt das Problem?
Und was ist eigentlich
„passiert“?
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Tracing:
Unique Trace ID wird
als „Klammer“ erzeugt
und durch den gesamten
Aufruf geschleust.
id
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Tracing:
Unique Trace ID wird
als „Klammer“ erzeugt
und durch den gesamten
Aufruf geschleust.
id
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Tracing:
Unique Trace ID wird
als „Klammer“ erzeugt
und durch den gesamten
Aufruf geschleust.
id
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Tracing:
Unique Trace ID wird
als „Klammer“ erzeugt
und durch den gesamten
Aufruf geschleust.
id
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Tracing:
Unique Trace ID wird
als „Klammer“ erzeugt
und durch den gesamten
Aufruf geschleust.
id
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Tracing:
Unique Trace ID wird
als „Klammer“ erzeugt
und durch den gesamten
Aufruf geschleust.
id
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Tracing:
Unique Trace ID wird
als „Klammer“ erzeugt
und durch den gesamten
Aufruf geschleust.
id
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Tracing:
Unique Trace ID wird
als „Klammer“ erzeugt
und durch den gesamten
Aufruf geschleust.
id
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Tracing:
Unique Trace ID wird
als „Klammer“ erzeugt
und durch den gesamten
Aufruf geschleust.
id
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Herausforderung:
Service liefert nicht das
erwartete Ergebnis. Wo
genau liegt das Problem?
Und was ist eigentlich im
Detail passiert?
#WISSENTEILEN
Search Inventory
Search
API
Koordination der Aufrufe
Aggregation der Ergebnisse
Neue Idee:
Ein Search-Service liefert die
Suchergebnisse.
Ein Inventory-Service liefert
die Verfügbarkeit.
Distributed Logging:
Die Logs der einzelnen
Services werden in einem
„Topf“ aggregiert und
ausgewertet.
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
Resilience
#WISSENTEILEN
#WISSENTEILEN
Recomm
Idee:
Ein Recomm*-Service liefert
zu empfehlende Produkte.
*PPT-kompatible Version von „Recommendations-Service“
#WISSENTEILEN
Recomm
Idee:
Ein Recomm*-Service liefert
zu empfehlende Produkte.
*PPT-kompatible Version von „Recommendations-Service“
Herausforderung:
Aber was ist, wenn der
Recomm-Service
einmal ausfällt?
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
Recomm
Idee:
Ein Recomm-Service liefert
zu empfehlende Produkte.
Bestseller
Resilience:
Im Falles eines Ausfalls wird
auf einen Bestseller-Service
ausgewichen.
#WISSENTEILEN
Bestseller Recomm
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback.
Recomm
API
#WISSENTEILEN
Bestseller Personal
Recomm
API
Eingeloggt? Ja.
„Personal“ verfügbar? Ja.
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback. Recommendations?
#WISSENTEILEN
Bestseller Personal
Recomm
API
Eingeloggt? Ja.
„Personal“ verfügbar? Ja.
Recommendations für User X?
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback.
#WISSENTEILEN
Bestseller Personal
Recomm
API
Recommendations für User X
Eingeloggt? Ja.
„Personal“ verfügbar? Ja.
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback.
#WISSENTEILEN
Bestseller Personal
Recomm
API
Eingeloggt? Ja.
„Personal“ verfügbar? Nein.
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback. Recommendations?
#WISSENTEILEN
Bestseller Personal
Recomm
API
Eingeloggt? Ja.
„Personal“ verfügbar? Nein.
Bestseller?
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback.
#WISSENTEILEN
Bestseller Personal
Recomm
API
Bestseller
Eingeloggt? Ja.
„Personal“ verfügbar? Nein.
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback.
#WISSENTEILEN
Bestseller Recomm
Recomm
API
Eingeloggt? Ja.
„Personal“ verfügbar? Nein.
„Bestseller“verfügbar? Nein.
Recommendations?
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback.
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
Bestseller Recomm
Recomm
API
Eingeloggt? Ja.
„Personal“ verfügbar? Nein.
„Bestseller“verfügbar? Nein.
Recommendations?
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback.
#WISSENTEILEN
Bestseller Recomm
Recomm
API
Eingeloggt? Ja.
„Personal“ verfügbar? Nein.
„Bestseller“verfügbar? Nein.
Static Content
Idee:
Recomm-Service als
primäre Option.
Bestseller-Service als
Fallback.
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
Lessons
Learned
#WISSENTEILEN
Ein Microservice
kommt selten allein!
#WISSENTEILEN
Microservices-Projekte
scheitern nicht
an Technologie.
#WISSENTEILEN
Viele Probleme
lassen sich
fachlich lösen.
#WISSENTEILEN
Automatisierung ist
Pflicht nicht Kür.
#WISSENTEILEN
Arne Limburg, @arneLimburg
Lars Röwekamp, @mobileLarson
Kontakt:
lars.roewekamp@openknowledge.de
arne.limburg@openknowledge.de
kontakt@openknowledge.de
Besten Dank! #WISSENTEILEN

Weitere ähnliche Inhalte

Was ist angesagt?

Zukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit MicroservicesZukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit MicroservicesOPEN KNOWLEDGE GmbH
 
Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”OPEN KNOWLEDGE GmbH
 
CQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzCQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzOPEN KNOWLEDGE GmbH
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaOPEN KNOWLEDGE GmbH
 
Web APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseWeb APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseOPEN KNOWLEDGE GmbH
 
Microservices mit dem MicroProfile
Microservices mit dem MicroProfileMicroservices mit dem MicroProfile
Microservices mit dem MicroProfileOPEN KNOWLEDGE GmbH
 
Cloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessCloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessOPEN KNOWLEDGE GmbH
 
Herausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturHerausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturOPEN KNOWLEDGE GmbH
 
Java EE goes Microservices. Are you serious?
Java EE goes Microservices. Are you serious?Java EE goes Microservices. Are you serious?
Java EE goes Microservices. Are you serious?OPEN KNOWLEDGE GmbH
 
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?OPEN KNOWLEDGE GmbH
 
Mittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und TransaktionenMittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und TransaktionenOPEN KNOWLEDGE GmbH
 
App war gestern: Mobile Engagement als Teil der Enterprise-Strategie
App war gestern: Mobile Engagement als Teil der Enterprise-StrategieApp war gestern: Mobile Engagement als Teil der Enterprise-Strategie
App war gestern: Mobile Engagement als Teil der Enterprise-StrategieOPEN KNOWLEDGE GmbH
 
The Day after – nach dem Release ist vor dem Release
The Day after – nach dem Release ist vor dem ReleaseThe Day after – nach dem Release ist vor dem Release
The Day after – nach dem Release ist vor dem ReleaseOPEN KNOWLEDGE GmbH
 
Mobile Ideation – der sanfte Weg zum mobilen Mehrwert
Mobile Ideation – der sanfte Weg zum mobilen MehrwertMobile Ideation – der sanfte Weg zum mobilen Mehrwert
Mobile Ideation – der sanfte Weg zum mobilen MehrwertOPEN KNOWLEDGE GmbH
 

Was ist angesagt? (19)

Zukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit MicroservicesZukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit Microservices
 
Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”
 
Less Server vs. Serverless?
Less Server vs. Serverless?Less Server vs. Serverless?
Less Server vs. Serverless?
 
CQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzCQRS, der etwas andere Architekturansatz
CQRS, der etwas andere Architekturansatz
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit Java
 
Web APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseWeb APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/Response
 
Microservices mit dem MicroProfile
Microservices mit dem MicroProfileMicroservices mit dem MicroProfile
Microservices mit dem MicroProfile
 
Cloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessCloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu Serverless
 
API Design Strategy
API Design StrategyAPI Design Strategy
API Design Strategy
 
Herausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturHerausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-Architektur
 
Java EE goes Microservices. Are you serious?
Java EE goes Microservices. Are you serious?Java EE goes Microservices. Are you serious?
Java EE goes Microservices. Are you serious?
 
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
 
Business-Mehrwert durch KI
Business-Mehrwert durch KIBusiness-Mehrwert durch KI
Business-Mehrwert durch KI
 
App-Delivery-Pipeline
App-Delivery-PipelineApp-Delivery-Pipeline
App-Delivery-Pipeline
 
KI und Architektur
KI und ArchitekturKI und Architektur
KI und Architektur
 
Mittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und TransaktionenMittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und Transaktionen
 
App war gestern: Mobile Engagement als Teil der Enterprise-Strategie
App war gestern: Mobile Engagement als Teil der Enterprise-StrategieApp war gestern: Mobile Engagement als Teil der Enterprise-Strategie
App war gestern: Mobile Engagement als Teil der Enterprise-Strategie
 
The Day after – nach dem Release ist vor dem Release
The Day after – nach dem Release ist vor dem ReleaseThe Day after – nach dem Release ist vor dem Release
The Day after – nach dem Release ist vor dem Release
 
Mobile Ideation – der sanfte Weg zum mobilen Mehrwert
Mobile Ideation – der sanfte Weg zum mobilen MehrwertMobile Ideation – der sanfte Weg zum mobilen Mehrwert
Mobile Ideation – der sanfte Weg zum mobilen Mehrwert
 

Ähnlich wie Hands-On Microservices mit Java

Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenOPEN KNOWLEDGE GmbH
 
Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...
Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...
Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...Dominik Horn
 
Offline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon InternetOffline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon InternetOPEN KNOWLEDGE GmbH
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!OPEN KNOWLEDGE GmbH
 
Web-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/ResponseWeb-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/ResponseOPEN KNOWLEDGE GmbH
 
API-Versionierung im Projektalltag
API-Versionierung im ProjektalltagAPI-Versionierung im Projektalltag
API-Versionierung im ProjektalltagOPEN KNOWLEDGE GmbH
 
TechEvent 2019: Serverless - Ist das was für mich?; Thorsten Maier - Trivadis
TechEvent 2019: Serverless - Ist das was für mich?; Thorsten Maier - TrivadisTechEvent 2019: Serverless - Ist das was für mich?; Thorsten Maier - Trivadis
TechEvent 2019: Serverless - Ist das was für mich?; Thorsten Maier - TrivadisTrivadis
 
Rapid Application Development mit Grails und AngularJS
Rapid Application Development mit Grails und AngularJSRapid Application Development mit Grails und AngularJS
Rapid Application Development mit Grails und AngularJSOPITZ CONSULTING Deutschland
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingOPEN KNOWLEDGE GmbH
 
Cross Device Experience with HTML Prototyping
Cross Device Experience with HTML PrototypingCross Device Experience with HTML Prototyping
Cross Device Experience with HTML PrototypingPeter Rozek
 
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017Mario-Leander Reimer
 
Per Anhalter durch den Cloud Native Stack (extended edition)
Per Anhalter durch den Cloud Native Stack (extended edition)Per Anhalter durch den Cloud Native Stack (extended edition)
Per Anhalter durch den Cloud Native Stack (extended edition)QAware GmbH
 

Ähnlich wie Hands-On Microservices mit Java (20)

Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten Architekturen
 
API Expand Contract
API Expand ContractAPI Expand Contract
API Expand Contract
 
Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...
Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...
Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...
 
Offline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon InternetOffline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon Internet
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!
 
Web-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/ResponseWeb-API-Design jenseits von REST und Request/Response
Web-API-Design jenseits von REST und Request/Response
 
API-Versionierung im Projektalltag
API-Versionierung im ProjektalltagAPI-Versionierung im Projektalltag
API-Versionierung im Projektalltag
 
TechEvent 2019: Serverless - Ist das was für mich?; Thorsten Maier - Trivadis
TechEvent 2019: Serverless - Ist das was für mich?; Thorsten Maier - TrivadisTechEvent 2019: Serverless - Ist das was für mich?; Thorsten Maier - Trivadis
TechEvent 2019: Serverless - Ist das was für mich?; Thorsten Maier - Trivadis
 
Rapid Application Development mit Grails und AngularJS
Rapid Application Development mit Grails und AngularJSRapid Application Development mit Grails und AngularJS
Rapid Application Development mit Grails und AngularJS
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und Testing
 
Mut zur Fachlichkeit
Mut zur FachlichkeitMut zur Fachlichkeit
Mut zur Fachlichkeit
 
Continuous Delivery in ADF Projekten
Continuous Delivery in ADF ProjektenContinuous Delivery in ADF Projekten
Continuous Delivery in ADF Projekten
 
Serverless: The Missing Manual
Serverless: The Missing ManualServerless: The Missing Manual
Serverless: The Missing Manual
 
Cross Device Experience with HTML Prototyping
Cross Device Experience with HTML PrototypingCross Device Experience with HTML Prototyping
Cross Device Experience with HTML Prototyping
 
IT Outsourcing Agentur Berlin
IT Outsourcing Agentur BerlinIT Outsourcing Agentur Berlin
IT Outsourcing Agentur Berlin
 
Java EE meets Microservices
Java EE meets MicroservicesJava EE meets Microservices
Java EE meets Microservices
 
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
 
Per Anhalter durch den Cloud Native Stack (extended edition)
Per Anhalter durch den Cloud Native Stack (extended edition)Per Anhalter durch den Cloud Native Stack (extended edition)
Per Anhalter durch den Cloud Native Stack (extended edition)
 
Rails goes SOA
Rails goes SOARails goes SOA
Rails goes SOA
 
Namics Walk-in Lab Smart Services 05.10.2016
Namics Walk-in Lab Smart Services 05.10.2016Namics Walk-in Lab Smart Services 05.10.2016
Namics Walk-in Lab Smart Services 05.10.2016
 

Mehr von OPEN KNOWLEDGE GmbH

Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIWarum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIOPEN KNOWLEDGE GmbH
 
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...OPEN KNOWLEDGE GmbH
 
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudFrom Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudOPEN KNOWLEDGE GmbH
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationFEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationOPEN KNOWLEDGE GmbH
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!OPEN KNOWLEDGE GmbH
 
From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. OPEN KNOWLEDGE GmbH
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoOPEN KNOWLEDGE GmbH
 
Machine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsMachine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsOPEN KNOWLEDGE GmbH
 
It's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeIt's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeOPEN KNOWLEDGE GmbH
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusOPEN KNOWLEDGE GmbH
 
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?OPEN KNOWLEDGE GmbH
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“OPEN KNOWLEDGE GmbH
 
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...OPEN KNOWLEDGE GmbH
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“OPEN KNOWLEDGE GmbH
 
Maschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifftMaschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifftOPEN KNOWLEDGE GmbH
 
Modern Web: Trends der Webentwicklung
Modern Web: Trends der WebentwicklungModern Web: Trends der Webentwicklung
Modern Web: Trends der WebentwicklungOPEN KNOWLEDGE GmbH
 

Mehr von OPEN KNOWLEDGE GmbH (20)

Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIWarum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
 
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
 
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudFrom Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationFEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
 
Nie wieder Log-Files!
Nie wieder Log-Files!Nie wieder Log-Files!
Nie wieder Log-Files!
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud.
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
 
Machine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsMachine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.js
 
It's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeIt's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale Netze
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
 
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
 
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
 
Serverless Survival Guide
Serverless Survival GuideServerless Survival Guide
Serverless Survival Guide
 
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
 
Maschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifftMaschinen ohne Gewissen: wenn KI auf Ethik trifft
Maschinen ohne Gewissen: wenn KI auf Ethik trifft
 
Modern Web: Trends der Webentwicklung
Modern Web: Trends der WebentwicklungModern Web: Trends der Webentwicklung
Modern Web: Trends der Webentwicklung
 

Hands-On Microservices mit Java