![]() |
VOOZH | about |
We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.
Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.
Follow TNS on your favorite social media networks.
Become a TNS follower on LinkedIn.
Check out the latest featured and trending stories while you wait for your first TNS newsletter.
This post is the first in a series.
Kasten’s 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, we’ll 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? That’s the question I tackled during the first few weeks of my “90 Days of DevOps” adventure. In this post, I’ll explore a definition of DevOps, the responsibilities of the DevOps engineer, DevOps relation to agile development and the DevOps life cycle. We’ll wrap up with some real-world stories from leading organizations who use DevOps to improve the speed and quality of software development.
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 don’t 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. Let’s 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. Here’s 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 it’s accessible to your production servers.
Now it’s time to initiate your DevOps deployment strategy. This means you will 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, we’ll discuss why it’s important for DevOps professionals to learn a programming language, and explore how to do it.
If you’re just getting started with a DevOps function in your organization, the resources below may be useful: