Book Image

DevOps: Continuous Delivery, Integration, and Deployment with DevOps

By : Sricharan Vadapalli
Book Image

DevOps: Continuous Delivery, Integration, and Deployment with DevOps

By: Sricharan Vadapalli

Overview of this book

DevOps is the most widely used software engineering culture and practice that aim sat software development and operation. Continuous integration is a cornerstone technique of DevOps that merges software code updates from developers into a shared central mainline. This book takes a practical approach and covers the tools and strategies of DevOps. It starts with familiarizing you with DevOps framework and then shows how toper form continuous delivery, integration, and deployment with DevOps. You will explore DevOps process maturity frameworks and progression models with checklist templates for each phase of DevOps. You will also be familiar with agile terminology, methodology, and the benefits accrued by an organization by adopting it. You will also get acquainted with popular tools such as Git, Jenkins ,Maven, Gerrit, Nexus, Selenium, and so on.You will learn configuration, automation, and the implementation of infrastructure automation (Infrastructure as Code) with tools such as Chef and Ansible. This book is ideal for engineers, architects, and developers, who wish to learn the core strategies of DevOps. This book is embedded with useful assessments that will help you revise the concepts you have learned in this book. This book is repurposed for this specific learning experience from material from Packt's Hands-on DevOps by Sricharan Vadapalli.
Table of Contents (8 chapters)

Planning the DevOps strategy


A good DevOps strategy, discussed in this book, helps the user gain in-depth and wider understanding of its subject and its application to multiple technologies and interfaces, to an organization provides focus, creates a common (unbiased) view of the current problems, develops the future state, unveils opportunities for growth, and results in better business outputs.

A holistic DevOps strategy, at the most basic level, must answer the following questions:

  • What are our business aims and goals?

  • How do we plan the roadmap? Where do we begin?

  • How should we channel our efforts?

  • What are we trying to accomplish?

  • What is the schedule for this?

  • What is the impact to the business?

  • How do our stakeholders see the value?

  • What are the benefits and costs of doing it?

A good DevOps strategy for an organization will bring multiple benefits, channel energy to focus on high impact problems, produce clarity to develop the future state, identify growth opportunities, and pave the way for better business outputs.

A DevOps platform strategy will be a unique and extensive program, covering every aspect of the software life cycle, which integrates multiple technologies, platforms, and tools, and posing numerous challenges that need to be handled with skill, precision, and experience.

An organization can consider the introduction of DevOps to cater to specific purposes, such as the following:

  • Automating infrastructure and workflow configuration management

  • Automating code repositories, builds, testing, and workflows

  • Continuous integration and deployment

  • Virtualization, containerization, and load balancing

  • Big data and social media projects

  • Machine-learning projects

There are a wide variety of open source tools to select for adoption in specific segments of DevOps, such as the following:

  • Docker: A Docker container consists of packaging the application and its dependencies all up in a box. It runs as an isolated process on the host operating system, sharing the kernel with another container. It enjoys resource isolation and allocation benefits like VMs, but is much more portable and efficient.

  • Kubernetes: Kubernetes is an open source orchestration system for Docker containers. It groups containers into logical units for easy management and discovery, handles scheduling on nodes, and actively manages workloads to ensure their state matches users' declared intentions.

  • Jenkins: Jenkins is a web-enabled tool used through application or a web server such as Tomcat, for continuous build, deployment, and testing, and is integrated with build tools such as Ant/Maven and the source code repository Git. It also has master and dump slaves.

  • Ansible: Ansible automates software provisioning, configuration management, and application deployment with agentless, Secured Shell (SSH) mode, Playbooks, Towers, and Yum scripts are the mechanisms.

  • Chef and Puppet: Chef and Puppet are agent-based pull mechanisms for the deployment automation of work units.

  • GitHub: Git is a popular open source version control system. It's a web-based hosted service for Git repositories. GitHub allows you to host remote Git repositories, and has a wealth of community-based services that make it ideal for open source projects.

There are comprehensive frameworks readily available, such as RedHat Openshift, Microsoft Azure, and AWS container services, with pre-integrated and configured tools to implement.

A few popular open source tools are listed here:

  • Source code management: Git, GitHub, Subversion, and Bitbucket

  • Build management: Maven, Ant, Make, and MSBuild

  • Testing tools: JUnit, Selenium, Cucumber, and QUnit

  • Repository management: Nexus, Artifactory, and Docker hub

  • Continuous integration: Jenkins, Bamboo, TeamCity, and Visual Studio

  • Configuration provisioning: Chef, Puppet, Ansible, and Salt

  • Release management: Visual Studio, Serena Release, and StackStorm

  • Cloud: AWS, Azure, OpenShift, and Rackspace

  • Deployment management: Rapid Deploy, Code Deploy, and Elastic box

  • Collaboration: Jira, Team Foundation, and Slack

  • BI/Monitoring: Kibana, Elasticsearch, and Nagios

  • Logging: Splunk, Logentries, and Logstash

  • Container: Linux, Docker, Kubernetes, Swam, AWS, and Azure