Nội dung text RIG_The DevOps Handbook Graphic Summary.pdf
Copyright © 2023 Skool of Happiness Pte Ltd. All Rights Reserved. readingraphics.com ReadinGraphics ReadinGraphics In many organizations, IT professionals work in silos, resulting in conflicts, multiple handoffs, and long wait times. Software updates take weeks/months and often come with delays, outages, and drama. Goal: Accelerate the flow of work throughout the tech value stream from Dev → Ops → Customer. It improves (i) the lead time and (ii) quality and reliability of services. Continuous delivery: use automated tests to ensure every piece of finished work is deployable. Don’t test/ validate work only at the end of a project. Create deployment pipelines so developers can create production-like test environments on-demand and do self-service testing. Codify production environment details into a shared version control repository that’s accessible to all IT teams. Put all production changes into version control. When there are problems, the team can now rebuild the infrastructure easily. Use visual tools (e.g. Kanban boards) to make work visible. Help everyone to see the whole value stream and detect bottlenecks. Limit work-in-process (WIP): limit the number of tasks handled by an individual/team at any point in time. Reduce batch sizes: test/commit small batches of code and deploy them into production asap. Reduce the number of handoffs: use automation and/ or organize work into self-sufficient teams. Remove bottlenecks & waste, e.g. defects, unnecessary features. DevOps optimizes the “IT factory” by moving from concept to deployment asap, thus delivering value faster to customers. Principles of Flow Technical Practices to Accelerate Flow Technology impacts all types of organizations, regardless of their size or industry. It can even decide a company’s competitiveness or survival. DevOps combines best practices from Lean manufacturing, Agile software development, learning organizations, etc. It allows companies to deliver quality, secure, and reliable tech solutions, at a fraction of the time and cost. Tech value streams = all the steps that transform a business idea into a tech-enabled service that creates value for customers. Ticket Internal/ external customer submits a request. Dev Code or software is developed. Ops Code is deployed in the production environment and can be used by customers. Inputs are given just before deployment, when it’s too late for major changes. Optimizing the Technology Value Stream DevOps Principles & Practices: The Three Ways Starting Your DevOps Transformation Traditional Tech Value Stream DevOps Tech Value Stream THE FIRST WAY: FLOW Goal: Create 2-way info exchanges at all stages of the value stream. Feedback and feedforward loops allow the team to (i) detect/fix problems early, and (ii) prevent future problems. Use automated tests and measurements to track the entire system and see problems as they happen. If anyone detects a problem, stop production and mobilize everyone to “swarm” the problem. Everyone in the value stream should take ownership for the quality and safety of their work (not leave it to QA/InfoSec). To build quality into each step, work centers should aim to make things easier for the next downstream user. Principles of Feedback THE SECOND WAY: FEEDBACK Continuous Delivery & Deployment Pipelines Build a suite of reliable, comprehensive automated tests to continually find/fix problems. Write the tests before you write the code. Stop production/deployment once a validation test fails. Resolve problems before they grow. Get developers to work in small batches, then test and integrate work daily into the “main trunk”. Automated Testing & Continuous Integration Use production telemetry to automatically measure and transmit data about your applications’ performance and how far you’re achieving organizational goals. You must capture system-wide data and log them at the correct levels. Make the data easily accessible to the whole value stream. Allow self-service report generation, make key data visible, and distribute data across the organization. Analyze and visualize the data to detect outliers or anomalies. Use precursor metrics to anticipate problems, and use telemetry for forecasts. Technical Practices to Accelerate Feedback Production Telemetry and Statistical Tools Integrate feedback into daily work, e.g. use peer review to check code, watch how your work is being used downstream, let developers self-manage their services briefly in production, or develop release checklists. Encourage employees to experiment with different ideas/approaches and validate assumptions, e.g. using A/B tests to design/implement features. Feedback and Experimentation Goal: Create a learning culture that embraces experimentation, repeat practice, and learning from failures. Capture local knowledge and spread it to the whole organization. Make InfoSec a part of daily DevOps work, instead of treating is a separate layer of checks at the end of development. Make your deployment pipeline so reliable that most updates can be treated as low-risk, standard changes. Involve auditors in the value stream and incorporate their inputs early. Build the right culture and environment for continuous improvement. Set aside time to pay off technical debts and create organization-wide improvement. Translate local discoveries into organization-wide learning. Rethink leadership: focus on empowering teams by cascading long-term strategic goals into short-term goals, and encouraging a scientific approach to problem-solving. Principles of Continuous Improvement THE THIRD WAY: CONTINUAL LEARNING & EXPERIMENTATION Integrate InfoSec into All Parts of the Value Stream Build a culture where people see themselves as lifelong learners, feel safe to experiment and take risks, and take ownership of shared goals. To learn from failures, hold blameless post-mortems and share the insights. Simulate failures, and use drills/stress-tests to strengthen your systems, processes and capabilities. Technical Practices to Accelerate Learning & Experimentation Culture and Safety To clear technical debt, set aside 20% of DevOps cycles for non-functional requirements (NFRs)—to fix defects and improve codes/environments. Or, run “hackathons” to work on strategic improvements. Set Aside Time for Learning and Improvement Use internal training, coaching, mentoring, or consulting to let people tap on experts in the organization, and to share ideas/insights. Facilitate Shared Learning Use chatrooms and chatbots to facilitate communication and learning. Where possible, capture processes and policies in code (e.g. templates or automated tests), so they can be easily implemented. Create a shared repository including SOPs, source codes, tools, data analysis, etc. Use common technology/tools for Dev & Ops. Organization-Wide Learning Automate the deployment process as far as possible, and ideally do it in 1 click. To reduce risks for feature releases, deploy code to multiple environments, use feature toggling or dark launches. Simplify Deployments and Releases Redesign your IT architecture when it becomes too complex or tightly-coupled. Use the strangler application pattern to switch progressively to a more loosely-coupled structure. Rearchitect To Reduce Risks InfoSec & QA Business Customer Dev Finished Solution Ticket Internal/ external customer submits a request. Infosec & QA Inputs via shared resources, ongoing feedback and automated tests. Dev + Ops Code is continuously developed, tested, and deployed. Efforts are unified toward shared goals. Ops IT work is constantly disrupted to resolve crises. Last-minute workarounds cause more code breakages and create a downward spiral. Eventually, people are too busy fighting fires to solve problems or improve systems. Failures in finance, sales or other IT systems mean massive costs in terms of lost revenue, goodwill, productivity, and opportunity costs. High-performing companies can deploy hundreds/ thousands of updates daily (not just 1 update in weeks/months). This means they create much more value for customers. Companies can respond to dynamic market changes, and offer reliable/secure services to customers, to gain a real competitive edge. Inefficiencies & Huge Costs Customer Value & Competitive Advantage Business Customer Dev Finished Solution Ops Start with the right value stream that allows you to learn and build momentum without risking the entire organization. Use change agents to gain support: start with innovators and early adopters → silent majority → holdouts. Identify the people required for your new team. Create a value stream map to see the entire workflow, identify problem areas, define your target metrics and required improvements. Form a dedicated transformation team that can try new practices/ processes and communicate closely with existing teams. Define shared goals. Break them down into smaller goals for 2-4 week iterations. Dev & Ops should use the same tools and nomenclature to increase shared work visibility. Organize People & Architecture Ideally, go for market-oriented teams with cross-functional skills. Keep the teams small (5-10) and bounded. Keep your service architecture loosely-coupled, so each service can be updated independently without knowledge of other services. Integrate Ops into Dev Work Create self-service, on-demand tools/ systems for Dev, embed Ops members into Dev teams, or assign Ops liaisons to Dev. Make the Required Work Visible Choose A Value Stream Business Customer Dev Finished Solution Ops THE DEVOPS HANDBOOK Gene Kim, Jez Humble, Patrick Debois, & John Willis How to Create World-Class Agility, Reliability, and Security in Technology Organizations