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

[2016.04 Meetup #1] [TALK #3] Vasco Pinho - How...

[2016.04 Meetup #1] [TALK #3] Vasco Pinho - How Unbabel went from Heroku to AWS and kept deploying every day

Vasco Pinho's talk slides: How Unbabel went from Heroku to AWS and kept deploying every day

All rights belong to Vasco Pinho.

DevOps Lisbon

April 11, 2016
Tweet

More Decks by DevOps Lisbon

Other Decks in Technology

Transcript

  1. Problems with Heroku Hard to know what’s going on No

    control over base images Expensive
  2. A mess in AWS No configuration management Unable to easily

    reproduce server state No monitoring Running experiments in production machines
  3. Deploying culture All developers can deploy to their own dev

    machine and/or staging environment A couple of people with deploying permissions / “keys to the kingdom” to production
  4. Deploying Single command + developer initiated Zero Downtime deploys Allow

    rollbacks “mid” deploy Immutable servers (cattle vs pets)
  5. Blue-Green Deployment Boots new fleet for deploy When machines are

    ready allow for automated smoke tests + any manual checks (how does the new feature look?) Proceed with deploy (add / remove machines from ELB) or rollback (kill new machines) Whole thing ideally under 5, realistically under 10 minutes
  6. Wrapping up the migration Developers can initiate deploys without needing

    an “ops” person present Multiple deploys a day with no downtime involved Deploy time actually came down from ~15min in Heroku to around ~7min now At the time of the change a single t2.medium replaced around 25 Heroku worker machines
  7. Monolithic vs Microservices Started with just one big app in

    Heroku Smartcheck (spellchecking, consistency, grammar, etc) built as microservices Annotation tools, cost analysis tools now also microservices
  8. Who does what Only some developers are able to deploy

    main app to production Other microservices are developed and deployed usually a single developer (ownership!) Ops role is supporting base system changes for new requirements, optimising deployments, monitoring machines, setting up new environments, etc…