Unblocking The Main Thread Solving ANRs and Frozen Frames
Improving DevOps using Microsoft tools
1. Improving DevOps using Microsoft's
Business Productivity Tools and more
Real-life experience that leverages Microsoft tools and DevOps
processes
Haniel Croitoru & Vincent Biret
October 20, 2018
#SPSNewEngland
4. Reduce time between committing a change to a system and committing it to production
while maintaining high quality
DEVOPS GOALS
• Improved deployment frequency
• Faster time to market
• Lower failure rate of new releases
• Shortened lead time between fixes
• Faster mean time to recovery
Development
Quality
Assurance
Operations
5. Intended to be a cross-functional mode of working
DEVOPS TOOLCHAIN
11. From the delivery team’s perspective, DevOps is about automating the process, releasing
frequently, and leveraging telemetry as well as feedback to improve solutions
DEVOPS BASICS
12. A few technologies and practices that’ll allow your team to scale
LIFE SAVERS
13. Git is great with branches and cross platform, it has become an industry standard
Gitflow is a great process for DevOps teams and allows them to scale seemlessly
GOOD SCM PRACTICES IS KEY
Git is a decentralized source control technology
Branches are cheap
Merging is not a nightmare
Cross platform
Lot of tools
Git flow is a process model for branch management
Focused work
Easy context switching
Standard and no thinking required
14. Pull requests are a great way to help your team grow and to improve the quality of the
code
PEER REVIEWS AND QUALITY
« Here are a bunch of changes in the code, please review it and make it
part of the main code »
Also check if changes:
Build
Pass unit tests
Pass static analysis gate (code quality)
Have associated work items (context/documentation)
And allows:
For discussion
The team to grow together
15. Automation of almost everything is a key to your DevOps team success and productivity
AUTOMATE AND FAIL FASTER
Automated Unit tests ran every build
Allow team to fail faster and to catch runtime issues earlier
Automated Builds on every push/PR
Allow team to leverage a great toolset and avoids broken code
Automated Releases on new builds
Allow team to ship faster, with less errors, effortless and more often
Automated Notifications
Allow team to focus on creating value, not updating people
16. Versioning not only the binaries but also configuration and service template will allow
you to deploy any version with great fidelity and enable test in production as well as
advanced debugging scenarios
VERSION EVERYTHING
Configuration should be automated/versioned
Avoid a great source of errors
Allows rapid deployment of specific versions with corresponding configuration
Code should be Packaged, even if not a library
Allows rapid solution deployment
Allows solution « composition »
Service provisioning should rely on templates
Runners: take care of running the tests and provide the infrastructure for (memory, processes…)
Asseration libraries: « ways » to write your unit tests
Emulators (or environments): context within the tests will run (server with node, browser, emulated browser…)
Reporters: take care of writing down tests results in comprenhensive format
Frameworks: provide a suite of functionnalities to help implement testing
Stubing/Mocking-Faking/Spying: allows you to isolate the tested code and/or observe behavior