What is DevOps and why is it importantSaša Zgrabljić
So what is DevOps?
In a nutshell, DevOps is a combination of development and operations. So what does that exactly mean?
First, it’s easier to say what DevOps isn’t – it’s not a technology, programming language or a standard. Many DevOps supporters will say DevOps is a culture or a movement – a way of improving collaboration and communication between the operations and development teams, which have always functioned as separate ecosystems.
The main goal of DevOps is to shorten the software development cycle, using technology (especially automation), as well as changes in internal processes, company culture and mindset.
DevOps is all about agility and releasing software faster and more reliably. So with that in mind, most of the “agile development” values, principles and methods and practices can easily be applied to DevOps.
What Are the Challenges DevOps Solves?
Prior to DevOps culture becoming more and more popular, the development process was fragmented between multiple teams working separately:
- One team was in charge of gathering information about the business requirements.
- Another team was in charge of the development of the application.
- The QA team performed the tests in an isolated environment.
- The code is then released to the deployment team, which can further consist of different units such as networking, infrastructure etc.
In such an environment, teams had little understanding of the big picture, leading to bottlenecks, slower delivery and problems in communication.
This usually happens because:
- None of the teams fully understand the challenges other teams face, which can cause tension along the way
- Teams working on the application often have a little context of the business purpose of the software
- Teams don’t have the same goals, or can even have opposing goals, which causes further rifts in communication
- It’s harder to take full responsibility for the process when you’re not fully involved in it, which is why the finger-pointing starts as soon as something goes wrong.
With DevOps, such issues are eliminated by establishing cross-functional teams which will share responsibility for the project as a whole.
Everyone working on the software development and deployment project is combined into a single workflow, with a single goal and single focus – eliminating bottlenecks, blame game and sharing responsibility equally between all involved parties.
If you’d like to see more examples of why DevOps is excellent for an organization, check out Dzone’s article where they discussed problems solved by DevOps with 40 IT executives from 37 organizations.
Benefits of DevOps
As discussed, DevOps makes the whole development process faster and better, and you’re probably wondering how and why. So let’s go into more detail into the benefits of implementing DevOps in your organization.
Speed and rapid delivery
With automation, continuous delivery, and quick feedback cycles, DevOps teams can deliver software quickly and efficiently, innovate faster, and adapt to changing market conditions better. By increasing the frequency and pace of new releases, developers can introduce improvements swiftly, in turn, responding to customers’ needs better. This also means issues are fixed more frequently, increasing security and customer satisfaction.
Reliability and high quality
In today’s world, being fast while maintaining excellent quality is crucial. With continuous integration and continuous delivery, developers can test each change before pushing it live, in turn ensuring the fast-paced process doesn’t cause a drop in quality. With reliable monitoring systems, data analysis and pattern recognition, the operations teams can ensure applications continue to perform well in real-time.
Improved collaboration and happier teams
Teams working separately on projects won’t be aware of how their actions affect other groups in the organizations, which can result in misaligned priorities, “not our problem” mentality and problems in communication. With developers and operations teams working closely, it’s easier to achieve ownership and responsibility within your organization’s teams.
Such collaboration also improves employee engagement, as they become more motivated to engage in brainstorming sessions and work together on solutions to common problems. While working closely with colleagues with different areas of expertise, employees are given a chance to extend and upgrade their technical knowledge.
All of these makes your employees happier, and in turn, more productive.
Getting Started With DevOps
By now, you’ve seen all of the benefits of introducing DevOps to your organization, and you might be wondering how to get started. So first things first: there is no generic guidebook that will guide you through this process. Introducing DevOps into an organization is not a “one size fits all” situation, and the process depends on many factors.
The first step is to define what matters to your organization. Is it vital to know why you’re even considering this change, and how it ties in with your company’s goals and objectives. Once you’ve identified what’s important, you can define and measure performance indicators such as code quality, customer satisfaction, uptime, etc. These metrics will help you confirm whether the changes you’re introducing have a positive impact, or you need to iterate and make changes.
Once you know what’s important, and what metrics will define the success of the project, you can start introducing changes in your organization:
- Start small – don’t expect everything to change instantly. Forcing teams to cooperate instantly on a large project might backfire, instead, start with smaller projects to allow your employees to adapt. By working in a DevOps way on smaller projects first, your organization will have time to understand the DevOps core values and principles better.
- Avoid the blame game – when you’re introducing new processes into your organization’s workflow, failure is bound to happen. When failure occurs, the easiest thing to do is point fingers and blame someone for the failure. DevOps culture doesn’t allow such behaviour – everyone in the organization has to accept responsibility for the whole project, and embrace failure and mistakes as a learning experience.
- Enhance your teams’ skills and communication – you can’t expect change if your teams don’t’ understand what they’re supposed to do and why. That’s why it’s essential to provide training to your employees, so they learn the goals of your organization and the processes driving them.
- Pay attention to security – it’s vital to introduce security during the early stages of the DevOps process, as it can be a pain to do so later on. By using automated compliance policies, fine-grained controls, and configuration management techniques, you’ll be able to introduce DevOps into your organization without compromising security.
- Measure all the things – don’t do things blindly; it never ends well. And that’s why it’s essential to keep measuring the results of the changes you’re introducing. Never forget about your performance indicators, they will let you know if you’re on the right track or not.
- Automate and iterate – automation is one of the key components of the DevOps culture. Once you’ve identified the bottlenecks slowing down the development process (by using kanban, for example), you can implement processes and automation. Then, measure the performance indicators defined earlier, and see if the situation changes. If it doesn’t, or it gets worse, iterate and measure again.
What Tools Are Used in DevOps?
Once you’ve started introducing some of the changes listed above, you’ll start looking for tools which will help you with this process. Below are some of the essential tools you’ll need:
- Communication tools – as mentioned many times above, communication is key when it comes to DevOps. With that in mind, you’ll need tools which facilitate good communication between your teams. Popular communication tools are Slack, for real-time communication, Zoom, for calls, Asana for project tracking, Jira, for bug tracking, etc.
- Source code management system – this is the place where your developers will check and change code. Such tools are especially necessary if you have multiple developers working on the same code – Git, SVN, Cloudforce, etc.
- Build automation systems – build automation is a prerequisite to effective use of continuous integration – Maven, Gradle, etc.
- Automation Server – automation servers are used to compile the code on the source code repository into an executable code base – Artifactory, Teamcity, etc.
- CI/CD and configuration management tools – these tools offer pipeline management through configuration management, app deployment, task automation, and IT orchestration – Jenkins, Puppet, Chef, Ansible
- Cloud computing and storage – whether you use multi-cloud or single provider, there are many options available, depending on your application’s needs – AWS, Microsoft Azure, Google Cloud Platform, etc. We have decided to go with AWS, and we’re quite specialised in it, so if you need any help with it, get in touch.
- Test Automation – if you’ve automated everything, you need to automate tests as well. You can’t get to the point of continuous delivery if your workflow still includes manual testing. Popular tools are – Selenium and Water.
One tool to rule them all
Although there are many tools available on the market, GitLab is a tool which brings all of these features together. GitLab is a complete DevOps lifecycle tool which contains all of the stuff mentioned above: Mattermost (for communication), Git (for source code management), CI/CD, issue tracking, wiki). With GitLab, you’ll have all of these tools available on one place, with much more available through 3rd party integrations (Jira, Jenkins, Sentry etc.). We also offer a Managed GitLab variant, where we take care of the management, including updates, backups, licences and security, all while providing you with continuous proactive support. With Managed GitLab, you won’t have to worry about any of that stuff, and you’ll be able to focus on developing your product.
There are also many more tools you’ll encounter or require along your DevOps journey. The above tools are just the basics, but as your experience in DevOps grows, so will the array of tools you use in your day-to-day work grow. Victorops compiled another great list of tools you might need when switching to DevOps.
DevOps is not a thing you’ll learn or introduce in a couple of months. It’s an ongoing process which requires both you and your organization to change and adapt.
You will learn mostly from your organization’s challenges, but you can also take advantage of both online and offline resources, such as podcasts, videos and books. One of the most popular books on the topic is Gene Kim: The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win, so that might be a great place to start.
Also, as you’ve probably noticed so far, we in Sysbee are DevOps devotees. For us, DevOps is not just a buzzword; it’s a culture in which our system engineers have a close collaboration with our clients and their developers to pursue the primary goal of having the most stable, secure, scalable and cost-effective IT infrastructure. So if you’ve decided to embrace the DevOps way, let us know, we might be able to help you with it.
We also wish you the best of luck in this process. It will be a challenge, as any significant change usually is, but the results will be worth it. DevOps helped many organizations and companies so far, as we’re sure it will help you as well, should you decide to embrace it.