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

apidays Helsinki & North 2023 - Design first or...

apidays Helsinki & North 2023 - Design first or first design?, Patrick Brosse, Amadeus

apidays Helsinki & North 2023
API Ecosystems - Connecting Physical and Digital
June 5 & 6, 2023

API : First design VS Design First
Understand the animate and inanimate object role !
Patrick Brosse, Head of API Design at Amadeus IT Group

------

Check out our conferences at https://www.apidays.global/

Do you want to sponsor or talk at one of our conferences?
https://apidays.typeform.com/to/ILJeAaV8

Learn more on APIscene, the global media made by the community for the community:
https://www.apiscene.io

Explore the API ecosystem with the API Landscape:
https://apilandscape.apiscene.io/

apidays

June 29, 2023
Tweet

More Decks by apidays

Other Decks in Programming

Transcript

  1. API : First design VS Design First Understand the animate

    and inanimate object role ! Patrick Brosse Head of API Design Amadeus IT Group
  2. GET / api / design ? from = “Coding first

    ” & to = “Design first” & with = “D.D.D.” Patrick Brosse Head of API Design & Data Model Amadeus IT Group
  3. Build an elegant, future-proof API in minimum time Challenge Safe

    Travel API Elegant Complex functionality, simple to use Future-proof Update without affecting original design. Minimum time Urgency due to pandemic.
  4. Code first Solution #1 GET / api / code-first 200

    OK { from: “Software” to: “Api contract” via: “Swagger generator” }
  5. Design first GET / api / design-first 200 OK {

    from: “Api contract” to: “Software” via: “code generator” } Solution #2
  6. Before the Design first ( Solution #1) First Design Source

    : https://www.eyrolles.com/Informatique/Livre/domain-driven-design-9780321125217/
  7. Volatile Knowledge 1– DDD : Before Crunching GET / knowledge

    / sum-up 400 Not Found { from: “Business” to: “Developer” via: “Documentation” }
  8. Stable Knowledge 2 – DDD : Crunching POST / ddd

    / knowledge 201 Created { from: “Waterfall” to: “Agile” via: “Domain Data Model” }
  9. Domain model 3– DDD : Effective Modeling POST / ddd

    / models 200 OK { from: “Business” to: “API Contract” via: “DDD” }
  10. REST – uri / path 6 -DDD : Bounded Context

    GET / ddd / layers { from: domain-relationship to : links via : path & content-type endpoints }
  11. REST – uri / path 6 -DDD : Bounded Context

    GET / ddd / layers { from: domain-relationship to : links via : path & content-type endpoints }
  12. REST - Resource 5-DDD – Entity / Aggregate GET /

    ddd / entities 200 OK { from: root-entity to : resources }
  13. REST - Resource 5-DDD – Entity / Aggregate GET /

    ddd / entities { from: entity to : resources }
  14. REST - Resource 5-DDD – Entity / Aggregate GET /

    ddd / entities { from: entity to : resources }
  15. REST - Resource 5-DDD – Entity / Aggregate GET /

    ddd / entities { from: entity to : resources }
  16. REST - Resource 5-DDD – Entity / Aggregate GET /

    ddd / entities 200 OK { from: root-entity to : resources }
  17. REST - Component 6-DDD : Value Object GET / ddd

    / reusability { from: Value-object to : Component }
  18. REST - Component 6-DDD : Value Object GET / ddd

    / reusability { from: Value-object to : Component }
  19. First Design 7– Key takeaways GET / ddd / api

    200 OK { from: “Business” to: “API Contract” via : “Data Model” }