Post on 23-Jan-2018
transcript
API-centric development in non-API company
Konstantin Yakushev · 10th of October 2017
KonstantinYakushev
Mobile Architect in Badoo since 2015.
Speak at every Platform Summit.
Looking for something interesting outside of
the hype.
Hello, my name is
@kojopro
• Using methods for creating APIs for creating non-API product
• Separating API and coding responsibilities (how and why)
• Why API is bureaucracy and how is it good
What you’ll learn
• How do we combine careless agile with excruciating bureaucracy
• How many Badoo employees it takes to change a lightbulb
• What our engineers do to avoid thinking
What you’ll learn
API-centric development
• Dedicated API designers
• API done before development
• Docs ready before development
• Historical knowledge concentrated in the form of API documentation and managed by API architects
API-centricdevelopment
Flow
Product reqs
API designServer
dev Android dev
Web dev
iOS dev
Flow
Product reqs
API designServer
dev Android dev
Web dev
iOS dev
reviews
The bureaucratic flow
Product reqs
API designServer
dev Android dev
Web dev
iOS dev
reviews
Flow
Product reqs
API designServer
dev Android dev
Web dev
iOS dev
Patch flow
— Hey, there’s an easy fix
Server dev
Patch flow
API design
— Hey, there’s a typo
Attention to detail
01 02
Swiftness of change
us
Excruciating bureaucracy
01 02
Careless agile
us
Flow
Product reqs
API designServer
dev Android dev
Web dev
iOS dev
1 1+2 2+4
2+4
1+2
1+2
Patch flow
1+1
Server dev
Flow
Product reqs
API designServer
dev Android dev
Web dev
iOS dev
4 ppl
~ 20 ppl
Fast API design
Protobuf RPC-based binary protobuf API.
Has its own language for
specifying messages. Owr own
“framework”.
Autogeneration Protobuf specifications are
compiled into backend and
frontend classes with integrated
documentation.
Sphinx doc Documentation in human-
targeted prose is written in
restructured text and compiled
by sphinx with custom plugins.
Tech stack
Documentation template
1. History Who and when added this particular document
under what jira ticket based on what.
2. Indicating support See versioning talk last year. We need some
way to tell the backend that this new feature
is supported on this app.
Documentation template
3. Requesting data How does the request to the server look like
(highlights)
4. Response sample Shows the screenshot and response
correlated with it. Note that it’s specifically
not formal.
• backend developer half involved
• a particular backend developer becomes responsible
• writes more documentation and less code
• look for people interested in this in the company
• designate an API designer
• optionally expand the team
Adding a separate API person
1Have a separate team that
manages intra-team stuff and
communications.
Try to grow that team in-house
based on you existing
developers.
Do the important large stuff the
bureaucratic way and less
important stuff the agile way
2 3
Takeaways
kojo@kojo.ru https://www.linkedin.com/in/kyakushev
Konstantin YakushevMobile Architect
Cheers! Konstantin Yakushev
@kojopro