DevOps
at DriveTime
A brief look into the past, present and future of
DevOps at DriveTime
Framing up
What is DevOps and what are we trying to accomplish?
-
Better quality software
- Shortened release cycles
-
Easier to use release processes
- Less manual work
- Improved capability and agility
What have we been doing so far?
Improving our tooling!
- NuGet, NPM & Bower package repositories
- Developed an entire new technology stack
- Developed DriveTime branded visual studio
extensions & project templates
- Improved documentation & collaboration with
the DriveTime developer wiki
What else have we been doing?
Improving development infrastructure!
- Pushed TFS as far as it would go
- Azure Deployments
- C# and TypeScript unit testing
- Introduce Jenkins to drastically improve capabilities
- Improved insight into project health and developer contributions
- Improved the quality and speed of production deployments
- Overall, we're much more agile
- Don't forget Azure: Web Apps and VPN connections
Anything Else?
Improving our communication and training!
-
Established and improved training regimens
- Instituted code dailies
- Stamping builds and code repository
What are we planning on doing?
Iterate on everything we've done so far
- Feature Branches
- Deploy anything, anywhere with a few clicks
- Pull significantly more metrics out of Jenkins & integrate QA with Jenkins
- Create DriveTime Bower and NPM packages
- On premises prod staging
Feature Branches?
Isolating development until completion
- Jenkins / Gulp / Node based functionality
- Automated steps:
- Create TFS branch
-
Create hosting environment
- Create Jenkins build & deploy to hosting
- Email team about feature branch
- Removal of all of the above, upon completion
- Overall gain: agility & ease of use
Deploy anything anywhere?
"I wonder what would happen in prod if we did {x} ?"
- Making the deployment process automated and generic
- Select the product, the build and the destination and go
- Nothing new, just streamlined and automated
What's this about metrics?
Remember Jenkins? It's great with generating metrics
Bower? NPM? VS Gallery?
With our new technology stack, comes new ways to share code
-
Current process involves copying and pasting code
- Creating a DriveTime.UI bower project
- Creating a DriveTime.Build npm project
- Shipping updates to DriveTime Template Pack via Visual Studio
- Key benefits: Ability to iterate like never before
On PREMISES Staging
1 click builds for all!
- Enabling smoke tests in production without risk
- Prod staging deployments are addictive
- Bringing deployment techniques out of azure and into the office
- Enabled by Jenkins
Going Forward?
Numerous directions that we can take this
- Continue as-is
- Devote developer time to DevOps initiatives as-needed
- Hire DevOps staff and go the route we're going with QA