Save 37% off PRO during our Black Friday Sale! »

ApiBuilder

99d4c0ed3c8027ea1c37b53d6441d042?s=47 sullis
July 18, 2017

 ApiBuilder

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

99d4c0ed3c8027ea1c37b53d6441d042?s=128

sullis

July 18, 2017
Tweet

Transcript

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

  2. • software engineer • 21 years on the JVM •

    back office systems @ HBC About me
  3. https://en.wikipedia.org/wiki/Hudson%27s_Bay_Company

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

  5. API driven development

  6. API descriptors

  7. API descriptors are not a new concept

  8. • 1996: CORBA 2.0 IDL • 1997: Java RMI remote

    interfaces • 1999: EJB remote interfaces • 2000: WSDL 1.0 (SOAP)
  9. • 2006: WADL (REST) • 2011: Swagger (REST) • 2014:

    ApiDoc (REST) • 2017: ApiDoc rebranded to ApiBuilder
  10. www.apibuilder.io

  11. None
  12. describe REST API in a JSON file

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

    to resources
  14. gilt.com

  15. www.gilt.com

  16. • Rails app • one Git repo • monolith! Gilt:

    2007 => 2008
  17. • Rails app • JSP web framework • ~10 services

    (Java) • handcrafted Java clients • weak typing (java.util.HashMap) Gilt: 2009 => 2010
  18. • JSP’s • 100+ services (Java, Scala) • strongly typed

    client libraries • Gilt “Commons” library Gilt: 2011 => 2013
  19. • Gilt Commons library • 250+ services • dependency hell

    • ApiBuilder project started on Github Gilt: 2014
  20. Dependency hell Java runtime hell

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

  22. Dependency hell kills productivity

  23. None
  24. Mitigating dependency hell • API design must be first class

    • backwards and forward compatibility • accurate documentation • generated client libraries
  25. • 350+ services • new services built with ApiBuilder +

    generated clients • Gilt Commons library is deprecated Gilt: 2015 => 2017
  26. Web Checkout Android Checkout iPhone Checkout Checkout service api.json

  27. Generating client libraries with ApiBuilder

  28. Code generators

  29. None
  30. None
  31. Conclusion • API driven development • visit www.apibuilder.io

  32. The end

  33. None
  34. Additional resources

  35. Gilt 2013

  36. Gilt 2015