Die Zeiten einfacher Webanwendungen sind gezählt. Moderne Unternehmen stehen heute vor der Aufgabe, unterschiedlichste Kanäle wie Web, Desktop, Mobile oder 3rd-Party-Clients parallel bedienen zu müssen. Und das mit einer Architektur, die am besten auch noch zukünftigen, bisher noch nicht bekannten Anforderungen standhält. Wie aber sieht eine solche Architektur aus? Welche neuen Herausforderungen ergeben sich durch die Öffnung für zusätzliche Kanäle? Und welche Auswirkungen hat das alles auf Themenbereiche wie Security, Schnittstellendesign, Versionierung oder das Domänen- bzw. Datenmodell? Im Rahmen der Session „öffnen“ wir eine klassische monolithische Webanwendung und stellen uns den Herausforderungen.
3. Lars Röwekamp (a.k.a. @mobileLarson)
ÜBER MICH
LR
#WISSENTEILEN
Wer bin ich - und wen ja, wie viele?
• CIO New Technologies
• Enterprise & Mobile
• Author, Speaker, Coach & Mentor
• Snowboard & MTB Enthusiast
• dreifacher Vater, einfacher Ehemann
25. Multi-Channel Architecture
Monolith
#WISSENTEILEN
• Umsetzung von Features dauert zu lange
• Architektur-Qualität nimmt ab (an Bedeutung)
• Qualität verwässert
• Technologische „Schulden“ sind bekannt
• „-ility“ Probleme wohin man schaut
• Deplyoment ist kompliziert und dauert lang
• Skalierung hat Limit erreicht
• Replacement/Refactoring ist zu teuer
65. Multi-Channel Architecture
Versionierung
#WISSENTEILEN
// Versioning via adaptable data format
{ ”items" : [ {
"name" : "coffee",
"quantity" : 1,
"milk" : "semi",
"size" : "large",
"price" : "4.00 USD"
} ],
“price" : "4.00 USD"
"location" : "take-away"
}
„Are you a
tolerant reader?“
66. Multi-Channel Architecture
Versionierung
#WISSENTEILEN
// Versioning via URL (default version)
GET /orders/1234 HTTP/1.1
[various other headers]
// Versioning via URL (version part of path)
GET /v2/orders/1234 HTTP/1.1
[various other headers]
// Versioning via URL (as request parameter)
GET /orders/1234?ver=v2 HTTP/1.1
[various other headers]
67. Multi-Channel Architecture
Versionierung
#WISSENTEILEN
// Versioning via Header(default version)
GET /orders/1234 HTTP/1.1
// Versioning via Version Header
GET /orders/1234 HTTP/1.1
Api-version: 2.1
// Versioning via Accept Header
GET /orders/1234 HTTP/1.1
Accept: application/vnd.abc.xyz.v2.1+json
72. Multi-Channel Architecture
Error Handling
#WISSENTEILEN
// POST a request for some async workload
POST /asynccall ... HTTP/1.1
[various other headers]
// Response with no payload, because it is
// not calculated yet
HTTP/1.1. 202 Accepted
73. Multi-Channel Architecture
Error Handling
#WISSENTEILEN
// DELETE order with id 1234
DELETE /orders/1234 HTTP/1.1
[various other headers]
// Order successfully deleted. Response has
// no content (by purpose)
HTTP/1.1. 204 No content
74. Multi-Channel Architecture
Error Handling
#WISSENTEILEN
// Response with error payload
HTTP/1.1 403 Forbidden
Content-Type: application/problem+json
Content-Language: en
{ "type": https://example.com/no-credit,
"title": “You have not enough credit.“,
"detail": "Your balance is 30, but ...“,
"instance": "/account/12345/msgs/abc“,
"balance": 30,
"accounts": ["/account/12345",
"/account/67890”]
}
87. Multi-Channel Architecture
Analytics
#WISSENTEILEN
Wider dem Kontrollverlust: Analytics als
Grundlage für strategische Entscheidungen
• Was macht der User eigentlich?
• Und in welchem Kontext?
• Werden meine Daten genutzt?
• Und wenn ja, wie?