top of page
Search

DevOps Revisited - Part I

Writer's picture: Sachin TahSachin Tah


DevOps is one hot buzzword in the software industry, however, there is still a lot of confusion surrounding it. What exactly is DevOps? Is it a tool, framework, or process? To answer this let us first understand what constitutes a software development process and what triggered DevOps to emerge as a savior.


People, Process, and Technology are the three pillars on which Software development is carried out. All three are of prime importance, however, if I have to prioritize, then surely People comes first, then Technology, and then Process.


People - The core of any software development is its people, they are the ones who turn a vision into reality. You need to choose the right kind of people for a project, people who are well trained and experienced in process, tools, and technologies.


Process - Process drives the development cycle by introducing the right kind of methodology in place suitable as per the project.


Technology - Technology is the enabler that provides the right kind of tools for developing software.


When it comes to people, the software team is divided into different categories depending upon the skill sets and phases of a project. Broadly, these teams are development, quality analysts, operations, security, etc. depending upon the scale of a project. I am not going to give insight into what are the roles and responsibilities of each one of them.



Software development follows a project life cycle referred to as the Software Development Life Cycle (SDLC).


SDLC has many phases with people with different skillsets responsible for the execution of these phases.






Typically a software project team consists of Architects, Designers, Managers, Developers & Quality Analysts. These guys are responsible for the Analysis, Design, Development, Testing & Support (Bug Fixes) of an application.


On the other hand, the operations team consists of Administrators, Release engineers, and Quality Analysts. The operations team assists the development team by performing tasks like release management, monitoring, and support. Often these two different teams work in isolation with a huge amount of communication gaps between the two.




  • A developer writes application code, checks it in a repository, and informs the team leader.

  • Team leader merges source code received from multiple developers, builds it, and packages it.

  • If the build fails, the leader asks the developer to check in the correct version of the code again.

  • Once the build is complete, the development team asks the operations team to release the application in a test or production environment.

  • Once released, operation teams inform the QA team to start their testing.

  • QA tests the application and communicates bugs to the development team.

  • The development team makes necessary fixes and re-release the application. This cycle goes on and continues in the support phase as well.

As you can see, there is a huge amount of communication and interdependencies between the teams in order to get the ball rolling. Smaller projects may be able to cope up with these challenges however for bigger projects, a lot of issues start to pop up during a project life cycle. This results in issues like Lengthy release cycles, human dependency, more time to market, expectation mismatch, the mismatch between expectation versus reality, lengthy project life cycle.


Finally blame game starts between different teams resulting in more loss of productive hours. Also, if you have noticed carefully, there are so many activities that can be automated very easily by using the right kind of tool in right place.Development + Operations (DevOps).



Development + Operations (DevOps)


Welcome to DevOps, a methodology which is a combination of Process, Tools, and best Practices aligned together so as to assist development and operations teams. DevOps helps to bridge gaps, automate tasks, and help collab together in the entire project lifecycle right from the planning phase to deployment and support.


Process and Tasks automation is something that DevOps embraces to make periodic deliveries and that too across platforms. What we see in the above logo is an ongoing loop providing continuous feedback hence helps in achieving continuous improvements in the overall SDLC process.


Automating a task or a process gives you an edge over a manual one and if done correctly can provide amazing results. Automation can help you in achieving the following

  • Higher Efficiency

  • Reduced Error

  • Scalability

  • Consistency

  • Reduced Cost

DevOps cut across all the phases of a project life cycle. DevOps complements the Agile development approach and shows its true potential if used together.


Let us see how DevOps influences the entire development life cycle and advocates the usage of tools in almost every phase of SDLC, right from project planning to application release and support.




The below figure shows various phases of a project and suggests tools that can be used to achieve the desired result.




The toolset mentioned above is for reference purposes only. Some tools may cut across different phases of the project lifecycle, (example Jenkins) while others are very specific to a phase (example Selenium).


You need to select a tool based on your requirements and evaluation results of the same. These are just a few examples, you can look out for a more extensive list on the web if required.


That's it for part one, in the second and final installment of this DevOps, I will cover the following topics

  • Dev Ops Best practices (CI/CD/Agile/Microservice)

  • Practical Example using Jenkins

  • Benefits of DevOps


Till then


Happy Reading…..


102 views0 comments

Recent Posts

See All

Comments


bottom of page