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

Build for ALL of Your Users by Anthony Lusardi ...

Build for ALL of Your Users by Anthony Lusardi (liblab)

Build for ALL of Your Users
Anthony Lusardi, Developer Relations Engineer at liblab

apidays New York 2025
API Management for Surfing the Next Innovation Waves: GenAI and Open Banking
Convene 360 Madison, New York
May 14 & 15, 2025

------

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/

Avatar for apidays

apidays

May 24, 2025
Tweet

More Decks by apidays

Other Decks in Programming

Transcript

  1. The Customer (your “userˮ) The Service (and company) Itʼs pretty

    cool! Yeah, itʼs so slick! But whereʼs the profile photos? Letʼs ask the devs! Yeah! Should be easy! Digging the new app? The Users (actual users) GET /user/{id:string} 200 Response id string name string email string
  2. GET /user/{id:string} 200 Response id string name string email string

    profile_photo_id string GET /user/photo/{photo_id:string} 200 Response photo_id string user_id string photo_url string GET /group/{group_id:string} 200 Response group_id string user_ids string[]
  3. A typical user profile schema GET /user/{id:string} 200 Response id

    string name string email string profile_photo_id string
  4. Photos stored in another database GET /user/{id:string} 200 Response id

    string name string email string profile_photo_id string FK_users_photos
  5. And then there was a feature request Itʼs pretty cool!

    Yeah, itʼs so slick! But whereʼs the profile photos? Letʼs ask the devs! Yeah! Should be easy! Digging the new app?
  6. An engineer starts working on a ticket The MIGHTY Engineer

    Task: Retrieve profile photo for a user
  7. And makes a request Task: Retrieve profile photo for a

    user GET /user/{id:string} 200 Response id string name string email string profile_photo_id string “Why no profile_photo_url?”
  8. The docs say to make another request GET /user/photo/{photo_id:string} 200

    Response photo_id string user_id string photo_url string “Okay so let’s look at the docs” Task: Retrieve profile photo for a user
  9. And gets a resource URL GET /user/photo/{photo_id:string} 200 Response photo_id

    string user_id string photo_url string https://mybucket.s3.us-east-1.amazonaws.com/user-uploads/images/8ujs0ak1nd.jpg “There it is!” Task: Retrieve profile photo for a user
  10. And another request curl O https://mybucket.s3… /user-uploads/images/ 8ujs0ak1nd.jpg “At least

    they’re using a CDN…” Task: Retrieve profile photo for a user
  11. Thank You! 🗂 Anthony Lusardi 🔗 liblab.com ✉ [email protected] 💬

    linkedin.com/in/alusardi 🌲 linktr.ee/tony_codes 🔥 captivate.dev
  12. “Great work! Just need that done for groups now. Group

    sizes can go up to 256 just fyi.” “I should have been a dog walker” Subtask: Retrieve profile photos for groups
  13. But whereʼs the profile photos? Letʼs ask the devs! Yeah!

    Should be easy! Get user profile Get photo object Get photo resource Repeat for every group member 3  255 group members = 765 requests getGoupMembersProfilePhotos(groupId); Subtask: Retrieve profile photos for groups
  14. So the engineering team starts coming up with mitigation strategies.

    Subtask: Retrieve profile photos for groups
  15. “Scour the docs!” “Skeleton loaders!” “Feature request!” “Simulations!” “Make groups

    smaller!” “Async will save us!” “Edge cases?” “New API provider?” Subtask: Retrieve profile photos for groups
  16. Architect with intent ✅ RESTful (of course) ✅ API &

    Data architecture ✅ Identify target markets ✅ Plan to iterate
  17. Okay but how? (contʼd) ✅ Dog food ✅ Sample applications

    ✅ SDKs / Client libraries ✅ Use tools & OpenAPI
  18. Thank You! 🗂 Anthony Lusardi 🔗 liblab.com ✉ [email protected] 💬

    linkedin.com/in/alusardi 🌲 linktr.ee/tony_codes 🔥 captivate.dev