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

ApiBuilder

sullis
July 18, 2017

 ApiBuilder

Portland Java User Group
July 18, 2017
Portland Oregon
#rest #java #scala #json #gilt #apibuilder

sullis

July 18, 2017
Tweet

More Decks by sullis

Other Decks in Technology

Transcript

  1. Sean Sullivan
    July 18, 2017
    Portland Java User Group

    View Slide

  2. • software engineer
    • 21 years on the JVM
    • back office systems @ HBC
    About me

    View Slide

  3. https://en.wikipedia.org/wiki/Hudson%27s_Bay_Company

    View Slide

  4. saksfifthavenue.com
    saksoff5th.com
    lordandtaylor.com
    gilt.com
    thebay.com

    View Slide

  5. API driven development

    View Slide

  6. API descriptors

    View Slide

  7. API descriptors
    are not a new concept

    View Slide

  8. • 1996: CORBA 2.0 IDL
    • 1997: Java RMI remote interfaces
    • 1999: EJB remote interfaces
    • 2000: WSDL 1.0 (SOAP)

    View Slide

  9. • 2006: WADL (REST)
    • 2011: Swagger (REST)
    • 2014: ApiDoc (REST)
    • 2017: ApiDoc rebranded to ApiBuilder

    View Slide

  10. www.apibuilder.io

    View Slide

  11. View Slide

  12. describe REST API
    in a JSON file

    View Slide

  13. 1. start by describing your models
    2. map your models to resources

    View Slide

  14. gilt.com

    View Slide

  15. www.gilt.com

    View Slide

  16. • Rails app
    • one Git repo
    • monolith!
    Gilt: 2007 => 2008

    View Slide

  17. • Rails app
    • JSP web framework
    • ~10 services (Java)
    • handcrafted Java clients
    • weak typing (java.util.HashMap)
    Gilt: 2009 => 2010

    View Slide

  18. • JSP’s
    • 100+ services (Java, Scala)
    • strongly typed client libraries
    • Gilt “Commons” library
    Gilt: 2011 => 2013

    View Slide

  19. • Gilt Commons library
    • 250+ services
    • dependency hell
    • ApiBuilder project started on
    Github
    Gilt: 2014

    View Slide

  20. Dependency hell
    Java runtime hell

    View Slide

  21. • java.lang.NoClassDefFoundError
    • java.lang.NoSuchFieldError
    • java.lang.NoSuchMethodError
    Java runtime hell

    View Slide

  22. Dependency hell
    kills productivity

    View Slide

  23. View Slide

  24. Mitigating
    dependency hell
    • API design must be first class
    • backwards and forward compatibility
    • accurate documentation
    • generated client libraries

    View Slide

  25. • 350+ services
    • new services built with
    ApiBuilder + generated clients
    • Gilt Commons library is
    deprecated
    Gilt: 2015 => 2017

    View Slide

  26. Web
    Checkout
    Android
    Checkout
    iPhone
    Checkout
    Checkout
    service
    api.json

    View Slide

  27. Generating
    client libraries
    with ApiBuilder

    View Slide

  28. Code generators

    View Slide

  29. View Slide

  30. View Slide

  31. Conclusion
    • API driven development
    • visit www.apibuilder.io

    View Slide

  32. The end

    View Slide

  33. View Slide

  34. Additional resources

    View Slide

  35. Gilt 2013

    View Slide

  36. Gilt 2015

    View Slide