Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ApiBuilder
Search
sullis
July 18, 2017
Technology
1
440
ApiBuilder
Portland Java User Group
July 18, 2017
Portland Oregon
#rest #java #scala #json #gilt #apibuilder
sullis
July 18, 2017
Tweet
Share
More Decks by sullis
See All by sullis
Amazon S3 - Portland Java User Group 2024-09-17
sullis
0
53
Netty - Montreal Java User Group 2024-05-21
sullis
0
130
Netty Chicago Java User Group 2024-04-17
sullis
0
800
Java 21 - Portland Java User Group 2023-10-24
sullis
0
280
Microbenchmarking with JMH - Portland 2023-03-14
sullis
0
130
Code generation on the Java VM 2022-04-19
sullis
0
110
Mockito 2022-01-25
sullis
0
170
GitHub Actions 2021-12-16
sullis
0
35
Apache Struts and the Equifax data breach 2021-06-03
sullis
0
54
Other Decks in Technology
See All in Technology
いざ、BSC討伐の旅
nikinusu
2
770
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.6k
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
460
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
3
490
TypeScript、上達の瞬間
sadnessojisan
46
13k
[FOSS4G 2019 Niigata] AIによる効率的危険斜面抽出システムの開発について
nssv
0
310
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
510
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
Platform Engineering for Software Developers and Architects
syntasso
1
510
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
180
21k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Building an army of robots
kneath
302
43k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
730
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
What's new in Ruby 2.0
geeforr
343
31k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Transcript
Sean Sullivan July 18, 2017 Portland Java User Group
• software engineer • 21 years on the JVM •
back office systems @ HBC About me
https://en.wikipedia.org/wiki/Hudson%27s_Bay_Company
saksfifthavenue.com saksoff5th.com lordandtaylor.com gilt.com thebay.com
API driven development
API descriptors
API descriptors are not a new concept
• 1996: CORBA 2.0 IDL • 1997: Java RMI remote
interfaces • 1999: EJB remote interfaces • 2000: WSDL 1.0 (SOAP)
• 2006: WADL (REST) • 2011: Swagger (REST) • 2014:
ApiDoc (REST) • 2017: ApiDoc rebranded to ApiBuilder
www.apibuilder.io
None
describe REST API in a JSON file
1. start by describing your models 2. map your models
to resources
gilt.com
www.gilt.com
• Rails app • one Git repo • monolith! Gilt:
2007 => 2008
• Rails app • JSP web framework • ~10 services
(Java) • handcrafted Java clients • weak typing (java.util.HashMap) Gilt: 2009 => 2010
• JSP’s • 100+ services (Java, Scala) • strongly typed
client libraries • Gilt “Commons” library Gilt: 2011 => 2013
• Gilt Commons library • 250+ services • dependency hell
• ApiBuilder project started on Github Gilt: 2014
Dependency hell Java runtime hell
• java.lang.NoClassDefFoundError • java.lang.NoSuchFieldError • java.lang.NoSuchMethodError Java runtime hell
Dependency hell kills productivity
None
Mitigating dependency hell • API design must be first class
• backwards and forward compatibility • accurate documentation • generated client libraries
• 350+ services • new services built with ApiBuilder +
generated clients • Gilt Commons library is deprecated Gilt: 2015 => 2017
Web Checkout Android Checkout iPhone Checkout Checkout service api.json
Generating client libraries with ApiBuilder
Code generators
None
None
Conclusion • API driven development • visit www.apibuilder.io
The end
None
Additional resources
Gilt 2013
Gilt 2015