Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Wenn Schnittstellen alt werden... (JFS 2017)

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Wenn Schnittstellen alt werden... (JFS 2017)

Folien zum Vortrag auf dem Java Forum Stuttgart 2017

Claus Straube

July 04, 2017

Transcript

73 slides
  1. A B Provider Consumer Request Response API API B kennt

    die Payload Struktur von A B kennt A B kennt die API Struktur von A
  2. A B Provider Consumer Request Response API API B kennt

    die Payload Struktur von A B kennt A B kennt die API Struktur von A
  3. https:// RESTBUCKS.io v2 order id / / /{ } POST

    = create order PATCH = update order DELETE = delete order GET = read order
  4. order Schritt 1 Request Response POST: RESTBUCKS.io/v2/order self GET: RESTBUCKS.io/v2/order/1

    RESTBUCKS.io/v2/order/{id} update_order POST/PATCH: RESTBUCKS.io/v2/order/1 RESTBUCKS.io/v2/order/{id} cancel_order DELETE: RESTBUCKS.io/v2/order/1 RESTBUCKS.io/v2/order/{id} pay_order PUT: RESTBUCKS.io/v2/order/1/payment RESTBUCKS.io/v2/order/{id}/payment
  5. order Schritt 1 Request Response POST: RESTBUCKS.io/v2/order self GET: RESTBUCKS.io/v2/order/1

    RESTBUCKS.io/v2/order/{id} update_order POST/PATCH: RESTBUCKS.io/v2/order/1 RESTBUCKS.io/v2/order/{id} cancel_order DELETE: RESTBUCKS.io/v2/order/1 RESTBUCKS.io/v2/order/{id} pay_order PUT: RESTBUCKS.io/v2/order/1/payment RESTBUCKS.io/v2/order/{id}/payment
  6. update order Schritt 2 Request Response PATCH: RESTBUCKS.io/v2/order/1 RESTBUCKS.io/v2/order/{id} self

    GET: RESTBUCKS.io/v2/order/1 RESTBUCKS.io/v2/order/{id} update_order POST/PATCH: RESTBUCKS.io/v2/order/1 RESTBUCKS.io/v2/order/{id} cancel_order DELETE: RESTBUCKS.io/v2/order/1 RESTBUCKS.io/v2/order/{id} pay_order PUT: RESTBUCKS.io/v2/order/1/payment RESTBUCKS.io/v2/order/{id}/payment
  7. A B Provider Consumer Request Response API API B kennt

    die Payload Struktur von A B kennt A B kennt die API Struktur von A
  8. order event update order event pay order event cancel order

    event prepare order event Schritt 1 Schritt 2 Schritt 3
  9. A B Provider Consumer API API Message Broker FooEvent Topic

    BarEvent Topic SomeEvent Topic FooEvent­Listener SomeEvent­Listener BarEvent­Listener SomeEvent­Listener
  10. A B Provider Consumer Request Response API API B kennt

    die Payload Struktur von A B kennt A B kennt die API Struktur von A
  11. Order Schema {JSON} V1.0 Order Schema {JSON} V1.0 Order Schema

    {JSON} V1.0 Order Schema {JSON} V1.0 Writer Reader
  12. [ { "namespace": "de.muenchen.jfs17", "type": "record", "name": "LineItem", "fields": [

    {"name": "name", "type": "string", "default": "coffee"}, {"name": "quantity", "type": "int", "default": "1"}, {"name": "milk", "type": "boolean", "default": "false"} ] }, { "namespace": "de.muenchen.jfs17", "type": "record", "name": "Order", "fields": [ {"name": "item", "type": "LineItem"} ] } ] Version 1.0
  13. [ { "namespace": "de.muenchen.jfs17", "type": "record", "name": "LineItem", "fields": [

    {"name": "name", "type": "string", "default": "coffee"}, {"name": "quantity", "type": "int", "default": "1"}, {"name": "milk", "type": "boolean", "default": "false"} ] }, { "namespace": "de.muenchen.jfs17", "type": "record", "name": "Order", "fields": [ {"name": "item", "type": "LineItem"} ] } ] LineItem Type Version 1.0
  14. [ { "namespace": "de.muenchen.jfs17", "type": "record", "name": "LineItem", "fields": [

    {"name": "name", "type": "string", "default": "coffee"}, {"name": "quantity", "type": "int", "default": "1"}, {"name": "milk", "type": "boolean", "default": "false"} ] }, { "namespace": "de.muenchen.jfs17", "type": "record", "name": "Order", "fields": [ {"name": "item", "type": "LineItem"} ] } ] Order Type Version 1.0
  15. Order Schema {JSON} V2.0 Order Schema {JSON} V2.0 Order Schema

    {JSON} V1.0 Order Schema {JSON} V1.0 Reader Writer
  16. [ { "namespace": "de.muenchen.jfs17", "type": "enum", "name": "Sizes", "symbols": ["LARGE",

    "MIDDLE", "SMALL"] }, { "namespace": "de.muenchen.jfs17", "type": "record", "name": "RechnungsPosten", "aliases": ["LineItem"], "fields": [ {"name": "name", "type": "string", "default": "coffee"}, {"name": "quantity", "type": "int", "default": "1"}, {"name": "milk", "type": "boolean", "default": "false"}, {"name": "size", "type": "Sizes", "default": "MIDDLE"} ] }, { "namespace": "de.muenchen.jfs17", "type": "record", "name": "Bestellung", "aliases": ["Order"], "fields": [ Version 2.0
  17. 1 gr. Kaffee ohne Milch 2 kl. Kaffee mit Milch

    Schema Server Order Schema {JSON} V2.0 Order Schema {JSON} V2.0 Order Schema {JSON} V1.0 Order Schema {JSON} V1.0
  18. Schema Server Order Schema {JSON} V2.0 Order Schema {JSON} V2.0

    Order Schema {JSON} V1.0 Order Schema {JSON} V1.0 Message Broker OrderEvent Topic A Message Converter B Message Converter
  19. Schema Server Order Schema {JSON} V2.0 Order Schema {JSON} V2.0

    Order Schema {JSON} V1.0 Order Schema {JSON} V1.0 A B Message Broker Message Converter Message Converter GET /{subject}/{format} GET /{subject}/{format} OrderEvent Topic
  20. Schema Server Order Schema {JSON} V2.0 Order Schema {JSON} V2.0

    Order Schema {JSON} V1.0 Order Schema {JSON} V1.0 A B Message Broker Message Converter Message Converter GET /{subject}/{format} GET /{subject}/{format} OrderEvent Topic Avro Message Avro Message
  21. Schema Server Order Schema {JSON} V2.0 Order Schema {JSON} V2.0

    Order Schema {JSON} V1.0 Order Schema {JSON} V1.0 A B Message Broker Message Converter Message Converter GET /{subject}/{format} GET /{subject}/{format} OrderEvent Topic Avro Message Avro Message https://cloud.spring.io/spring­cloud­stream/

More Decks by Claus Straube

Other Decks in Programming