The What, Why and How of DevOps The New Stack – thenewstack.io

This post is the first in a series.

Kastens Michael Cade takes you on a journey through 90 days of DevOps. Michael documented resources and lessons learned during a three-month span to provide readers a foundational understanding of the DevOps discipline and tools that align with the DevOps mindset. This blog post series summarizes his experience. In this first post, well examine the definition of DevOps and its purpose in an organization.

DevOps is a term used frequently by developers and other teams in an organization. Exactly what is it and why do we use it? Thats the question I tackled during the first few weeks of my 90 Days of DevOps adventure. In this post, Ill explore a definition of DevOps, the responsibilities of the DevOps engineer, DevOps relation to agile development and the DevOps life cycle. Well wrap up with some real-world stories from leading organizations who use DevOps to improve the speed and quality of software development.

Michael Cade

Michael is senior global technologist, Product Strategy at Kasten by Veeam. Based in the U.K. with over 16 years of industry experience, his key focus is on technologies such as cloud native, automation and data management. His role at Kasten is to engage with the community to enable influencers and customers to overcome the challenges of cloud native data management and be successful.

DevOps brings together a combination of software development and operations. Development happens when software developers program an application and test it, and operations begins once the application is deployed and maintained on a server.

DevOps encompasses a set of practices that help organizations reduce the time between product ideation and its release in production to the end user. Done correctly, DevOps helps to eliminate silos and ultimately shorten long, drawn-out software release cycles by introducing smaller, more frequent releases that keep pace with customer needs.

DevOps engineers have to possess a broad range of skills, including:

While DevOps engineers dont need to be experts in these areas, some may be specialists in one or more, which can help them succeed in the DevOps role.

One of the main tasks of a DevOps engineer is releasing a new application version into production in an efficient and automated way. Lets take a look at the DevOps application-focused life cycle and how DevOps engineers can use this model for a successful release.

For DevOps, the application life cycle consists of five main phases: development, testing, integration, deployment and monitoring. These repeat in an infinite loop once an application is released into production. Heres a summary of each stage:

During this stage, a developer will collaborate with team members and potentially customers to define requirements for an application. They will determine an IDE (integrated development environment) and the programming language to use. DevOps engineers should familiarize themselves with the IDE and language so they can make the best infrastructure decisions for the application. Version control is critical, as well as a code repository for storing and collaborating on code. The repository can be public or private, and created on GitHub or GitLab, for example.

Development consists of three main steps:

Once the requirements are set and the application is being developed, testing code in various environments is the next step. During this phase, QA tests for bugs. Containers will be used to simulate the test environment, eliminating the need for physical or cloud infrastructure. Automation in this phase will contribute to continuous integration and help DevOps avoid having tens or even thousands of engineers do the work manually.

Smack in the middle of the DevOps life cycle, integration involves committing changes to source code, usually on a daily or weekly basis. With every commit, automated testing can be employed to help detect issues or bugs prior to the next phase. Releasing the new code may be as simple as putting it into a registry or code repository where its accessible to your production servers.

Now its time to deploy the application into production for users to consume. During this stage, the code is deployed to production servers. Different applications will require different hardware and configurations, which is why application configuration management and Infrastructure as Code come into play. If your application is containerized but also available on a virtual machine, platforms like Kubernetes will be needed to orchestrate those containers and ensure you have the desired state available to end users.

Once the application is in production, continuous application performance monitoring is essential to ensure end users are getting the experience they require. Part of this process is capturing user feedback to factor into the product roadmap. Reliability is also key the application needs to be available to users when they need it. To that end, security and data management should also be continuously monitored. Some of the key parameters to monitor include CPU utilization, disk space and response time. Keeping logs enables developers to troubleshoot any issues.

The figure below illustrates the stages and shows how they operate in a continuous and infinite loop:

Do you know the difference between DevOps and agile? In short, agile development is an approach that focuses on delivering small frequent changes, rather than releasing a major update, with the goal of providing an optimal end-user experience. DevOps describes software development and delivery best practices based on cooperation between software developers and operations specialists with the goal of simplifying development and minimizing miscommunications.

The two concepts are similar, but there are important differences:

Combining agile with DevOps yields substantial benefits, including flexible management and powerful technologies, good communications, automation and better overall product quality. Best practices for merging agile and DevOps include:

DevOps is catching on among leading organizations in every industry that are realizing its many benefits. Here are three real-world examples of how a DevOps culture can be adopted successfully:

To summarize, DevOps is a combo of development and operations that allows a single team to manage the whole application development life cycle: development, testing, integration, deployment and monitoring. Its goal is to accelerate the development life cycle while delivering innovative features and fixes that delight customers and align with business objectives.

In the next blog post in this series, well discuss why its important for DevOps professionals to learn a programming language, and explore how to do it.

If youre just getting started with a DevOps function in your organization, the resources below may be useful:

The New Stack is a wholly owned subsidiary of Insight Partners, an investor in the following companies mentioned in this article: Docker.

Featured image via Pixabay

See the original post:
The What, Why and How of DevOps The New Stack - thenewstack.io

Related Posts

Comments are closed.