API Thinking - How to Design APIs Through Systems Design

Post on 11-Jan-2017

1.281 views 0 download

Transcript of API Thinking - How to Design APIs Through Systems Design

API  Thinking  

James  Higginbotham  API  Architect  @launchany  

“I  say  this  constantly:  ‘your  API  design  should  become  the  

defini:on  of  your  new  target  architecture’  “  -­‐  @jharmn  

I  ask:    “What  are  your  resources?”  

Their  answer:    “How  do  I  figure  out  what  

resources  I  need?”  

“We  have  a  monolithic  app,  but  we  are  in  the  process  of  

redesigning  it.”  

Microservice  everything!  Containerize  it  all!  

Maybe.  Maybe  not.  

First,  we  need  to  be  able  to  look  at  our  soPware  systems  in  a  

“fresh,  old  way”  

Domain  Modeling  to  find  business  en::es,  rela:ons,  state  transi:ons,  and  events  (Domain-­‐Driven  Design)  

Systems:  Solu:on  to  Problem(s)  Subsystems:  Bounded  Concerns  Modules:  Atoms  for  Composi:on  

Automo:ve  Systems  

u  Engine  –  Intake  – Exhaust  – Fuel  System  – Valve  Train  

u Drive  Train  u  Braking  System  u …  

Third-­‐party  APIs  may  replace  modules,  subsystems,  or  even  

en:re  systems  

Once  we  understand  our  logical  architecture,  we  can  determine  

the  op:on(s)  to  realize  it.    

Our  API  resources  and  product  boundaries  become  more  apparent  

as  well,  including  where  client  responsibility  starts  and  stops.  

Systems  =  Solu:ons  Subsystems  =  Resources/Groups  

Modules  =  Endpoints  

What  might  this  look  like?  

Subsystems:  Account  Management,  Inventory  Management,  Customer  Management,  Ecommerce,  Billing,  

Analy:cs/Repor:ng  

Each  subsystem  has  an  API  that  exposes  one  or  more  endpoints.    

We  can  then  select  the  right  architectural  styles  we  need  to  

realize  our  subsystems…  

-­‐  Client/Server  -­‐  Service-­‐oriented  -­‐  Message-­‐oriented  -­‐  Event-­‐driven  -­‐  Pipe  and  Filter  -­‐  Yes,  even  microservices    

“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  

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.    

James  Higginbotham  james@launchany.com  hDp://launchany.com    

@launchany