In IT organization, the operations (Ops) team give the direct interface between IT and the end user. Often, Ops is the one who communicate with users. An Ops organization include the group that takes over the completed "deployables" from the development (Dev) team and puts them into production, as well as the support team.
The Ops team has to be proficient and skilled so they can provide quality support to the user from the point of releasing the completed executables to production quickly, and knowledgeable in terms of being able to understand user problems and provide a quick and working solution.
Let’s step back a few decades. in the early stages of software development (50s and 60s), software development was a relatively new, but rapidly growing field. a defined approach for how to develop software didn’t exist, but one organically took the lead: the so called Waterfall approach. The Waterfall approach holds that developers should firstly define customer need, and then process through development until they release a single, finished software product that meets the stated need.
Developing with a rigid process methodology like waterfall means that only the
changes and features identified at the beginning of the project are included in the
release. As the need for improvements or additional features is identified during
development those things are sidelined and added to a list to be pursued in the next
release cycle. By the time the software is developed, tested, and deployed it is
already out of date to some extent and bugs or issues that are identified take longer
to address or get pushed to be handled in the next major release.
In 2001, The Agile Manifesto changed software development with the introduction of agile development. Agile methodologies taught developers to break down software development into smaller chunks known as "user stories," which accelerate feedback and creating product more fit with the market need.
For developers who were frustrated by the shortcomings of a Waterfall approach, Agile felt like a whole new world. But Agile wasn’t perfect either. Common drawbacks to Agile planning include missed deadlines, completed software components that are incompatible with each other due to separated scrums, or teams, and new features breaking old functions which is a direct result of missed cooperation with Dev teams and Ops teams. One thing linked all these problems with Agile development: lack of communication.
This is where DevOps begins to fill the gap: DevOps is a theory rooted in communication both within itself, as the developers and operators have to coordinate, but also across other departments. DevOps frequently communicates with ITOps to ensure secure and stable environments for testing, and their crossover to other teams like marketing and customer service makes sense as they deploy new software.
Some of the principles of Agile manifesto that lead to a DevOps environment:
- Satisfy the customer through continious delivery of valuable software
- Deliver working software frequently with a preference for the shorter timescale
- business people and developers must work togehether daily throughout the project
- DevOps not only talks about colllaboration between Development and Operations, but improved collaboration between all teams, including business.
- DevOps also promotes using a lot of automation to complete the many tasks and steps that go into making a potentialy shippable increment
- Replacing non-human steps such as build creation, environmental setup, trigger test cases, and automated deplyents multiple times a day.
It’s worth mention that The Agile methodology is aimed only at development. Although sometimes it extends to the entire organization, this does not mean that Agile will inevitably lead to DevOps. DevOps approach bring another approach to a software development. Therefore, DevOps and Agile approaches should not be viewed as synonyms that mean the same thing, but as different approaches that can work together in synergy.
Many adherents of new methodologies in software development believe that DevOps can be seen as an extension of Agile. Agile relies on cross-functional teams that typically include a designer, a tester, and a developer. DevOps adds in this scheme an operations person who can ease the transition from software to deployment. Because of DevOps as methodology naturally improves communication with other teams, DevOps can help automate processes and improve transparency for all teams.
An Agile approach take another approach at software development. Instead of thinking of development as a large, difficult think, Agile thinking promotes small, manageable changes developed quickly step-by-step that over time lead to finished product.
DevOps can also bring its own cultural shifts within an organization, including enhanced communication, greater stability and reliability.