One of the best DevOps tools to have in your arsenal is the right mindset. At its heart, DevOps is about people and processes working in harmony. The only way that's going to work is if people are going to have open and collaborative working relationships. And one of the things that DevOps does is support open collaboration.
Open collaboration is defined by workflows, which help define and coordinate tasks across teams and create transparency in the workflow. Many teams were previously siloed in a traditional IT environment, making access or collaboration between teams difficult. With DevOps, IT leaders want a team that's quick to solve problems or hit milestones. Having a team with this collaboration mandate also fosters better problem-solving and collaboration across groups.
Is There Some Kind of DevOps Methodology That Provides a Toolkit for Teams?
All teams will have a different DevOps toolkit, but DevOps is a methodology that many of them use, including various DevOps iterations. There's no one-size-fits-all, but the most significant part of your DevOps toolkit is the people and the team, and by far, the best part of the methodology is the DevOps workflow. This workflow is the key to how the DevOps methodology works.
Another great DevOps tool to implement is the Software Development Life Cycle (SDLC). The idea is to set up a way for teams to measure what they're doing, ensuring that they can progress from thought to action. DevOps Tools like Pivotal Tracker help to orchestrate the SDLC.
At the heart of the SDLC is a process known as 'driving thought.' When a team first starts to think about a new product, they will have crazy ideas and look far out there, but that's how most good things happen. There's a tendency to say, "This will take 15 years. Let's not do that," but the reality is the right way to think about things is how long it takes to do the next something. You can set up a team to try different ideas as quickly as possible. You can create a tracking mechanism that follows where each unit is in the SDLC.
You can set up a team to try different ideas as quickly as possible. You can create a tracking mechanism that follows where each unit is in the SDLC.
On the back end, Software as a Service (SaaS) gives a way to create a blueprint to help organize the entire project and a workflow that helps define the tasks. At the top of the project chart, every team can see the roadmap and contribute to the completion of the project.
What are the fundamental tenets of a successful DevOps approach?
All DevOps processes come down to transparency and collaboration. Those two fundamental values create a healthy environment for innovation to occur. Having a foundation of mutual respect between teams is essential, and when you have that, the time spent building the DevOps pipeline doesn't feel like work. You can see the value from a governance perspective because you know that you can quickly alert people about it when something isn't working.
One of the most significant points of DevOps is that it is iterative, and each step of the process is about collaboration. If you're building a DevOps workflow, you want the entire team to be included in it. A DevOps team can have many different members who each work on other parts of the workflow. Because of that, no team's more important than another.
Lastly, you're going to need some infrastructure to be able to build the workflow. Once teams set up the foundation of the workflow, they need the right DevOps tools to help them track work and monitor their results. Some essential DevOps tools include Scrum or Kanban boards, Git, Pivotal Tracker, CI/CD tools, and so on.
How does the technology stack up in the DevOps toolkit?
Many of the pillars of DevOps are at the heart of Agile and Kanban philosophy. A lot of those pillars are the same, but they're not in one tool. The different combinations of those pillars can use other means, but I see three primary software stacks within the DevOps toolkit:
- Brick-and-mortar: Where Agile and Kanban came from, this is the traditional way of doing things. It's monolithic and distributed. It looks more like the standard waterfall model, which is very rigid and focused on the features.
- Functional applications: This is the traditional software development model, which is not too rigid. You have different functional teams that build small increments of functionality and work on them in small groups, but there is no central command and control.
- Scrum-like applications: In this case, the teams are loosely connected and work on short iterations to accomplish the same goal. Sometimes that goal is building features or releasing a new version, but it can also be making the entire workflow or building a custom module.
The different combinations of those pillars can use other tools, but I see three primary software stacks within the DevOps toolkit:
Does this mean DevOps has evolved into a tool or framework?
There is no doubt that DevOps has evolved from a tool to a framework that builds around a core set of principles. If you take a step back, it's a change in our mindset and how we approach software development. When you look at the different approaches to action, such as Scrum, Extreme Programming, and other paradigms, there's not one methodology that works for everybody. But if you think about Agile and Kanban, those two core tenets are still there.
There's also been a significant shift in mindset from developers to project managers. It used to be that developers would dive right into a project and ship as quickly as possible. It's not unheard of for a developer to spend 30 hours or more on a feature that the end-user will probably never use.
But the project manager is really at the center of software development, and as a manager, you need to realize that before you can effectively manage a project. Project managers need to think about how the product will be deployed and tested, marketed, and maintained over time. These are much bigger problems than most developers can wrap their heads around. If they can't do that, the project will most likely fail.
That was the problem many software developers had in the past: They were doing all the work themselves, and they didn't have to think about those questions. The projects never got delivered, and the features never hit the market.
Another significant shift has been around data. The DevOps movement has been driven by the need for more and better data and tools to use that data better. With more powerfulDevOps tools and workflows, you can use data to gain actionable insights into your product. The DevOps movement has led us into an age of data science, where data is becoming a central part of everything we do.
Let's go back to the software development cycle. From a developer's perspective, they often say, "I don't need to know how this works. Just give me the artifacts, and I'll figure it out as I go along." That's what Agile is all about: making a clear path for developing products. That's what Extreme Programming is back: taking that Agile approach to workflows to build software. But now, we have data science teams that add a lot of value by helping us see patterns in data, uncover insights, and help the developers solve problems.
As DevOps has evolved, so have these frameworks and technologies. What are some of the trends we've seen?
The biggest trends have been around containers and cloud computing and making those technologies accessible to developers. As a user, you don't need to know about networking, storage, and operating systems. The machines you're using are just containers, which are easy to deploy, and there are different DevOps tools to work with them. You just load them up, go to work, and don't have to worry about how to set them up and how to manage them. And if you have an application that doesn't support containers, you can switch it over to a cloud service. It's all about DevOps tools and workflows and your familiarity with the toolset.
"Cloud" and "software-as-a-service" are among the most overused terms in the technology world.
Yes, and the idea of the cloud is a misnomer. Today's software is on the public cloud, which has become more critical as people understand how a single business can use one cloud to serve multiple verticals. You can be using Amazon Web Services for your eCommerce sites, and you could be using Google Cloud Platform for your advertising customers. You can have your private cloud, which some companies do, and you can mix and match across the different clouds.
Is it more important for a business to host its servers or use cloud-based servers?
The concept of a hybrid cloud is fundamental, as there's no clear winner between hosting your servers and using the public cloud. Some companies do their hosting for their applications, and some companies use AWS for everything, and then they run virtual machines in their own data centers. Most of us are somewhere in between.
Some companies don't need to host their servers, but they want to run their private infrastructure. If you don't need to host servers, but you still need the security, resiliency, redundancy, and manageability of a private cloud, that's where Kubernetes fits in. It's like having your own set of servers, but you can then push your application images onto your private cloud, and the infrastructure can run in the public cloud. That's a hybrid approach.
How would you define a DevOps style of workflow?
A workflow can be automated or non-automated. As far as workflow is concerned, you can have one, two, or three people working on a task. In a traditional waterfall way of developing software, you'd have the product owner leading the charge and leading that team, with the developers and the operations team. The QA team all working on the project as a team. It would take a long time for one team to produce something. That's now changing. With DevOps, you get a distributed group of different people working on a task, but there are still two different types of teams working on the same project. You still have a product owner leading the charge, but now that team can move quickly.
It would take weeks, even months, to produce an application and put it into production in the past. Now with DevOps, that same application can be in production in a couple of days. Some businesses have been using DevOps for years now, but other organizations are just getting started. The interest in DevOps is there, but it's always good to get out and ask people if they're aware of it and whether they're using it.
"The idea of the cloud is a misnomer. A lot of the software today is on the public cloud, which has become more important as people begin to understand how a single business can use one cloud to serve multiple verticals."
What's the most significant benefit of DevOps?
The most significant benefit of DevOps is moving quickly and developing products much more rapidly. When you get to DevOps, you can have many developers on one team that's all developing for a single product. The product owner can push an application into production that might only provide 1% of the desired final functionality, which can be a huge deal. A dev team can then focus on building the next 1% of the functionality while at the same time working with the operations team to set up a backup and recovery process so that if something goes wrong with the production application, they can roll it back.
When you start pushing code out into production, you get much better agility, but you also get much better security. The main reason that you're adopting DevOps is that you need to build better, more secure applications. You need a much higher degree of trust in your cloud providers, which in turn means that you should look for security certifications from your cloud provider.
The idea of the cloud is a misnomer. Today's software is on the public cloud, which has become more critical as people understand how a single business can use one cloud to serve multiple verticals. The idea is that you should be able to do your business logic on the public cloud and then access that business logic from private data centers, so you can have two separate, isolated architectures. That's what the public cloud was supposed to be.
Want to excel in your next role as a DevOps Practitioner? Try answering these DevOps MCQs and know your understanding of the concepts.
The Post Graduate Program in DevOps,a comprehensive certification program offered in partnership with Caltech CTME, is a great way to go deeper into DevOps team management and administration. It will help you gain the skills and practical experience to manage a DevOps team using the tools described here.