Learning DevOps: Continuously Deliver Better Software

Learn to use some of the most exciting and powerful tools to deliver world-class quality software with continuous delivery and DevOps
Preview in Mapt

Learning DevOps: Continuously Deliver Better Software

Joakim Verona, Michael Duffy, Paul Swartout

5 customer reviews
Learn to use some of the most exciting and powerful tools to deliver world-class quality software with continuous delivery and DevOps
Mapt Subscription
FREE
$29.99/m after trial
eBook
$47.60
RRP $67.99
Save 29%
Print + eBook
$84.99
RRP $84.99
What do I get with a Mapt Pro subscription?
  • Unlimited access to all Packt’s 5,000+ eBooks and Videos
  • Early Access content, Progress Tracking, and Assessments
  • 1 Free eBook or Video to download and keep every month after trial
What do I get with an eBook?
  • Download this book in EPUB, PDF, MOBI formats
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
What do I get with Print & eBook?
  • Get a paperback copy of the book delivered to you
  • Download this book in EPUB, PDF, MOBI formats
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
What do I get with a Video?
  • Download this Video course in MP4 format
  • DRM FREE - read and interact with your content when you want, where you want, and how you want
  • Access this title in the Mapt reader
$0.00
$47.60
$84.99
$29.99p/m after trial
RRP $67.99
RRP $84.99
Subscription
eBook
Print + eBook
Start 30 Day Trial

Frequently bought together


Learning DevOps: Continuously Deliver Better Software Book Cover
Learning DevOps: Continuously Deliver Better Software
$ 67.99
$ 47.60
Continuous Delivery and DevOps: A Quickstart guide Book Cover
Continuous Delivery and DevOps: A Quickstart guide
$ 14.99
$ 10.50
Buy 2 for $28.00
Save $54.98
Add to Cart
Subscribe and access every Packt eBook & Video.
 
  • 5,000+ eBooks & Videos
  • 50+ New titles a month
  • 1 Free eBook/Video to keep every month
Start Free Trial
 

Book Details

ISBN 139781787126619
Paperback713 pages

Book Description

Harness the power of DevOps to boost your skill set and make your IT organization perform better. If you’re keen to employ DevOps techniques to better your software development, this course contains all you need to overcome the day-to-day complications of managing complex infrastructures the DevOps way.

Start with your first module – Practical DevOps - that encompasses the entire flow from code from testing to production. Get a solid ground-level knowledge of how to monitor code for any anomalies, perform code testing, and make sure the code is running smoothly through a series of real-world exercise, and develop practical skills by creating a sample enterprise Java application.

In the second module, run through a series of tailored mini-tutorials designed to give you a complete understanding of every DevOps automation technique. Create real change in the way you deliver your projects by utilizing some of the most commendable software available today. Go from your first steps of managing code in Git to configuration management in Puppet, monitoring using Sensu, and more.

In the final module, get to grips with the continuous delivery techniques that will help you reduce the time and effort that goes into the delivery and support of software.

This Learning Path combines some of the best that Packt has to offer in one complete, curated package. It includes content from the following Packt products:

Table of Contents

Chapter 1: Introduction to DevOps and Continuous Delivery
Introducing DevOps
How fast is fast?
The Agile wheel of wheels
Beware the cargo cult Agile fallacy
DevOps and ITIL
Summary
Chapter 2: A View from Orbit
The DevOps process and Continuous Delivery – an overview
Release management
Scrum, Kanban, and the delivery pipeline
Wrapping up – a complete example
Identifying bottlenecks
Summary
Chapter 3: How DevOps Affects Architecture
Introducing software architecture
The monolithic scenario
Architecture rules of thumb
The separation of concerns
The principle of cohesion
Coupling
Back to the monolithic scenario
A practical example
Three-tier systems
The presentation tier
The logic tier
The data tier
Handling database migrations
Rolling upgrades
Hello world in Liquibase
The changelog file
The pom.xml file
Manual installation
Microservices
Interlude – Conway's Law
How to keep service interfaces forward compatible
Microservices and the data tier
DevOps, architecture, and resilience
Summary
Chapter 4: Everything is Code
The need for source code control
The history of source code management
Roles and code
Which source code management system?
A word about source code management system migrations
Choosing a branching strategy
Branching problem areas
Artifact version naming
Choosing a client
Setting up a basic Git server
Shared authentication
Hosted Git servers
Large binary files
Trying out different Git server implementations
Docker intermission
Gerrit
The pull request model
GitLab
Summary
Chapter 5: Building the Code
Why do we build code?
The many faces of build systems
The Jenkins build server
Managing build dependencies
The final artifact
Cheating with FPM
Continuous Integration
Continuous Delivery
Jenkins plugins
The host server
Build slaves
Software on the host
Triggers
Job chaining and build pipelines
A look at the Jenkins filesystem layout
Build servers and infrastructure as code
Build phases
Alternative build servers
Collating quality measures
About build status visualization
Taking build errors seriously
Robustness
Summary
Chapter 6: Testing the Code
Manual testing
Pros and cons with test automation
Unit testing
JUnit in general and JUnit in particular
Mocking
Test Coverage
Automated integration testing
Performance testing
Automated acceptance testing
Automated GUI testing
Integrating Selenium tests in Jenkins
JavaScript testing
Testing backend integration points
Test-driven development
REPL-driven development
A complete test automation scenario
Summary
Chapter 7: Deploying the Code
Why are there so many deployment systems?
Virtualization stacks
Executing code on the client
The Puppet master and Puppet agents
Ansible
PalletOps
Deploying with Chef
Deploying with SaltStack
Salt versus Ansible versus Puppet versus PalletOps execution models
Vagrant
Deploying with Docker
Comparison tables
Cloud solutions
AWS
Azure
Summary
Chapter 8: Monitoring the Code
Nagios
Munin
Ganglia
Graphite
Log handling
Summary
Chapter 9: Issue Tracking
What are issue trackers used for?
Some examples of workflows and issues
What do we need from an issue tracker?
Problems with issue tracker proliferation
All the trackers
Summary
Chapter 10: The Internet of Things and DevOps
Introducing the IoT and DevOps
The future of the IoT according to the market
Machine-to-machine communication
IoT deployment affects software architecture
IoT deployment security
Okay, but what about DevOps and the IoT again?
A hands-on lab with an IoT device for DevOps
Summary
Chapter 11: Basic Command Line Tools
Introduction
Controlling network interfaces
Monitoring network details with the IP command
Monitoring connections using the ss command
Gathering basic OS statistics
Viewing historical resource usage with SAR
Installing and configuring a Git client
Creating an SSH key for Git
Using ssh-copy-id to copy keys
Creating a new Git repository
Cloning an existing Git repository
Checking changes into a Git repository
Pushing changes to a Git remote
Creating a Git branch
Chapter 12: Ad Hoc Tasks with Ansible
Introduction
Installing an Ansible control node on Ubuntu
Installing an Ansible control node on CentOS
Creating an Ansible inventory
Using the raw module to install python-simplejson
Installing packages with Ansible
Restarting services using Ansible
Executing freeform commands with Ansible
Managing users with Ansible
Managing SSH keys with Ansible
Chapter 13: Automatic Host builds
Introduction
Creating an Apt mirror using aptly
Automated installation using PXE boot and a Preseed file
Automating post-installation tasks
Chapter 14: Virtualization with VMware ESXi
Introduction
Installing ESXi
Installing and using the vSphere Client
Allowing SSH access to ESXi
Creating a new guest
Allocating resources to a guest
Using the ESXi command line to start, stop, and destroy guests
Managing command-line snapshots
Tuning the host for guest performance
Chapter 15: Automation with Ansible
Introduction
Installing Ansible
Creating a scaffold Playbook
Creating a common role
Creating a webserver using Ansible and Nginx
Creating an application server role using Tomcat and Ansible
Installing MySQL using Ansible
Installing and managing HAProxy with Ansible
Using ServerSpec to test your Playbook
Chapter 16: Containerization with Docker
Introduction
Installing Docker
Pulling an image from the public Docker registry
Performing basic Docker operations
Running a container interactively
Creating a Dockerfile
Running a container in detached mode
Saving and restoring a container
Using the host only network
Running a private Docker registry
Managing images with a private registry
Chapter 17: Using Jenkins for Continuous Deployment
Introduction
Installing Jenkins
Installing the Git plugin
Installing a Jenkins slave
Creating your first Jenkins job
Building Docker containers using Jenkins
Deploying a Java application to Tomcat with zero downtime using Ansible
Chapter 18: Metric Collection with InfluxDB
Introduction
Installing InfluxDB
Creating a new InfluxDB database
Logging events with the InfluxDB REST API
Gathering host statistics with Telegraf
Exploring data with the InfluxDB data explorer
Installing Grafana
Creating dashboards with Grafana
Chapter 19: Log Management
Introduction
Centralizing logs with Syslog
Using syslog templates
Managing log rotation with the Logrotate utility
Installing ElasticSearch, Logstash, and Kibana
Importing logs into Elasticsearch with Logstash
Using Kibana queries to explore data
Using Kibana queries to examine data
Chapter 20: Monitoring with Sensu
Introduction
Installing a Sensu server
Installing a Sensu client
Installing check prerequisites
Finding community checks
Adding a DNS check
Adding a disk check
Adding a RAM check
Adding a process check
Adding a CPU check
Creating e-mail alerts
Creating SMS alerts
Using Ansible to install Sensu
Chapter 21: IAAS with Amazon AWS
Introduction
Signing up for AWS
Setting up IAM
Creating your first security group
Creating your first EC2 host
Using Elastic Load Balancers
Managing DNS with route53
Using Ansible to create EC2 hosts
Chapter 22: Application Performance Monitoring with New Relic
Introduction
Signing up for a New Relic account
Installing the New Relic Java agent
Using the performance overview
Locating performance bottlenecks with Transaction Traces
Observing database performance with New Relic
Release performance monitoring with New Relic
Server Monitoring with New Relic
Chapter 23: Evolution of a Software House
A brief history of ACME systems
ACME systems version 1.0
ACME systems version 2.0
ACME systems version 3.0
ACME systems version 4.0
The evolution in a nutshell
Summary
Chapter 24: No Pain, No Gain
Elephant in the room
Defining the rules
Including (almost) everyone
Openness, transparency, and honesty
The great elephant disclosure
Summary
Chapter 25: Plan of Attack
Setting and communicating the goal and vision
Standardizing vocabulary and language
A business change project in its own right
The merits of a dedicated team
The importance of evangelism
Courage and determination
Understanding the cost
Seeking advice from others
Summary
Chapter 26: Culture and Behaviors
All roads lead to culture
An open, honest, and safe environment
Encouraging and embracing collaboration
Fostering innovation and accountability at grass roots
The blame culture
Building trust-based relationships across organizational boundaries
Rewarding good behaviors and success
Recognizing dev and ops teams are incentivized can have an impact
Embracing change and reducing risk
Being transparent
Summary
Chapter 27: Approaches, Tools, and Techniques
Engineering best practice
How many environments are enough?
Developing against a production-like environment
CD tooling
The cloud
Monitoring
When a simple manual process is also an effective tool
Summary
Chapter 28: Hurdles Along the Way
What are the potential issues you need to look out for?
Summary
Chapter 29: Vital Measurements
Measuring effective engineering best practice
Measuring the real world
Summary
Chapter 30: Are We There Yet?
Reflect on where you are now
Streaming
A victim of your own success
[P]lan, [D]o, [C]heck, [A]djust
Exit stage left
Rest on your laurels (not)
Summary
Chapter 31: The Future is Bright
Expanding your horizon
Expanding beyond software delivery
What about me?
What have you learned?
Summary

What You Will Learn

  • Set up and familiarize yourself with all the tools you need to be efficient with DevOps
  • Design an application that is suitable for continuous deployment systems with DevOps in mind
  • Test the code using automated regression testing with Jenkins Selenium
  • Managing the lifecycle of hosts, from creation to ongoing management using Puppet Razor
  • Find out how to manage, use, and work with Code in the Git version management system
  • See what traps, pitfalls, and hurdles to look out for as you implement continuous delivery and DevOps

Authors

Table of Contents

Chapter 1: Introduction to DevOps and Continuous Delivery
Introducing DevOps
How fast is fast?
The Agile wheel of wheels
Beware the cargo cult Agile fallacy
DevOps and ITIL
Summary
Chapter 2: A View from Orbit
The DevOps process and Continuous Delivery – an overview
Release management
Scrum, Kanban, and the delivery pipeline
Wrapping up – a complete example
Identifying bottlenecks
Summary
Chapter 3: How DevOps Affects Architecture
Introducing software architecture
The monolithic scenario
Architecture rules of thumb
The separation of concerns
The principle of cohesion
Coupling
Back to the monolithic scenario
A practical example
Three-tier systems
The presentation tier
The logic tier
The data tier
Handling database migrations
Rolling upgrades
Hello world in Liquibase
The changelog file
The pom.xml file
Manual installation
Microservices
Interlude – Conway's Law
How to keep service interfaces forward compatible
Microservices and the data tier
DevOps, architecture, and resilience
Summary
Chapter 4: Everything is Code
The need for source code control
The history of source code management
Roles and code
Which source code management system?
A word about source code management system migrations
Choosing a branching strategy
Branching problem areas
Artifact version naming
Choosing a client
Setting up a basic Git server
Shared authentication
Hosted Git servers
Large binary files
Trying out different Git server implementations
Docker intermission
Gerrit
The pull request model
GitLab
Summary
Chapter 5: Building the Code
Why do we build code?
The many faces of build systems
The Jenkins build server
Managing build dependencies
The final artifact
Cheating with FPM
Continuous Integration
Continuous Delivery
Jenkins plugins
The host server
Build slaves
Software on the host
Triggers
Job chaining and build pipelines
A look at the Jenkins filesystem layout
Build servers and infrastructure as code
Build phases
Alternative build servers
Collating quality measures
About build status visualization
Taking build errors seriously
Robustness
Summary
Chapter 6: Testing the Code
Manual testing
Pros and cons with test automation
Unit testing
JUnit in general and JUnit in particular
Mocking
Test Coverage
Automated integration testing
Performance testing
Automated acceptance testing
Automated GUI testing
Integrating Selenium tests in Jenkins
JavaScript testing
Testing backend integration points
Test-driven development
REPL-driven development
A complete test automation scenario
Summary
Chapter 7: Deploying the Code
Why are there so many deployment systems?
Virtualization stacks
Executing code on the client
The Puppet master and Puppet agents
Ansible
PalletOps
Deploying with Chef
Deploying with SaltStack
Salt versus Ansible versus Puppet versus PalletOps execution models
Vagrant
Deploying with Docker
Comparison tables
Cloud solutions
AWS
Azure
Summary
Chapter 8: Monitoring the Code
Nagios
Munin
Ganglia
Graphite
Log handling
Summary
Chapter 9: Issue Tracking
What are issue trackers used for?
Some examples of workflows and issues
What do we need from an issue tracker?
Problems with issue tracker proliferation
All the trackers
Summary
Chapter 10: The Internet of Things and DevOps
Introducing the IoT and DevOps
The future of the IoT according to the market
Machine-to-machine communication
IoT deployment affects software architecture
IoT deployment security
Okay, but what about DevOps and the IoT again?
A hands-on lab with an IoT device for DevOps
Summary
Chapter 11: Basic Command Line Tools
Introduction
Controlling network interfaces
Monitoring network details with the IP command
Monitoring connections using the ss command
Gathering basic OS statistics
Viewing historical resource usage with SAR
Installing and configuring a Git client
Creating an SSH key for Git
Using ssh-copy-id to copy keys
Creating a new Git repository
Cloning an existing Git repository
Checking changes into a Git repository
Pushing changes to a Git remote
Creating a Git branch
Chapter 12: Ad Hoc Tasks with Ansible
Introduction
Installing an Ansible control node on Ubuntu
Installing an Ansible control node on CentOS
Creating an Ansible inventory
Using the raw module to install python-simplejson
Installing packages with Ansible
Restarting services using Ansible
Executing freeform commands with Ansible
Managing users with Ansible
Managing SSH keys with Ansible
Chapter 13: Automatic Host builds
Introduction
Creating an Apt mirror using aptly
Automated installation using PXE boot and a Preseed file
Automating post-installation tasks
Chapter 14: Virtualization with VMware ESXi
Introduction
Installing ESXi
Installing and using the vSphere Client
Allowing SSH access to ESXi
Creating a new guest
Allocating resources to a guest
Using the ESXi command line to start, stop, and destroy guests
Managing command-line snapshots
Tuning the host for guest performance
Chapter 15: Automation with Ansible
Introduction
Installing Ansible
Creating a scaffold Playbook
Creating a common role
Creating a webserver using Ansible and Nginx
Creating an application server role using Tomcat and Ansible
Installing MySQL using Ansible
Installing and managing HAProxy with Ansible
Using ServerSpec to test your Playbook
Chapter 16: Containerization with Docker
Introduction
Installing Docker
Pulling an image from the public Docker registry
Performing basic Docker operations
Running a container interactively
Creating a Dockerfile
Running a container in detached mode
Saving and restoring a container
Using the host only network
Running a private Docker registry
Managing images with a private registry
Chapter 17: Using Jenkins for Continuous Deployment
Introduction
Installing Jenkins
Installing the Git plugin
Installing a Jenkins slave
Creating your first Jenkins job
Building Docker containers using Jenkins
Deploying a Java application to Tomcat with zero downtime using Ansible
Chapter 18: Metric Collection with InfluxDB
Introduction
Installing InfluxDB
Creating a new InfluxDB database
Logging events with the InfluxDB REST API
Gathering host statistics with Telegraf
Exploring data with the InfluxDB data explorer
Installing Grafana
Creating dashboards with Grafana
Chapter 19: Log Management
Introduction
Centralizing logs with Syslog
Using syslog templates
Managing log rotation with the Logrotate utility
Installing ElasticSearch, Logstash, and Kibana
Importing logs into Elasticsearch with Logstash
Using Kibana queries to explore data
Using Kibana queries to examine data
Chapter 20: Monitoring with Sensu
Introduction
Installing a Sensu server
Installing a Sensu client
Installing check prerequisites
Finding community checks
Adding a DNS check
Adding a disk check
Adding a RAM check
Adding a process check
Adding a CPU check
Creating e-mail alerts
Creating SMS alerts
Using Ansible to install Sensu
Chapter 21: IAAS with Amazon AWS
Introduction
Signing up for AWS
Setting up IAM
Creating your first security group
Creating your first EC2 host
Using Elastic Load Balancers
Managing DNS with route53
Using Ansible to create EC2 hosts
Chapter 22: Application Performance Monitoring with New Relic
Introduction
Signing up for a New Relic account
Installing the New Relic Java agent
Using the performance overview
Locating performance bottlenecks with Transaction Traces
Observing database performance with New Relic
Release performance monitoring with New Relic
Server Monitoring with New Relic
Chapter 23: Evolution of a Software House
A brief history of ACME systems
ACME systems version 1.0
ACME systems version 2.0
ACME systems version 3.0
ACME systems version 4.0
The evolution in a nutshell
Summary
Chapter 24: No Pain, No Gain
Elephant in the room
Defining the rules
Including (almost) everyone
Openness, transparency, and honesty
The great elephant disclosure
Summary
Chapter 25: Plan of Attack
Setting and communicating the goal and vision
Standardizing vocabulary and language
A business change project in its own right
The merits of a dedicated team
The importance of evangelism
Courage and determination
Understanding the cost
Seeking advice from others
Summary
Chapter 26: Culture and Behaviors
All roads lead to culture
An open, honest, and safe environment
Encouraging and embracing collaboration
Fostering innovation and accountability at grass roots
The blame culture
Building trust-based relationships across organizational boundaries
Rewarding good behaviors and success
Recognizing dev and ops teams are incentivized can have an impact
Embracing change and reducing risk
Being transparent
Summary
Chapter 27: Approaches, Tools, and Techniques
Engineering best practice
How many environments are enough?
Developing against a production-like environment
CD tooling
The cloud
Monitoring
When a simple manual process is also an effective tool
Summary
Chapter 28: Hurdles Along the Way
What are the potential issues you need to look out for?
Summary
Chapter 29: Vital Measurements
Measuring effective engineering best practice
Measuring the real world
Summary
Chapter 30: Are We There Yet?
Reflect on where you are now
Streaming
A victim of your own success
[P]lan, [D]o, [C]heck, [A]djust
Exit stage left
Rest on your laurels (not)
Summary
Chapter 31: The Future is Bright
Expanding your horizon
Expanding beyond software delivery
What about me?
What have you learned?
Summary

Book Details

ISBN 139781787126619
Paperback713 pages
Read More
From 5 reviews

Read More Reviews

Recommended for You

DevOps Automation Cookbook Book Cover
DevOps Automation Cookbook
$ 35.99
$ 25.20
Practical DevOps Book Cover
Practical DevOps
$ 35.99
$ 25.20
Git Version Control Cookbook Book Cover
Git Version Control Cookbook
$ 26.99
$ 18.90
Learning Docker Book Cover
Learning Docker
$ 39.99
$ 8.00
Python Machine Learning Book Cover
Python Machine Learning
$ 35.99
$ 25.20
Advanced Continuous Delivery Pipeline [Video] Book Cover
Advanced Continuous Delivery Pipeline [Video]
$ 124.99
$ 106.25