Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
ApiBuilder
sullis
July 18, 2017
Technology
1
350
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
Code generation on the Java VM 2022-04-19
sullis
0
40
Mockito 2022-01-25
sullis
0
110
GitHub Actions 2021-12-16
sullis
0
17
Apache Struts and the Equifax data breach 2021-06-03
sullis
0
28
Guardrail State of the Union 2021-04-13
sullis
0
170
Guardrail: State of the Union 2021-03-18
sullis
0
85
Java on AWS 2020-12-15
sullis
0
180
Continuous Delivery with GitHub Actions - DeliveryConf 2020
sullis
0
510
OpenAPI and Java - Portland - 2019-12-10
sullis
0
170
Other Decks in Technology
See All in Technology
MoT/コネヒト/Kanmu が語るプロダクト開発xデータ分析 - 分析から機械学習システムの開発まで一人で複数ロールを担う大変さ
masatakashiwagi
2
510
1日5分!子育て中もインプットを続ける工夫
morihirok
1
350
証明書って何だっけ? 〜AWSの中間CA移行に備える〜
minorun365
3
1.9k
Cloudflare Workersで動くOG画像生成器
aiji42
1
430
Airdrop for Open Source Projects
epicsdao
0
220
Observability & APM 入門 〜2023年のIT運用/監視の流行語はこれだ!
tkhresk
0
260
NGINXENG JP#2 - 3-NGINX Plus・プロダクトのアップデート
hiropo20
0
120
1つのアプリを開発する複数の職能横断チームの運用と今後 ~ タクシーアプリ「GO」の現状と未来 ~
takahia1988
1
3.3k
データベースの発表には RDBMS 以外もありますよ
maroon1st
0
210
UIFlowの2.0がやってきた! / ビジュアルプログラミングIoTLT vol.13
you
0
200
大企業がアジャイルになる途中で 起きること/What happens on the way big company becomes agile
chinmo
0
2.7k
成長が鈍化したチームを変えるためにやったこと / #RSGT2023
mongolyy
2
2.8k
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
74
4.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
351
21k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
A designer walks into a library…
pauljervisheath
198
16k
Building a Scalable Design System with Sketch
lauravandoore
451
31k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
152
13k
A Philosophy of Restraint
colly
193
15k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
Faster Mobile Websites
deanohume
295
29k
Product Roadmaps are Hard
iamctodd
38
7.7k
Practical Orchestrator
shlominoach
178
8.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
31
20k
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