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

Wayfair's Deployment Evolution and Tooling

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Wayfair's Deployment Evolution and Tooling

Dan Rowe (Wayfair)

Dan shares the evolution of Wayfair's deployment tooling, from FTPing files onto a shared server to building their own tools to improve the process.

Presented at the Boston DevOps Meetup May 18 2016.

http://www.meetup.com/Boston-Devops/events/230870643/

Avatar for Boston DevOps

Boston DevOps

May 18, 2016
Tweet

More Decks by Boston DevOps

Other Decks in Technology

Transcript

  1. 2 Who Am I? Dan Rowe I lead the InfraSwat

    team at Wayfair About me: • Building deploy systems since before it was kool • Passionate about making everything self service (monitoring, alerting, deploying, ….) • Comfortable with Python and pythons (yes it’s an anaconda and not a python -->)
  2. 4 Evolution of Deploys • Wayfair moves fast and we

    iterate and improve on our tooling and workflows as fast as we develop and deploy new site features. • Wayfair didn’t start with a Deployment system with advanced features, but it’s evolved into that over time.
  3. 5 Early Days of Rapid Deployment • 1 web server

    • Developer checked out a file to work on it • All developers deployed via FTP • Deploy: 1. Upload file 2. Cross fingers 3. Check site 4. Upload previous version if broken
  4. 6 Scaling Rapid Deployment • Added more servers. • Developers

    still deployed via FTP • Synced out to all servers via Rsync like tool • Deploy: 1. Upload File 2. Cross fingers and toes 3. Check site 4. Upload previous version if broken
  5. 7 Deploy Tool • Solved replication issues • Integrated with

    SVN and Git • Prevented the dreaded accidental folder drag • Was the beginning of a deploy pipeline • Solved auditability
  6. 8 Deploy Tool Improved • Only Unit tests initially •

    Added Selenium tests later • Added Staging servers • Was great except developers had a hard time testing in dev • Hard to configure/reproduce Selenium issues for debugging
  7. 9 Deploy Trains • Scaling past 100s of deploys a

    day. • Conductor to help identify issues in other areas • Grouping of integrated and tested code in one deploy. • Runs code through tests, staging and then if verified off to prod it goes • More eyes on deploy, more time to bake before next change set goes out
  8. 10 Collaboration and Testing Evolution • Deploying fast is great,

    but we needed a way to show each other what our changes do • This included other developers as well as business and creative users. • This also evolved as the teams scaled and new tooling was developed
  9. 11 Early day collaboration • In a small team it’s

    easy to have someone just swing over. • Collaborate at the developers desk
  10. 12 Dev Switcher • Give ability for developers to share

    what they are working on. • Give ability for Business users to switch to any engineers environment and test functionality • Increased number of engineers and parallel projects caused developer idle time
  11. 13 QaGit: Business Validation • Developer Pushes to remote git

    branch with Ticket ID in name • Business users can checkout an environment to test/verify the changes • Allows developers to keep coding on a different branch
  12. 14 Autotest: Selenium test framework • Homegrown testing framework •

    Managed by a small team • Tests were created and maintained by the testing team • Gave us better confidence in changes working • Tests constantly broke with developer changes • Did not scale with the size of the Engineering team
  13. 15 Codeception: New Selenium test framework • Switched to an

    Opensource framework • Trained Developers to write and run tests just like their unit tests • Troubleshooting and test maintenance owned by the teams that manage the features a tests exercises. • Testing team able to focus on framework improvements
  14. 16 Wayrunner • Command line tool to tie together all

    the pieces of an engineers workflow • Runs code sniffs and unit tests local to the developers VM. • Pushes patch of developer changes to a VM to run selenium tests against. • Pushes changes to Reveiwboard for codereview. • Allows developers to join train with their changes. • Has similar functionality to other Try implementations. https://wiki.mozilla.org/ReleaseEngineering/TryServer https://github.com/etsy/TryLib http://docs.buildbot.net/0.8.4/try.html#try
  15. 17 Never Done • Testing Containers as the next iteration

    of deployment pipeline. • Testing a Local VM vs. Centrally managed VMs. • And many more things on the roadmap