Codementor Events

DevOps: Concept and Scope

Published Jul 23, 2018

Software development cycle has so much evolved from what it used to be, to a more efficient and pragmatic one. This evolution was necessary because of the ever increasing number of real world problems with complex solutions. Before now, the software development life cycle, otherwise known as the SDLC has been a very rigid one. Of course, it was employed in solving the software development problems at that time, however, the need for a better way of doing things gave rise to the Agile methodology.

Agile software development can be described as a set of methods and practices that guide a software team. These methods and principles allow for the mindset of collaboration with all stakeholders and flexibility in responding to and effecting changes as the team builds a software product. Agile method of software development has recorded tremendous success both in the aspect of managing the expectations of all the stakeholders, timely delivery of a working product, and team rapid response to changes from the client. However, it seems that the Agile methodology was focused more on the “ coding ” aspect of the software life cycle. Not much emphasis was laid on the deployment, securing, and scalability of the software product in the Agile ecosystem. There was a virtual wall between the team that writes the code and the team that ships or deploys the code. This resulted in so many challenges that were discovered to affect both teams. The solution to this problem was found in two words joined as one viz.: Development + Operations = DevOps

Definitions

DevOps as was hinted previously, comprises of two words Development and Operations. “It is a software engineering practice that aims at unifying software development (Dev) and software operations (Ops)” — wikipedia. Amazon Web Services ( AWS ) defined DevOps as “the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management process”. The beauty of the above two definitions is that both agree that DevOps is a practice. However, some professionals in this field believe that it is not just a practice, it is a mindset. Chidiebube Amos, a DevOps learning facilitator at Andela defined it as “A mindset that minimises the challenges in shipping and securing software products in an AGILE way”. Worthy to note from this later definition is the mention of the Agile Way. DevOps extends Agile principles beyond the boundaries of “the code” to the entire delivered services. While there may be several definitions of what DevOps is, it is important to note that what DevOps hopes to achieve in the Agile methodology is the understanding, practice and mindset that software is not done until it is successfully delivered to the end user and meets their expectations.

Why DevOps

There are number of reasons why DevOps is relevant in the software development world:

1. Improved Team Communication and Collaboration: Prior to the time of DevOps, it has been a story of the development team turning over the application to the operations team and then waiting to see the outcome. Often times, this built a high wall between the two teams because the Dev team was just concerned about completing the features while the Ops teams were concerned about shipping and deploying. Each team was just not concerned enough about what goes on in the other team. Simply put, there was lack of collaboration and communication. DevOps brings to the table a culture where these teams are unified and have an ultimate goal which is having a working application delivered in the most effective and efficient manner to the end user. The culture becomes focused on performance rather than the individual team goals.

2. Shorter Development Cycle: With the concept of DevOps, the Development and Operation teams become harmonious. This implies that shorter time is spent in the development and deployment of the application due to proper communication and information sharing. To better understand this point, assuming it takes a team of developers 2 hours to finish the product and another 2 hours for the Ops teams to figure out how to setup and deploy the application, that means a total of 4 hours is spent by both team. This much time spent by the Ops team is very unnecessary assuming both team operate in sync with each other. In other words, if the Ops teams were aware of the environment variable to set, what version of packages and the application decencies that the Dev team used etc, it can greatly cut down the amount of time they spend in shipping and deploying the entire application. The end result is that shorter time is spent in building and delivering the product to the end user.

3. Quicker Mitigation of Software Defects: Due to better communication and collaboration between operations and software developers, bugs and defects in the application can be identified and solved at any stage of the development cycle on time. More so, recovery from failure is much faster when the development and operations teams are working together, exchanging ideas and accounting for both teams’ challenges during development.

4. Increased Efficiency: DevOps brings automation to tasks that greatly increase the efficiency of software development process. Tasks such as testing is automated using Continuous Integration (CI). Cloud-based platform help speed up the process of deployment and testing operations. Build acceleration tools can help compile code more quickly. These tools help accelerate the software development process.

5. Better Resources Management: Resources such as time and manpower are better utilized in an Agile way with DevOps. This is because there is no wall of communication between the QA teams and testers, or between the developers and operations etc. The outcome of this is proper time management and quicker delivery of resources to the next team that needs it.

DevOps Toolset

DevOps employs the mindset of people over process over tools. Tools may help in facilitating the job but if the process and the person using the tool is not functional or properly managed, then the tool is as good as nothing. This is why DevOps prioritizes people over the process and process over the tool.

However, if the appropriate tool is not used, then disaster may not be entirely avoided. There are numerous tools that DevOps can use in carrying there tasks, here are few of them:

1. Cloud Computing Platforms: The term Cloud is a metaphor used in the tech world to denote the internet. Of course this explanation is very basic but very relevant in understanding the concept of cloud computing. “Cloud computing is an information technology (IT) paradigm that enables ubiquitous access to shared pools of configurable system resources and higher-level services that can be rapidly provisioned with minimal management effort, often over the Internet" —wikipedia. In a simple term, Cloud Computing implies storing and accessing data and programs over the internet instead of the conventional way of using physical hardware. There are three basic models used in cloud computing, they are:

  • Infrastructure as a Service (IaaS)
  • Platform as a Service (PaaS)
  • Software as a Service (SaaS)

The explanation of these models are quite beyond the scope of this article but they are very easy to understand.

Some of the popular vendors that offer these services are listed below in no particular order:

  • Amazon Web Service
  • Google Cloud Platform
  • Microsoft Azure
  • Rackspace
  • OpenStack
  • Pivotal Cloud Foundry

2. Virtualization Platform: The word ‘virtual’ denotes something that is not physical. In this context, virtualization means the use of software to abstract hardware. This is the backbone of the cloud platform that we defined above. Virtualization can apply to applications, servers, storage, and networks. Common tools used for virtualization in DevOps are:

  • VMware
  • Ganeti
  • KVM (Kernal-based Virtual Machine)
  • Xen
  • VirtualBox
  • Overt
  • Packer
  • Vagrant
  • Virtual
  • QEMU

3. Containerization: This is one of the toolsets that makes life easy. I mean that literally by the way. The idea of container is to have everything that the software requires to run in one filesystem. The essence is to enable an automated deployment of software. In a more professional term, “Application containerization is an OS-level virtualization method used to deploy and run distributed application without launching an entire virtual machine (VM) for each app” — searchitoperations.techtarget.com

Tools that are used commonly for this are:

  • Docker
  • LXC (Linux Container)

4. Continuous Integration: Continuous Integration is the process of automating and testing code as changes are made to the source code. These changes to the source code are often made in a version control repository such as the Github. Any changes made to the source code in the repository will trigger a build system to grab the latest code from the shared repository and to build, test, and validate the full master branch. CI tools in DevOps are:

  • Jenkin
  • Travis CI
  • Team City
  • Gradle

5. Collaboration Collaboration is one of the greatest tools in DevOps. The whole philosophy of DevOps hinges on collaboration. There are several tools that can be used to collaborate with teams in DevOps ecosystem. They are:

  • Slack
  • Microsoft Teams
  • HipChat
  • Basecamp
  • Favro

Before I take my final bow, let me mention the word CAMS to you. Thats right! You can say it out loud. This is an acronym coined by Damon Edwards and John Willis at the DevOpsDays Mountainview 2010 and it stands for C ulture A utomation M easurement and S haring. These are the core values of the DevOps movement and it is important and necessary that every organization that wishes to apply the concept of DevOps, should apply CAMS values. These values are on their own very vital in building a very successful team. They are simply adapted as DevOps values to make the sky your starting point as against your limit.

Discover and read more posts from Kene Nnamani
get started
post commentsBe the first to share your opinion
Katarzyna Szajchudinowska
6 months ago

The article is very informative and useful. It explains the concept of DevOps and its scope well. I realized that DevOps is a practical approach that integrates development and operations to achieve efficiency and reliability in application deployment. I also had a clear understanding of the roles and responsibilities of DevOps professionals for automation, version control, and continuous integration and deployment because the article clearly covered these aspects. By the way, I have excellent specialists in this field, https://dbserv.com/ . I myself have contacted them more than once, and I am very pleased with the quality of their work. Overall, the article helped me understand DevOps more deeply and how important this approach is for the modern software developer.

Show more replies