We’ve been told the future is automated, orchestrated, service-oriented applications built on top of dynamic, on-demand, massively scalable infrastructure (serverless anyone?). But how do you go from here to there? At Betterment we built a platform that goes beyond “lift and shift”. In this presentation, I’ll share how we built a platform for tomorrow, with support for today’s legacy apps. I’ll also share how we designed the tooling to encourage developers to build for the future, while ensuring security and reliability, going deep into how the tooling ultimately guided our own path, and why the principles behind everything helped us stay the course.
8. • Apps aren’t 12 factor
• Not all hosts are ephemeral
…where were we?
9. • Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
…where were we?
10. • Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
• Low reliability in CI/CD
…where were we?
11. • Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
• Low reliability in CI/CD
• High onboarding cost for new apps
…where were we?
12. • Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
• Low reliability in CI/CD
• High onboarding cost for new apps
…where were we?
13. • Apps aren’t 12 factor
• Not all hosts are ephemeral
• High deploy latency - 90 minute deploys
• Low reliability in CI/CD
• High onboarding cost for new apps
…where were we?
15. • Code in VCS
• Dependencies declared and
isolated
• Config stored in the
environment
• Backing services communicated
over an API
• Internal Services available
via an API
• Concurrency and scaling
through the process model
• Ephemeral
• Environment agnostic
• Logs as event stream
• Admin tasks in production
26. How we built the platform
today, thinking of tomorrow
Solved one problem at a time
27. Solved one problem at a time
Implemented Configuration as Code
How we built the platform
today, thinking of tomorrow
28. Solved one problem at a time
Implemented Configuration as Code
Prioritized an engineers-first approach
How we built the platform
today, thinking of tomorrow
29. Solved one problem at a time
Implemented Configuration as Code
Prioritized an engineers-first approach
How we built the platform
today, thinking of tomorrow
…okay, engineers second, Principles first
36. GitHub Jenkins GitHub Jenkins
Slack
AWS
JenkinsJenkinsJenkinsJenkins
Sad engineers
shake fists
CI/CD not in VCS
Onboarding new
apps is
difficult
Sad
Engineer
CI fumbles
Not Atomic!
37. GitHub Jenkins GitHub Jenkins
Slack
AWS
JenkinsJenkinsJenkinsJenkins
Sad
Engineer
CI fumbles
88. …where are we now?
• Apps start to look a lot more 12 factor-y
89. …where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
90. …where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
91. …where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
• High reliability in CI, not yet CD
92. …where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
• High reliability in CI/CD, not yet CD
• Low onboarding cost for new apps
93. …where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
• High reliability in CI/CD, not yet CD
• Low onboarding cost for new apps
94. …where are we now?
• Apps start to look a lot more 12 factor-y
• Not all hosts are ephemeral
• Low deploy latency - 25-35 minute deploys
• High reliability in CI/CD, not yet CD
• Low onboarding cost for new apps
95. How our tooling Encouraged
Developers to Build for the Future
120. • Apps are 12 factor!
• All hosts are ephemeral, we can even
support one-off ecosystems with ease
• Low deploy latency - 10-25 minute deploys
• High reliability in CI/CD
• Low onboarding cost for new apps
…where are we now?