In modernen Software-Landschaften werden die Fachlichkeiten mit Hilfe von DDD sauber voneinander abgegrenzt und als eigenständige Services umgesetzt.
Was muss in der Entwicklung eines solchen Services beachtet werden, um diese Eigenständigkeit zu gewährleisten und gleichzeitig sicherzustellen, dass alle Services gemeinsam als ein großes Ganzes funktionieren?
Service-Konsumenten sollen Schnittstellen nach Möglichkeit nutzen können, ohne Aufwand beim Anbieter der Schnittstelle zu verursachen. Das Ziel ist es, Features schnell und unabhängig umsetzen zu können.
In dem Vortrag wird vorgestellt, wie man eine hohe Nutzerzufriedenheit durch Consumer-Centric API Design und regelmäßige Produktiv-Deployments erzielt.
Möglich wird das durch ein sauberes API-Design, eine schlanke Microarchitektur und eine hohe Testautomatisierung. An praktischen Beispielen wird gezeigt, wie das erreicht werden kann.
1. you BUILD it
OPEN THANX
you RUN it
you IMRPOVE it API-Design,
Microarchitecture & Testing
Arne Limburg | @ArneLimburg
Software als SERVICE
2. Software als SERVICE
you BUILD it
API First um von vornherein
die Sicht des API-Konsumenten einzunehmen
Consumer Interaction durch kontinuierlichen
Austausch mit den API-Konsumenten
Rapid Delivery durch eine
klare und einfache Architektur
Continuous Evolution durch Vertrauen
In die eigene Test-Suite und hohe Testabdec
3. Software als SERVICE
API FIRST
Master Keyfact Subthema EINS, welches
ganz toll ist.
Master Keyfact Subthema ZWEI, welches
auch ganz toll ist.
API Experience ist die UX der Entwickler
... am Beispiel
Consumer-Centric
API Design
5. #WISSENTEILEN
„It‘s all about the Money“
Expedia generiert $2 Milliarden jährlich
durch seine Affiliate Networks APIs.
$7 Milliarden der eBay Transaktionen
werden via APIs realisiert.
7. #WISSENTEILEN
B2B / Partner Connectivity
Bereits 2020 wird 40 % des Umsatzes
der IT Industrie und 98 % des Wachstums
durch Dritte getrieben werden.
(Quelle: Annahme der International Data Cooperation [IDC])
11. Software als SERVICE
Master Keyfact Subthema EINS, welches
ganz toll ist.
Master Keyfact Subthema ZWEI, welches
auch ganz toll ist.
In einem service-orientieren System
muss jederzeit automatisiert sichergestellt sei
dass unterschiedliche Versionen
zusammenpassen.
... am Beispiel
Consumer-Driven
Contracts
CONSUMER INTERACTION
17. PIPELINE TO DEPLOY TO STAGE
Execute
Own
Provider
Tests
Generate
Consumer
Contract
Execute
Depending
Provider
Tests
Deploy
to
Stage
#WISSENTEILEN
18. BREAKING CHANGE VOM PROVIDER
Execute
Own
Provider
Tests
Generate
Consumer
Contract
Execute
Depending
Provider
Tests
Deploy
to
Stage
#WISSENTEILEN
19. BREAKING CHANGE VOM PROVIDER
Execute
Own
Provider
Tests
Generate
Consumer
Contract
Execute
Depending
Provider
Tests
Deploy
to
Stage
#WISSENTEILEN
Achtung:
Abwärtskompatibilität ist
trotzdem notwendig!
20. BREAKING CHANGE VOM CONSUMER
Execute
Own
Provider
Tests
Generate
Consumer
Contract
Execute
Depending
Provider
Tests
Deploy
to
Stage
#WISSENTEILEN
21. Tolerant Reader Pattern
Tolerant gegenüber unbekannten Feldern
Umgang mit x-extensible-enum
http://zalando.github.io/restful-api-guidelines
22. Tolerant Reader Pattern
Tolerant gegenüber unbekannten Feldern
Umgang mit x-extensible-enum
http://zalando.github.io/restful-api-guidelines
Tolerant gegenüber unbekannten Statuscodes
HTTP Status 301 folgen
23. OK, so soll sich
der Client verhalten.
Aber was ist mit dem Server?
24. 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)
25. 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
26. Software als SERVICE
Master Keyfact Subthema EINS, welches
ganz toll ist.
Master Keyfact Subthema ZWEI, welches
auch ganz toll ist.
Die Microarchitektur muss genau so viel
Struktur bieten, dass Services schnell entwick
aber dennoch langfristig gut gewartet werd
können.
... am Beispiel
LEAN ARCHITECTURE
RAPID
DELIVERY
33. Software als SERVICE
Master Keyfact Subthema EINS, welches
ganz toll ist.
Master Keyfact Subthema ZWEI, welches
auch ganz toll ist.
Hohe Testabdeckung, sinnvolle Tests und
Vertrauen in die eigene Test-Suite bilden
die Basis für Contiunous and Fast Delivery.
... am Beispiel
TESTING
CONTINUOUS
EVOLUTION
58. INTEGRATION TEST
PERFORMANCE
Externe Systeme mocken
Server nur einmal pro Test-Suite starten
Infrastruktur (DB, Messaging) nur einmal starten
Datenbankänderungen nach jedem Test zurückrollen
59. Software als SERVICE
you build it - FAZIT
API First um von vornherein
die Sicht des API-Konsumenten einzunehmen
Consumer Interaction durch kontinuierlichen
Austausch mit den API-Konsumenten
Rapid Delivery durch eine
klare und einfache Architektur
Continuous Evolution durch Vertrauen
In die eigene Test-Suite und hohe Testabdec