@MIT: CLOUD & DEVOPS — PART 4
@MIT series is a group of articles being written to describe my learning path attending to the Cloud & DevOps: Continuous Transformation at the MIT.
This article at a glance — TL;DR
The DevOps revolution: importance of continuous feedback, data-driven decisions, pillars of DevOps and metrics
Today, software development is no longer characterized by designers throwing their software ‘over-the-wall’ to testers repeating the process with software operations. These roles are now disappearing: today software engineers design, develop, test and deploy their software by leveraging powerful Continuous Integration and Continuous Delivery (CI/CD) tools
MIT — Cloud & DevOps — Continuous Transformation course — 2020
DevOps key metrics to be watched:
- Delivery lead time (measured in hours) — e.g.: how much time is taken between the task registered on the management tool until it reaches production?
- Deployment frequency — how many deploys to the Production environment we make weekly.
- Time to restore service — how many minutes we take to put the service back to work when something breaks.
- Change fail rate — how many of our deploys to the Production environment cause a failure.
Importance of information flow. Companies have to foster an environment of continuous feedback and empowerment. It allows everybody to solve problems and suggest innovation within their area of work.
Data-driven decision making
Pillars of well designed DevOps:
- Performance Efficiency
- Cost Optimization
- Operational Excellence
A good example of a well-designed pipeline abstraction:
- Version control — this is the step when we retrieve the most recent code of versioning control.
- Build — building the optimized archive to be used to deploy.
- Unit test — running automated unit tests (created by the same developer that created the feature).
- Deploy — deploy to an instance or environment that allows it to receive a new load of tests.
- Autotest — running other layers of the test (stress, chaos, end to end, etc)
- Deploy to production — deploy to the final real environment.
- Measure & Validate — save the metrics of that deploy.
There are companies that are up to 400x times faster on having an idea and deploying it to production than traditional organizations.
Several analogies between Toyota Production system and cases (below) and DevOps:
- Just in Time
- Intelligent Automation
- Continuous Improvement
- Respect for People
Theory of Constraints:
- You must focus on your constraint
- It addresses the bottlenecks on your pipeline
- Identify the constraint
- Expĺoit the constraint
- Align and manage the systems around the constraint
- Elevate the performance of the constraint
- Repeat the process
DevOps is also about culture. Ron Westrum’s categories for culture evolution:
Typical CI Pipeline:
Exercises and Assignments
- Assignment: Creating a CircleCI automated pipeline for CI (Continuous Integration) to checkout, build, install dependencies (Node app) and run tests.
All the resources used to reach the results above are stored in this GitHub repository: https://github.com/guisesterheim/MITCloudAndDevOps