Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From Monolith on Heroku to Microservices on Kub...

From Monolith on Heroku to Microservices on Kubernetes

Presentation at Container Days EU 2017 about Teleport's journey from running single monolithic application on Heroku to transforming into microservices based setup on Google Container Engine.

Joonathan

June 21, 2017
Tweet

More Decks by Joonathan

Other Decks in Technology

Transcript

  1. INTRODUCTION Technical Lead for employee experience team at MOVE Guides,

    joined via Teleport acquisition. Previous experience before Teleport include spending over 9 years building and running distributed systems and platforms at Skype. MOVE Guides helps HR teams move their employees around the world, to any place, for any reason and for any period of time.
  2. JOURNEY STARTS Teleport was founded on April 1st of 2014

    and active development started in May 2014. We launched MVP of Cost and Quality of Life Search Engine for San Francisco Bay Area already in September of the same year. Cost and Quality of Life coverage for hundreds of San Francisco Bay Area ZIP codes. Python application with separate “data pipeline”.
  3. JOURNEY STARTS ON HEROKU Heroku is incredibly easy to get

    started with. Deployment can be as easy as git push heroku master but you should already think about CI. Adam Wiggins, Heroku’s co-founder, published the 12-factor app methodology listing the best practices for building modern cloud applications. Keep these in mind, adapt for your company and you are more likely to develop maintainable software.
  4. TOWARDS CONTAINERS After having successfully launched our initial product we

    set our course to build a global search engine for nomadic tech workers. We launched our mobile application in March 2015, mere six months after our Bay Area search product. Not built on top of the monolith; some of original functionality extracted to microservices. Heroku getting costly.
  5. TOWARDS CONTAINERS Teleport joined the AWS Activate program designed to

    provide startups with the resources they need to get started on AWS. ECS was not available yet; Elastic Beanstalk not stable enough. ‘Dockerize’ everything but how to orchestrate? Enter Tutum.
  6. DEVELOPMENT NEVER STOPS Another six months later we were taking

    the mobile application to the web. Teleport Cities launched in September 2015. Teleport experiences backed by 10+ different services and providing data to continuously increasing number of cities around the world. By early 2016 we applied for GCP for Startups program. Rolling out data pipeline on GKE using Jobs.
  7. ONBOARDING KUBERNETES Kubernetes 1.2 brings Deployments to beta – declarative

    updates for Pods and ReplicaSets allowing to define the desired state. As Kubernetes 1.2 rolled out to GKE in the end of March 2016 we started migrating our applications over.
  8. KUBERNETES Automate as much as possible via CI/CD pipeline. We

    have standardized some of our core functionalities on Make. CI pipeline and Kubernets driven from within the service repository. Templating in Kubernetes definition files using envsubst; Evaluated files stored in separate deployment repository. Docker images built with pattern of <service- name>:<git-hash>-<build-number> Branch based service deployments via Ingress.
  9. KUBERNETES Making use of multiple containers in a Pod for

    many of our services where we have “read-only” state. For example our public geographical API makes heavy use of PostGIS sidecart container which gets built by the CI pipeline. This allows us to scale app server 1:1 with database and not worry about database scaling. Another use case in use at Teleport is having sidecart container provide up-to- date OAuth credentials with behind the scenes refresh capability. Solving some of the SEO problems by mapping multiple separate frontend applications to the same domain using Ingress.
  10. TELEPORT TODAY By June 2017 Teleport has 9 user facing

    applications and around 40 services on Kubernetes; Ranging from data-pipeline components to tiny microservices to “monolith in a box” type of applications. Running on multiple clusters on GKE but making use of many AWS services as well. Teleport Cities supports over 260 cities all over the world. Providing free public API’s with information on Cities, Countries, Urban Areas, Timezones
  11. CONTACT Contact me at [email protected] or find me on Twitter

    as @joonathan. Check out Teleport and MOVE Guides.