THE AGILE MANIFESTO :A lightweight set of values and principles against heavyweight software development approaches : small batch sizes, incremental releases and small, trusted, motivated teams.
THE LEAN MOVEMENT
a) the best predictor of quality is lead time (time to get something into production)
b) the best predictors of short lead times is small batch sizes of work
CONTINUOUS DELIVERY: using a “deployment pipeline” to ensure that code and infrastructure are always in a deployable state.
TOYOTA KATA: a practice of daily and continuous improvement
White board diagram
Dev -> QA -> Ops -> Production -> Customers
WIP: Queue size s the leading indicators of lead time. Context switching kills!
Stop starting. Start finishing.
2) REDUCE BATCH SIZES Large batch sizes = high levels of WIP and high levels of variability in flow, long lead times and poor quality. For example, the larger the change going into production, the more problems are likely to arise.
3) REDUCE THE NUMBER OF HANDOFFS
Each handoff to another team involves communication, loss of knowledge and delays. Aim to increase flow by reducing handoffs and the time work spends in queues, either by automating or by reorganizing & empowering teams.
4) MAKE OUR WORK VISIBLE: Unlike manufacturing, impeded value streams may not be easily seen in technology. Use visual work boards (e.g., kanban) to visualize flow across the entire value stream.
Create a deployment pipeline
that not just builds and runs tests, but that deploys and runs acceptance tests:
commit -> build -> unit test -> integration tests -> package -> deploys -> acceptance tests.
Goal = get feedback that, at any stage, a change has taken us out of a deployable state. As a result, our deployment pipeline infrastructure becomes as foundational as our version control infrastructure.
CREATE A SINGLE REPO OF TRUTH - Using version control for our environments is even more important than using version control for our code. The use of version control by Ops is a high predictor of both IT performance and organizational performance. We need to be able to repeatedly and reliably reproduce all components of our working software system.
Ensure that we always use production-like environments at every stage of the value stream, ideally created in an automated manner from version control: DB scripts, Tests, Docs, All scripts and config
ENABLE ON DEMAND CREATION OF ALL ENVSTo ensure fast lead times, and consistent environments, provide on-demand/self-service creation of environments.
CONCLUSIONFast flow from Dev to Ops requires production-like environments on demand, from a “single source of truth”, used even at the earliest stages of a software project.
Log useful metrics
Business level e.g., # sales, revenue, user signups
Application level e.g., transaction times, response times, faults
Infrastructure level e.g., server traffic, CPU load, disk usage, etc.
Deployment pipeline level: e.g., failing builds, deployment frequencies
How to think about feedback, before during and after.
Reserve: explicitly reserve time to pay down technical debt e.g., kaizen blitzes