What Is DevOps and Why You Should Have It
Shortening the software development lifecycle and time-to-market are the key benefits businesses get after implementing DevOps procedures.
Join the DZone community and get the full member experience.Join For Free
More than 85% of companies acknowledge speed as one of the critical factors in software development. Unfortunately, only 10% confirm readiness for rapid development and deployment. The difference between knowing the value of speed and getting the most of it lies within the realm of approach.
Are you familiar with companies like Amazon, Target, Etsy, Netflix, Google, and Walmart? There’s something that puts these famous brands in one line. It’s the DevOps approach for building and delivering software products most efficiently.
Bigger, stronger, and faster. To become a market leader with the software product, you should use flexible, rapid, or extreme ways to deploy a product. Shortening the software development lifecycle and time-to-market are the key benefits businesses get after implementing DevOps procedures. Where did it all start, and what is DevOps in software development now? What is a DevOps team, and what should not be called DevOps?
The History of DevOps
Developers and system administrators were constantly at war over responsibility for mundane duties, regular crashes, and most importantly — the side on which an error occurred this time. In the early 2000s, Patrick Dubois and Andrew Schaefer decided to stir the pot a bit.
In 2007, Dubois — Consultant, PM, and Agile Practitioner — assisted the Belgian government with a data center migration. It was supposed to combine the processes of the application development group and the group responsible for servers and databases. Frustrated with the general inconsistency, he wanted to create a working culture of interaction between admins and developers.
Andrew Schaefer, now Vice President of the Red Hat Global Transformation Office, has been an Agile Evangelist and has contributed to open source projects such as Puppet, OpenStack, Cloud Foundry, and Kubernetes.
In 2008, at the Agile Conference in Toronto, Andrew proposed the topic “Agile Infrastructure” for discussion. Only one person agreed to take part in the debate — Patrick Dubois. The same year, in Belgian Ghent, Dubois, and Schaefer held the first DevOps Days. Now there are about forty DevOps Days conferences around the world every year.
What Is DevOps in Software Development Now?
DevOps is about process automation, continuous testing, and code delivery. DevOps allows you to automate repetitive operations and reduce time and product cost. Investing in DevOps practices, you decrease the number of testers needed, implement new rules, and automate the necessary processes.
The Best DevOps Definition
DevOps is a bridge between Development and Operations that lets the teams reach continuous software integration and delivery. There are many approaches and ways to describe this culture, but we insist on sticking to the basics. So, what is the most accurate definition of DevOps? Unsurprisingly, it is given by GitLab: “… A software engineering methodology which aims to integrate the work of software development and software operations teams by facilitating a culture of collaboration and shared responsibility.”
The team deals with an environment for creating new builds, running tests, deploying products, monitoring performance, and processing the feedback automatically with no stops.
It may seem that we have come up with a new role or position one can take. DevOps cannot be considered a job title. It’s a procedure that aims at improving so-called old-school software development methods.
Chef, Maven, Puppet.
What Does a DevOps Engineer Do?
Continuous software development lifecycle based on DevOps philosophy comprises scoping, coding, testing, deploying, operating, and monitoring. Among the principal instruments used by a DevOps engineer, or anyone on the development or operations team using the DevOps approach, are:
- Docker — a containerization system for easier application topology creation and maintenance of interconnected components;
- Kubernetes — a scalable open-source orchestration platform that allows secure and optimized containerized workloads’ running;
- GitLab — a platform for establishing a seamless DevOps workflow that allows increasing overall software development return;
- Jenkins — an automation server commonly used for efficient CI / CD pipelines’ implementation;
- Puppet — an open-source DevOps system management tool that supports the continuous delivery model.
Further on, we will get to why strict separation of a DevOps engineer role is not always a good idea and how DevOps culture can and should be spread among the entire team.
What Is DevOps Not?
Initially, DevOps is not a separate position or role. It is a whole methodology, culture, and even philosophy. Still, there are many DevOps jobs on recruiting sites. In the perception of most HR specialists, “DevOps” (as a role) is the keeper of knowledge about how everything works in development and administration. This way, culture is replaced by a position, a function.
By highlighting the “DevOps” as a separate role in the team, the company, most often, allows the rest of the employees not to delve into this culture. It is a dangerous strategy, and here’s why:
- A DevOps specialist has a high risk of burnout. When the entire team sees a separate DevOps engineer as the only one responsible for adjusting the processes, the load becomes too much to bear, both psychologically and organizationally. Survation report claims that 88% of DevOps specialists report experiencing at least a certain level of burnout.
- The system doesn’t evolve fast enough. Team members torment DevOps specialists with questions, but in reality, old dogs don’t want to learn new tricks. If the entire DevOps load is only on the shoulders of chosen experts, development as a whole is not getting better.
- Together with such an employee appears a bottleneck. If the quality of processes rests on one person, they can manipulate the situation, demand a special attitude, unique compensation, etc. And when they leave for some reason, the system quickly degrades.
By isolating the DevOps culture into a single-person function, we deprive the entire team of the opportunity to grow. A good DevOps practice is when the team changes processes together to be more open, relevant, and workable. It is a good idea, though, to hire a person who will introduce the culture, control the processes, and guide the team through the DevOps practices.
What Are the Benefits of DevOps?
If you only plan to build and launch a small product (e.g., MVP), you will be fine without the DevOps procedure and processes. If you already have a working product and plan to scale it up or enter new markets, you can benefit enormously from implementing DevOps best practices.
- Zero-delay innovation and continuous development. It’s one of the key reasons to implement the DevOps philosophy. It will let you build and release products in a short time, ensuring longer cycles and no wall between development and operations departments. Any problems or bugs can be solved at the early stages.
- Efficient collaboration. DevOps philosophy encourages teams to get together and have one mutual goal. Looking at traditional development processes, you will notice that the teams don’t trust each other, and they don’t feel motivated enough to organize a good collaboration. Common goals, sharing the tasks and the risks unite people on their way to a common goal.
- Reliable software development. Some time ago, it was hard to make any updates to the program without compromising the quality. With the help of the DevOps approach, you can have continuous integration and delivery. There are special tools for monitoring and logging the team’s performance, and they help us keep the product’s reliability at a high level.
- Increased security. Security matters when you deal with an outsourcing company and offer your clients use your products. A team of developers can use automated compliance policies, fine-grained controls, and configuration management tools to keep up the speed without compromising security.
- Reaching key business objectives. DevOps is about reducing costs and speeding up delivery. In the context of in-house development, DevOps gives advantages to the head of the IT department. He has metrics for analytics and more opportunities to control the process. The speed of delivery is growing, and there are fewer errors because the tests work.
It is not an exhaustive list of benefits, but the answer to the “Why DevOps is important” question could take a book or two. If you are in for some semi-fictional dive-in to DevOps philosophy and best practices, check on The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win by Kevin Behr, Gene Kim, and George Spafford.
DevOps Culture: Philosophy Behind Innovation
The benefits of DevOps implementation are strong and evident, thus desired by many. However, DevOps culture cannot merge successfully with the company’s processes without general development and collaboration culture. These precious seeds need proper soil to yield a harvest. Here are some principles that lay the groundwork for efficient DevOps implementation.
Respecting people you work with/for/before/after. Respect the developers you work with and those who come after you. Today you are writing code for someone, and tomorrow you will end up with code that someone wrote for you.
Working with open source. It’s good to do something for the community and get gratitude and constructive criticism. DevOps proves that it is foolish to be a monopolist in knowledge. Sharing knowledge helps the entire market to grow.
Being invested in the customer’s business. More often than not, a developer at the implementation stage sees that the chosen way is erroneous but just wants to finish this project faster. DevOps culture inspires us to dig up the real problem and offer the best solution.
Constant skill strengthening. DevOps culture implies that things are always changing, and teams should constantly learn and apply new knowledge. There are still developers who write code as they did ten years ago, which sets the whole development process back.
Prioritizing teamwork. The time of Hollywood-like lone programmers is long gone. Everyone would like to think of themselves as a unique developer, but DevOps best practices encourage us to work in teams, applying practical approaches and adjusting our work. It is the evolution of development, its natural path.
In the end, with all this groundwork behind the philosophy, what is a DevOps team? Developers and IT operations specialists work collaboratively, showing respect to processes and other people, invested in the customer’s or company’s business, focused on exposing and eliminating blind spots in development, operations, and communications, strengthening skills, and sharing acquired knowledge and experience.
Published at DZone with permission of Anna Smith. See the original article here.
Opinions expressed by DZone contributors are their own.