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 -->)
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.
• 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
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
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
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
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
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
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
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
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
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