WebAPIsareanarchitecturalconcernthatexposeaninterfaceto
anunderlyingsystem.Designthemtotellyourstory.
“Wehaveamonolithicapp,butweareintheprocessofrearchitecDngitusingmicroservicesandAPIs.”
--anyonewherecode.age>=3months
ModelingaSystem
System/Solu6on
Subsystem Subsystem
Module Module
Module Module
Subsystem SubsystemModule Module
ListAvailInventory
DistributorAddProducttoOrder
CompleteOrder
CancelBooking
AddProducttoInventory
UpdateProductQty
LocateBooking
RedeemBooking
PointOfSale
RemoveProduct
Customer
Operator
Operator
OrderMgmt
ListAvailInventory
DistributorAddProducttoOrder
CompleteOrder
CancelBooking
AddProducttoInventory
UpdateProductQty
LocateBooking
RedeemBooking
Operator
PointOfSale
RemoveProduct
Customer
Operator
InventoryMgmt
Fulfillment
OrderAPI
ListAvailInventory
DistributorAddProducttoOrder
CompleteOrder
CancelBooking
AddProducttoInventory
UpdateProductQty
LocateBooking
RedeemBooking
PointOfSale
RemoveProduct
Customer
Operator
InventoryAPI
FulfillmentAPI
Operator
OrderAPI
ListAvailInventory
DistributorAddProducttoOrder
CompleteOrder
CancelBooking
AddProducttoInventory
UpdateProductQty
LocateBooking
RedeemBooking
Operator
RemoveProduct
InventoryAPI
FulfillmentAPI
#1 #2`
PointOfSale
OrderAPI
ListAvailInventory
AddProducttoOrder
CompleteOrder
CancelBooking
AddProducttoInventory
UpdateProductQty
LocateBooking
RedeemBooking
RemoveProduct
InventoryAPI
FulfillmentAPI
OrderAPI
Availabili6es
Orders
Products(Inventory)
Bookings
InventoryAPI
FulfillmentAPI
Samedata,Conceptuallydifferentto
theAPIconsumer!
AvailabiliDes-product
-date(s)avail-qtyavail
Orders-bookings-ordertotal
Products-name
-availschedule
Bookings-product-date(s)-status
AvailabiliDes-product
-date(s)avail-qtyavail
availabilityChanged()
Orders-bookings-ordertotal
created()updated()
Products-name
-availschedule
created()removed()updated()
Bookings-product-date(s)-status
redeemed()cancelled()
AvailabiliDes-product
-date(s)avail-qtyavail
availabilityChanged()
Orders-bookings-ordertotal
created()updated()
Products-name
-availschedule
created()removed()updated()
Bookings-product-date(s)-status
redeemed()cancelled()
OrderAPI InventoryAPI
FulfillmentAPI
AvailabiliDesService
createAvailability()updateAvailability()deleteAvailability()
…availabilityChanged()
OrdersServicecreateOrder()updateOrder()deleteOrder()
…created()updated()
ProductsServicecreateProduct()updateProduct()deleteProduct()
…created()removed()updated()
BookingsServicelookupBooking()redeemBooking()cancelBooking()
…redeemed()cancelled()
OrderAPI InventoryAPI
FulfillmentAPI
OrdersHTTPAPI InventoryHTTPAPI
FulfillmentHTTPAPI