Book description
Learn to use some of the most exciting and powerful tools to deliver world-class quality software with continuous delivery and DevOps
About This Book
Get to know the background of DevOps so you understand the collaboration between different aspects of an IT organization and a software developer
Deploy top-quality software and ensure software maintenance and release management with this practical guide
This course covers some of the most exciting technology available to DevOps engineers, and demonstrates multiple techniques for using them
Real-world and realistic examples are provided to help you as you go about the implementation and adoption of continuous delivery and DevOps
Who This Book Is For
This course is for developers who want to understand how the infrastructure that builds today's enterprises works, and how to painlessly and regularly ship quality software.
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
In Detail
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:
Practical DevOps by Joakim Verona
DevOps Automation Cookbook by Michael Duffy
Continuous Delivery and DevOps : A Quickstart Guide - Second Edition by Paul Swartout
Style and approach
This course is an easy to follow project based guide for all those with a keen interest in deploying world-class software using some of the most effective and remarkable technologies available.
Downloading the example code for this book You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the files e-mailed directly to you.
Table of contents
-
Learning DevOps: Continuously Deliver Better Software
- Table of Contents
- Learning DevOps: Continuously Deliver Better Software
- Learning DevOps: Continuously Deliver Better Software
- Credits
- Preface
-
I. Module 1
- 1. Introduction to DevOps and Continuous Delivery
- 2. A View from Orbit
-
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
-
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
-
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
-
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
-
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
- 8. Monitoring the Code
- 9. Issue Tracking
- 10. The Internet of Things and DevOps
-
II. Module 2
-
1. 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
-
2. 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
- 3. Automatic Host builds
- 4. Virtualization with VMware ESXi
-
5. 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
-
6. 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
- 7. Using Jenkins for Continuous Deployment
- 8. Metric Collection with InfluxDB
- 9. Log Management
- 10. Monitoring with Sensu
- 11. IAAS with Amazon AWS
- 12. Application Performance Monitoring with New Relic
-
1. Basic Command Line Tools
-
III. Module 3
- 1. Evolution of a Software House
- 2. No Pain, No Gain
- 3. Plan of Attack
-
4. 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
- 5. Approaches, Tools, and Techniques
- 6. Hurdles Along the Way
- 7. Vital Measurements
- 8. Are We There Yet?
- 9. The Future is Bright
- A. Some Useful Information
- B. Where Am I on the Evolutionary Scale?
- C. Retrospective Games
- D. Vital Measurements Expanded
- A. Bibliography
- Index
Product information
- Title: Learning DevOps: Continuously Deliver Better Software
- Author(s):
- Release date: September 2016
- Publisher(s): Packt Publishing
- ISBN: 9781787126619
You might also like
book
Implementing Modern DevOps
Help your organization join the DevOps revolution About This Book Helps you skill up your DevOps …
book
Learn OpenShift
Gain hands-on experience of installing OpenShift Origin 3.9 in a production configuration and managing applications using …
book
Hands-On Microservices with Kubernetes
Enhance your skills in building scalable infrastructure for your cloud-based applications Key Features Learn to design …
book
Enterprise DevOps for Architects
An architect's guide to designing, implementing, and integrating DevOps in the enterprise Key Features Design a …