Evolving from a monolithic to a distributed public API
- API Days 2012
Slide 2
Slide 2 text
Chris O'Dell
Current API Team Lead Developer
@ChrisAnnODell
Hibri Marzook
Senior Developer/ Former API Team Lead
@Hibri
Slide 3
Slide 3 text
•
Providers of open access to the broadest catalogue of fully licensed,
high quality digital music
•
Over 22 million legal, high quality tracks
•
Open to consumers, partners and developers
Who are 7digital?
Slide 4
Slide 4 text
•
Started as a side project providing access to our catalogue
•
Features driven by client demand
•
A single monolithic API application
•
Written in C# .Net WebForms
•
Lots of shared libraries with other applications
•
Single team working on the API
Where we came from
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
How do we scale ?
Slide 7
Slide 7 text
•
Architectural shift to SOA-ish
•
Make monolithic API route to smaller focussed internal APIs.
Changing for scale
Slide 8
Slide 8 text
•
Move code from main API codebase to new internal APIs.
•
Rewrite where possible
•
External consumers did not see any change in behaviour
•
Slow evolution, not a big rewrite.
Making the change
Slide 9
Slide 9 text
•
Smaller, focused teams
•
Assigned Product Managers for each product and team
•
Reduced size of work items
•
Introduced Kanban
•
Change technology stack behind the public facing API
Changing how we work
Slide 10
Slide 10 text
•
Shared libraries gradually being replaced by internal APIs
•
A skeleton of the monolith remains as the public façade for routing
requests
•
Able to deploy each API individually
•
Each API can employ specific caching and scaling strategies
•
Independent and multiple technology stacks – Windows & Linux
•
More chaos.
Where we are now
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
How do we deal with
the chaos ?
Slide 13
Slide 13 text
•
Increase testability.
•
Small projects with little code are easier to build and maintain.
•
Invested in time and tools to automate build and deployment.
•
We now have single click deployment.
•
We average 50 production releases in a week
•
Changes can be tested and deployed in under an hour
•
Metrics. Measure things. We use NewRelic and Statsd
Limit the impact of chaos
Slide 14
Slide 14 text
We build our own applications using the API
• 7digital.com, built by internal teams
• Mobile apps built by 3rd parties working for us
• Dev teams focus on building the platform
Dogfooding
Slide 15
Slide 15 text
We don't build internal
tools
- we build APIs
Slide 16
Slide 16 text
• Tools are built on top of APIs
• Every business process can now be monetized
• Don't implement an API until it is needed
Build the platform
Slide 17
Slide 17 text
•
Language and platform agnostic
•
Gave us more breadth and exposure across the market.
•
Open protocols, HTTP, OAuth 1.0 (yes we hate it too)
•
https://github.com/7digital
Open Platform, Open Source
Slide 18
Slide 18 text
We are not a startup
any more
Slide 19
Slide 19 text
Samsung, Microsoft, Blackberry and many more...
Who is building on our open platform
Slide 20
Slide 20 text
Interested in working with us ?
- or learning more ? Come talk to us
Sign up for a free public API Key
- http://developer.7digital.net/
We are hiring
- http://about.7digital.com/jobs/
@ChrisAnnODell @Hibri