Top Banner
„Multi-Channel“-Architecture Lars Röwekamp | CIO New Technologies | @mobileLarson open knowledge | #WISSENTEILEN
99

Herausforderung „Multi-Channel“-Architektur

Jan 22, 2018

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Herausforderung „Multi-Channel“-Architektur

„Multi-Channel“-ArchitectureLars Röwekamp | CIO New Technologies | @mobileLarson

open knowledge | #WISSENTEILEN

Page 2: Herausforderung „Multi-Channel“-Architektur

Branchenneutrale Softwareentwicklung und IT-Beratung

ÜBER OPEN KNOWLEDGE

#WISSENTEILEN

Page 3: Herausforderung „Multi-Channel“-Architektur

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

Page 4: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

„Multi-Channel? Warum?“

Motivation

Page 5: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Motivation

Page 6: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

„The Mindshift“

Page 7: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

„The expectation that I can get what i want in my immediate context and moments of need!“

Page 8: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

„Mindshift“ in ... Verhalten, Erwartungen, Kontrolle

Page 9: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

„Multi-Channel, na klar!Wo liegt das Problem?“

Motivation

Page 10: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Motivation

Page 11: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Motivation

Page 12: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Motivation

Page 13: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Responsiveness

Page 14: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Responsiveness

Page 15: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Multi-Channel?

Responsiveness

Page 16: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Cross-Channel?

Responsiveness

Page 17: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Omni-Channel!

Responsiveness

Page 18: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Responsiveness

Single-Channel(a.k.a. „the Past“)

Multi-Channel(a.k.a. „the Reality“)

Cross-Channel(a.k.a. „the Wannabe“)

Page 19: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Responsiveness

Omni-Channel(a.k.a. „the far-far-away Future“)

Page 20: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Responsiveness

Hmmm, kind of Fail?

Page 21: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Responsiveness

Page 22: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

What‘s the Problem?It‘s old but not sooo bad.

Page 23: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 24: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

A responsive Monolithis still a Monolith!

Page 25: Herausforderung „Multi-Channel“-Architektur

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

Page 26: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Monolith meets„Time to Market“

Page 27: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Resources vs. Views

Page 28: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 29: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 30: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Heavy Load

Page 31: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Requst / Responsevs.

Event / Notification

Architektur

Page 32: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 33: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 34: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Skalierung?

Page 35: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

ArchitekturYou want to be here!

Page 36: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Domain vs. Application

Architektur

Page 37: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 38: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 39: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 40: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Autonomie?

Page 41: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Application Servervs.

Platform Service

Page 42: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 43: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 44: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Oh, my god!

Page 45: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Microservices! PaaS!

Page 46: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

TODOYeah, all Work done!

Page 47: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

TODOReally? ALL Work done?

Page 48: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Architektur

Page 49: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Distributed System

Page 50: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Versionierung?ErrorHandling?Caching&Sync?

Security?Analytics?

Page 51: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Versionierung?

Page 52: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Versionierung

#WISSENTEILEN

• Client/Service entwickeln sich unterschiedlich• Request /Response passen nicht zueinander

• Fehlende/unbekannte Request Attribute• Fehlende/unbekannte Response Attribute

• Geänderte Semantik von Attributen • Geänderte Semantik von Defaults

Page 53: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Versionierung

#WISSENTEILEN

Best Practices strategisch

• so lang wie möglich verhindern• enge Koppelung vermeiden• Consumer-Driven Contracts

• Semantic Versioning (Major.Minor.Patch)• Koexistenz verschiedener Endpoints• konkurierende Service Versionen

Page 54: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Versionierung

Page 55: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Versionierung

Page 56: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Versionierung

Page 57: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Versionierung

Page 58: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Versionierung

Page 59: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Versionierung

Page 60: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Versionierung

#WISSENTEILEN

Best Practices technisch

• gar nicht• gar nicht (via neue Ressourcen) • gar nicht (via erweiterbarer Datenformate)• Versionsnummer in der URL• Version Request Header• Content Negotiation

Page 61: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Versionierung

#WISSENTEILEN

// Versioning via multiple resources

// GET all ordersGET /orders HTTP/1.1

// GET all newordersGET /neworders HTTP/1.1

Page 62: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Versionierung

#WISSENTEILEN

// Versioning via adaptable data format

{ "items" : [ {"name" : "coffee","quantity" : 1,"milk" : "semi","size" : "large",

} ],"location" : ”take-away"

}

Page 63: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Versionierung

#WISSENTEILEN

// Versioning via adaptable data format

{ ”items" : [ {"name" : "coffee","quantity" : 1,"milk" : "semi","size" : "large","price" : "4.00 USD"

} ],"location" : "take-away"

}

Page 64: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Versionierung

#WISSENTEILEN

// Versioning via adaptable data format

{ ”items" : [ {"name" : "coffee","quantity" : 1,"milk" : "semi","size" : "large","price" : "4.00 USD"

} ],“total-price" : "4.00 USD""location" : "take-away"

}

Page 65: Herausforderung „Multi-Channel“-Architektur

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"

}

„Areyou atolerantreader?“

Page 66: Herausforderung „Multi-Channel“-Architektur

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]

Page 67: Herausforderung „Multi-Channel“-Architektur

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.1Api-version: 2.1

// Versioning via Accept HeaderGET /orders/1234 HTTP/1.1Accept: application/vnd.abc.xyz.v2.1+json

Page 68: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Errors?

Page 69: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Error Handling

#WISSENTEILEN

„Is it a bug or a feature?“

• Error Handling• Compensation Algorithm

Page 70: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Error Handling

#WISSENTEILEN

Status Codes - Pro Tipp: Use them!

• 1xx: Hold on ...• 2xx: Here you go!• 3xx: Go away!• 4xx: You f#!?ed up!• 5xx: I f#!?ed up!

Facebook„Always200“Anti-Pattern

Page 71: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Error Handling

#WISSENTEILEN

Page 72: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Error Handling

#WISSENTEILEN

// POST a request for some async workloadPOST /asynccall ... HTTP/1.1[various other headers]

// Response with no payload, because it is// not calculated yetHTTP/1.1. 202 Accepted

Page 73: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Error Handling

#WISSENTEILEN

// DELETE order with id 1234DELETE /orders/1234 HTTP/1.1[various other headers]

// Order successfully deleted. Response has// no content (by purpose)HTTP/1.1. 204 No content

Page 74: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Error Handling

#WISSENTEILEN

// Response with error payloadHTTP/1.1 403 ForbiddenContent-Type: application/problem+jsonContent-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”]

}

Page 75: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Error Handling

#WISSENTEILEN

Manchmal kommt es anders als man denkt!

• „Code for Code“• „Message for People“• „Payload and Format“

• Kein Stacktrace• Exception Mapper als Provider

Page 76: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Error Handling

#WISSENTEILEN

// JAX-RS Exception Handler Example@Providerpublic class MyAppExceptionHandler implements

ExceptionMapper<MyAppError> {@Overridepublic Response toResponse(MyAppError error){

return Response.status(Status.BAD_REQUEST).entity(error.getMessage()).build();

}}

Page 77: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Error Handling

#WISSENTEILEN

Compensation Algorithm

• Transactions • Eventual Consistency• Service not available

Page 78: Herausforderung „Multi-Channel“-Architektur

„Starbucksdoes notuseTwo-PhaseCommit“

http://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html

Page 79: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Caches&Sync?

Page 80: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Caching

#WISSENTEILEN

Always remember: „The Web is your Friend“

• das Web bietet tolle Möglichkeiten • RESTful Service nutzen das Web bzw. HTTP

Page 81: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Caching

#WISSENTEILEN

Aber wer cached eigentlich was?

• Client (Web Browser, REST Client, ...) • Proxy Caches („man in the middle cache“)• Content Delivery Networks (CDNs)

Page 82: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Caching

#WISSENTEILEN

Wie funktioniert HTTP Caching?

• Expires Header (HTTP 1.0)• Cache-Control (HTTP 1.1)

• Revalidation & Conditional GETs

Page 83: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Caching

#WISSENTEILEN

Expires Header (HTTP 1.0)

• Hint, ob Daten noch gültig sind oder nicht

Expires: Tue, 22 DEC 2015 16:00 GMT

Page 84: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Caching

#WISSENTEILEN

Cache Control (HTTP 1.1)

• deutlich genauere Cache-Steuerung als bei Expires Header

• private, public• no-cache• no-store• no-transform• max-age, s-maxage

Page 85: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Caching

#WISSENTEILEN

Revalidation & Conditional GET (HTTP 1.1)

• Prüfung, ob Cache-Daten wirklich invalide• Server sendet Header zur Prüfung zurück

• Last-Modified• Etag

Page 86: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Analytics?

Page 87: Herausforderung „Multi-Channel“-Architektur

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?

Page 88: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Analytics

#WISSENTEILEN

Schritt 1: notwendige Daten identifizieren

• Was sind die Business relevanten Metriken?• Was sind die technischen Metriken? • Was sind weitere Erfolgsmetriken?

Page 89: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Analytics

#WISSENTEILEN

Schritt 2: Nutzbarkeit prüfen

• Kann ich die gewünschten Daten sammeln?• Habe ich die notwendigen Analysetools?• Habe ich die notwendige Analyseerfahrung?

Page 90: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Analytics

#WISSENTEILEN

Monitore deine Ratings

• Ratings unbedingt ernst nehmen!• Bester Kanal hin zu den Nutzern

• Nächstes Feature ist wahrscheinlich schon alsReview in den Ratings und nicht im Backlog

Page 91: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Analytics

#WISSENTEILEN

Monitore deinen Traffic

• Erkennen von Serverproblemen• Probleme werden auf den Client geschoben.

• BTW: App ist nicht Web - einmal deinstalliert ist immer deinstalliert!

Page 92: Herausforderung „Multi-Channel“-Architektur

Multi-Channel Architecture

Analytics

#WISSENTEILEN

Monitore deine UX

• Nutzerverhalten verstehen lernen• Client Performance messen• Netzwerklatenz erkennen

• In welchen Ländern/Regionen?• Auf welchen Geräten/Browsern?

Page 93: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

FAZIT

Page 94: Herausforderung „Multi-Channel“-Architektur

Mutli-Channel Architecture

Fazit

#WISSENTEILEN

„Mit Multi-Channel verlagere ich bestehendes Business.

Mit Omni-Channel generiere ich neues Business!“

Page 95: Herausforderung „Multi-Channel“-Architektur

#WISSENTEILEN

Page 96: Herausforderung „Multi-Channel“-Architektur

Mutli-Channel Architecture

Fazit

#WISSENTEILEN

„Time-to-Market“ via

• Resources statt Views• Events statt Request/Response• Domain Services statt Application• Modularization statt Monolith

Omni___

Page 97: Herausforderung „Multi-Channel“-Architektur

FRAGEN

? ? ?#WISSENTEILEN

Page 98: Herausforderung „Multi-Channel“-Architektur

LARS RÖWEKAMPCIO NEW TECHNOLOGIES

[email protected]+49 (0)441 4082 – 101

@mobileLarson@_openknowledge

OFFENKUNDIGGUT

KONTAKT

#WISSENTEILEN

Page 99: Herausforderung „Multi-Channel“-Architektur

#1: © Rawpixel.com - shutterstock.com#6: © OneinchPunch- fotolia.com#40: © g-stockstudio – shutterstock.com#82: © tomer_turjeman – fotolia.com

#84: © Peshkova - shutterstock.com

All other pictures inside this presentation orginate from pixabay.com.

BILDNACHWEISE

#WISSENTEILEN