Support Services APIs Support Case Management API Dispatch Request API Warranty Status API
API Thinking - How to Design APIs Through Systems Design
Transcript of API Thinking - How to Design APIs Through Systems Design
![Page 1: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/1.jpg)
API Thinking
James Higginbotham API Architect @launchany
![Page 2: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/2.jpg)
“I say this constantly: ‘your API design should become the
defini:on of your new target architecture’ “ -‐ @jharmn
![Page 3: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/3.jpg)
I ask: “What are your resources?”
![Page 4: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/4.jpg)
Their answer: “How do I figure out what
resources I need?”
![Page 5: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/5.jpg)
“We have a monolithic app, but we are in the process of
redesigning it.”
![Page 6: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/6.jpg)
Microservice everything! Containerize it all!
![Page 7: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/7.jpg)
Maybe. Maybe not.
![Page 8: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/8.jpg)
First, we need to be able to look at our soPware systems in a
“fresh, old way”
![Page 9: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/9.jpg)
Domain Modeling to find business en::es, rela:ons, state transi:ons, and events (Domain-‐Driven Design)
![Page 10: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/10.jpg)
Systems: Solu:on to Problem(s) Subsystems: Bounded Concerns Modules: Atoms for Composi:on
![Page 11: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/11.jpg)
Automo:ve Systems
u Engine – Intake – Exhaust – Fuel System – Valve Train
u Drive Train u Braking System u …
![Page 12: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/12.jpg)
Third-‐party APIs may replace modules, subsystems, or even
en:re systems
![Page 13: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/13.jpg)
Once we understand our logical architecture, we can determine
the op:on(s) to realize it.
![Page 14: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/14.jpg)
Our API resources and product boundaries become more apparent
as well, including where client responsibility starts and stops.
![Page 15: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/15.jpg)
Systems = Solu:ons Subsystems = Resources/Groups
Modules = Endpoints
![Page 16: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/16.jpg)
What might this look like?
![Page 17: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/17.jpg)
Subsystems: Account Management, Inventory Management, Customer Management, Ecommerce, Billing,
Analy:cs/Repor:ng
![Page 18: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/18.jpg)
Each subsystem has an API that exposes one or more endpoints.
![Page 19: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/19.jpg)
We can then select the right architectural styles we need to
realize our subsystems…
![Page 20: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/20.jpg)
-‐ Client/Server -‐ Service-‐oriented -‐ Message-‐oriented -‐ Event-‐driven -‐ Pipe and Filter -‐ Yes, even microservices
![Page 21: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/21.jpg)
“If the ranks of programmers has doubled every five years, then it
stands to reason that most programmers were hired within the last five years” – Robert C. Mar:n
hDp://blog.cleancoder.com/uncle-‐bob/2014/06/20/MyLawn.html
![Page 22: API Thinking - How to Design APIs Through Systems Design](https://reader031.fdocuments.net/reader031/viewer/2022022203/587561341a28ab00528b740d/html5/thumbnails/22.jpg)
I’m on a mission to help teams re-‐think the way they architect their soPware, resul:ng in
be`er API designs and products.