Develop faster with DevOps
DevOps embraces a culture of unifying the creation and distribution of technology in a way that allows for faster release cycles and more resource-efficient product updating. DevOps For Dummies provides a guidebook for those on the development or operations side in need of a primer on this way of working.
Inside, DevOps evangelist Emily Freeman provides a roadmap for adopting the management and technology tools, as well as the culture changes, needed to dive head-first into DevOps.
• Identify your organization’s needs
• Create a DevOps framework
• Change your organizational structure
• Manage projects in the DevOps world
DevOps For Dummies is essential reading for developers and operations professionals in the early stages of DevOps adoption.
Author(s): Emily Freeman
Series: For Dummies
Edition: 1
Publisher: Wiley
Year: 2019
Language: English
Commentary: Vector PDF
Pages: 368
City: Hoboken, NJ
Tags: DevOps; Cloud Computing; Management; Security; Distributed Systems; Reliability; Scalability; Maintanability; Motivation; Agile; For Dummies; Incident Response; Continuous Delivery; Continuous Integration; Containerization; Test Automation; Team Management; Planning; Usability; FOSS; Kaizen
Title Page
Copyright Page
Table of Contents
Foreword
Introduction
About This Book
Foolish Assumptions
Icons Used in This Book
Beyond the Book
Where to Go from Here
Part 1 Demystifying DevOps
Chapter 1 Introducing DevOps
What Is DevOps?
DevOps evolved from Agile
DevOps focuses on people
Company culture is the foundation of DevOps
You learn by observing your process and collecting data
Persuasion is key to DevOps adoption
Small, incremental changes are priceless
Benefitting from DevOps
Keeping CALMS
Solving the problem of conflicting interests
Chapter 2 Designing Your Organization
Assessing Your Culture’s Health
Integrating DevOps
Establishing DevOps Values
Encourage teamwork
Reduce silos
Practice systems thinking
Embrace failure
Communicate, communicate, communicate
Accept feedback
Automate processes (when appropriate)
Modeling Company Culture
Avoiding the worst of tech culture
Crafting your vision
Incentivizing Your Values
Evaluations
Rewards
Chapter 3 Identifying Waste
Digging into the Seven Types of Waste
Unnecessary process
Waiting
Motion
Costs of defects
Overproduction
Transportation
Inventory
Understanding waste in DevOps
Rooting Out Waste
Discovering bottlenecks
Focusing on impact
Chapter 4 Persuading Colleagues to Try DevOps
Fearing Change
Persuading Those around You to Shift to DevOps
Earning executive support
Creating a groundswell in the engineering group
Managing the middle managers
Persuading the stubborn
Understanding the Adoption Curve
Pushing for change
Responding to pushback
Navigating the chasm
Asking “Why?”
Chapter 5 Measuring Your Organization
Measuring Your Progress
Quantifying DevOps
Collecting the data
Developing internal case studies
Part 2 Establishing a Pipeline
Chapter 6 Embracing the New Development Life Cycle
Inviting Everyone to the Table
Changing Processes: From a Line to a Circuit
Shifting Ops “Left”: Thinking about Infrastructure
Shifting deployments left, too
Mimicking production through staging
Chapter 7 Planning Ahead
Moving beyond the Agile Model
Forecasting Challenges
Identifying project challenges and constraints
Gathering Requirements
Designing an MVP
Discovering the problem for your MVP to solve
Identifying your customer
Scrutinizing the competition
Prioritizing features
Designing the user experience
Testing your hypothesis
To beta or not to beta?
Determining Your Customer by Designing a Persona
What is a persona?
Designing a persona
Chapter 8 Designing Features from a DevOps Perspective
Constructing Your Design
Designing for DevOps
Designing software for change
Improving software constantly
Documenting your software
Architecting Code for the Six Capabilities of DevOps
Maintainability
Scalability
Security
Usability
Reliability
Flexibility
Documenting Design Decisions
Avoiding Architecture Pitfalls
Chapter 9 Developing Code
Communicating about Code
Engineering for Error
Writing Maintainable Code
Testing code
Debugging code
Logging code
Writing immutable code
Creating readable code
Programming Patterns
Object-oriented programming
Functional programming
Choosing a Language
Avoiding Anti-Patterns
DevOpsing Development
Writing clean code
Understanding the business
Listening to others
Focusing on the right things
Getting comfortable with being uncomfortable
Establishing Good Practices
Organizing your source code
Writing tests
Documenting features
Having peers review your code
Chapter 10 Automating Tests Prior to Release
Testing Isn’t Optional
Automating Your Testing
Testing in Different Environments
Local environment
Development environment
Testing environment
Staging environment
Production environment
Going beyond the Unit Test
Unit tests: It’s alive!
Integration tests: Do all the pieces work together?
Regression tests: After changes, does the code behave the same?
Visual tests: Does everything look the same?
Performance testing
Continuous Testing
Chapter 11 Deploying a Product
Releasing Code
Integrating and Delivering Continuously
Benefitting from CI/CD
Implementing CI/CD
Managing Deployments
Automating the right way
Versioning
Mitigating Failure
Rolling back
Fixing forward
Democratizing Deployments
Choosing a Deployment Style
Blue-green: Not just for lakes
Schrodinger’s canary: The deploy’s not dead (or is it?)
Rolling the dice
Toggling with feature flags
Monitoring Your Systems
Understanding telemetry
Recording behavior
SLAs, SLIs, and SLOs
Part 3 Connecting the Circuit
Chapter 12 Implementing Rapid Iteration
Prioritizing the Important
Important and urgent
Important, not urgent
Urgent, not important
Neither important nor urgent
Increasing Velocity
Improving Performance
Eliminating perfection
Designing small teams
Tracking your work
Reducing friction
Humanizing alerting
Chapter 13 Creating Feedback Loops around the Customer
Creating a Customer Feedback Process
Creating a Feedback Loop
Receive
Analyze
Communicate
Change
Collecting Feedback
Satisfaction surveys
Case studies
Dogfooding
Asking for Continual Feedback
Net promoter score (NPS)
Finding a rhythm
Chapter 14 DevOps Isn’t a Team (Except When It Is)
Forming DevOps Teams
Aligning functional teams
Dedicating a DevOps team
Creating cross-functional product teams
Interviewing Quickly (But Not Too Quickly)
Deciding on a Job Title
Recruiting Never Ends
Finding the right folks
Passing along great candidates
Evaluating Technical Ability
Whiteboarding revisited
Offering take-home tests
Reviewing code
Firing Fast
The jerk
The martyr
The underperformer
Chapter 15 Empowering Engineers
Scaling Engineering Teams with DevOps
Three stages of a company
Motivating Engineers
Researching motivation
DevOpsing motivation
Avoiding reliance on extrinsic rewards
Autonomy
Mastery
Purpose
Making work fun
Allowing people to choose their teams
Measuring Motivation
Part 4 Practicing Kaizen, the Art of Continuous Improvement
Chapter 16 Embracing Failure Successfully
Failing Fast in Tech
Failing safely
Containing failure
Accepting human error (and keeping it blameless)
Failing Well
Maintaining a growth mindset
Creating the freedom to fail
Chapter 17 Preparing for Incidents
Combating “Human Error” with Automation
Focusing on systems: Automating realistically
Using automation tools to avoid code integration problems
Handling deployments and infrastructure
Limiting overengineering
Humanizing On-Call Rotation
When on-call duties become inhumane
Humane on-call expectations
Managing Incidents
Making consistency a goal
Adopting standardized processes
Establishing a realistic budget
Making it easy to respond to incidents
Responding to an unplanned disruption
Empirically Measuring Progress
Mean time to repair (MTTR)
Mean time between failures (MTBF)
Cost per incident (CPI)
Chapter 18 Conducting Post-Incident Reviews
Going beyond Root Cause Analysis
Stepping through an Incident
Succeeding at Post-Incident Reviews
Scheduling it immediately
Including everyone
Keeping it blameless
Reviewing the timeline
Asking tough questions
Acknowledging hindsight bias
Taking notes
Making a plan
Part 5 Tooling Your DevOps Practice
Chapter 19 Adopting New Tools
Integrating with Open Source Software
Opening community innovation
Licensing open source
Deciding on open source
Transitioning to New Languages
Compiling and interpreting languages
Parallelizing and multithreading
Programming functionally
Managing memory
Choosing languages wisely
Chapter 20 Managing Distributed Systems
Working with Monoliths and Microservices
Choosing a monolithic architecture first
Evolving to microservices
Designing Great APIs
What’s in an API
Focusing on consistent design
Containers: Much More than Virtual Machines
Understanding containers and images
Deploying microservices to containers
Comparing orchestrators: Harmonize the hive
Configuring containers
Monitoring containers: Keeping them alive until you kill them
Securing containers: These boxes need a lock
Chapter 21 Migrating to the Cloud
Automating DevOps in the Cloud
Taking your DevOps culture to the cloud
Learning through adoption
Benefitting from cloud services
Cumulus, Cirrus, and Steel: Types of Clouds
Public cloud
Private cloud
Hybrid cloud
Cloud as a Service
Infrastructure as a Service
Platform as a Service
Software as a Service
Choosing the Best Cloud Service Provider
Amazon Web Services (AWS)
Microsoft Azure
Google Cloud Platform (GCP)
Finding Tools and Services in the Cloud
Part 6 The Part of Tens
Chapter 22 Top Ten (Plus) Reasons That DevOps Matters
Accepting Constant Change
Embracing the Cloud
Hiring the Best
Staying Competitive
Solving Human Problems
Challenging Employees
Bridging Gaps
Failing Well
Continuously Improving
Automating Toil
Accelerating Delivery
Chapter 23 Top Ten DevOps Pitfalls
Deprioritizing Culture
Leaving Others Behind
Forgetting to Align Incentives
Keeping Quiet
Forgetting to Measure
Micromanaging
Changing Too Much, Too Fast
Choosing Tools Poorly
Fearing Failure
Being Too Rigid
Index
EULA