What Is DevOps?!
Concept of DevOps
Project and Project management is a common phrase in every industry. Project means a carefully planned set of activities which are executed to achieve a particular goal. It may be house construction, Designing a new vehicle model, Developing a new product or software system etc.
Project management is simply the practice of initiating, analyzing, executing, managing, and finishing the work of a team to achieve a set of goals and meet specific success criteria within a defined time. The primary goal of project management is to cover all of the project goals within the given set of constraints. The constraints may be the number of limited resources, lack of financial support, Weather situations etc..
In IT related projects, project management methodology plays a pivotal role in success of a project. Like any other methodology, DevOps is also adopted by the organisations according to the nature of the project. There are several methodologies like Scrum, Kanban, Waterfall model, Agile etc..
Waterfall Methodology:
In Waterfall methodology, project activities are divided into linear sequential phases, where each phase depends on the deliverable of the previous one and corresponds to a specialization of tasks.
As the name ‘Waterfall’ indicates, The fallen outfits cannot be re-entered to the previous stage. Which is the major disadvantage of this model.
Waterfall Structured Project Management Methodology:
Why is the Waterfall Model not so popular nowadays?
Simply because of..
1. High risk and uncertainty.
2. High risk of Backtracking or iteration, It costs huge when compared to others.
3. No working system/product is produced until the completion of the final stage.
4. Decisions set should be defined before the development of the project.
5. Technology may vary as it takes a long time to implement.
6. High risk on long running projects.
7. Cannot apply for short market projects.
8. Down time may be high for fixings.
9. It does not allow revision or revision can possess high risk in terms of project cost and resource time-sheets.
Agile Methodology:
In this strategy, each stage of projects is broken into ‘several iterations’ and all iterations are of the same duration. It uses incremental, iterative work sequences that are generally called as Sprints.
At the end of each iteration of particular operations, a product or a software system is delivered. The below image (Image Courtesy: Ouriken) is describing its difference with waterfall methodology.
What is the demerit then?
The development and testing will happen continuously. But the deployment stage would face issues which are out of the agile cycle. The development team always needs Agility but the Operation team needs Stability. In this trade-off, the deliverable might face some practical issues.
The development team always needs ‘Agility’ but the Operation team needs ‘Stability’.
What is DevOps?
DevOps is not a pure tool nor a technique. It is more like a cultural change. DevOps is the combination of practices, cultural philosophies and set of tools that catalyzes an organization’s ability to deliver applications and related services at high velocity. Through the methodology, development and operational life cycle of a system or product will go to the market at a faster pace than organizations using traditional software development and infrastructure management processes.
In other words, DevOps can be considered as a couple of key practices which includes continuous integration (CI) and continuous delivery (CD) as its corner stones . It couples a set of processes and methods to be adopted throughout the entire delivery pipeline and spans multiple stakeholders.
The practice of Development & Operations Engineers participating together in the entire software life cycle from the designs to the development process to production server support.
IMG: Infinite Loop Concept Of Devops with Continuous Development & Deployment:
The major advantages of DevOps are:
>> High level of efficiency & Team Collaboration.
>> Faster delivery of features & Higher customer satisfaction..
>> Early detection and correction of blocking.
>> Less chance of project failure.
>> Maximum utilization of resources & Less productivity cost.
>> More time to investigate.
>> Professional/Technical developments.
>> Improved flexibility and support.
The Devops methodology is achieved by the various tools in various sectors to ensure continuity in every stage. So, a DevOps engineer should know the role play of each tool in a software product life cycle. Devops Tools are purely based on the product or system which is to be developed. For an engineer, There are plenty of alternative tools available in each stage of development and operation. DevOps engineers will choose them in such a way that the maximum output with least amount of time without compromising on the quality.
IMG: Devops with its Tool Sets for Stages:
DevOps Stages :
The workflow of DevOps is in such a way that the agility and automation of the project is guaranteed all the time. The phases of DevOps tied together in a circular loop of development & Operation. Each of the stages are correlated and automated with the DevOps tools and it ensures the continuous dispatches of deliverables during the product life cycle. The stage diagram of DevOps is as follows:
DevOps Flow Diagram:
DevOps Tool Sets:
Developers commit the codes through Git or any other version controllers to the source code repository. The Junkin server set has open eyes there in the repository and it will catch the changes withing a regular interval. The Junkin server will create a new build based on the developer’s commits. The Junkin also has toolsets to notify the corresponding programmers with logs if the build becomes fails. If everything seems perfect, Junkins will deploy it into the test server and will do the proper testings. The same procedure will repeat as a cyclic process and ensure the automation on the development level. See the tool sets examples used in a DevOps system.
Base Principles of DevOps:
There are five basic principles which are essential when adopting for DevOps.
1. Customer-Focused Actions.
2. End-To-End Responsibility: Team must provide the bottom level support to the product for higher quality measurements.
3. Continuous Improvement: Maximum utilization of resources will reduce the costs and continuous deliveries will catalyses the production cycle.
4. Automation & Unity: Automation is a heart of DevOps concept not only on the basis of technical aspects but even in a meeting of the project.
5. Monitor & Testings: DevOps teams should have the tools for robust monitoring and testing engines.
Conclusion:
The ‘DevOps’ idea began in 2008 with a discussion between a French independent IT consultant Patrick Debois and Andrew concerning the concept of agile infrastructure. However, the idea became popular only in 2009 with the advent of the first DevOpsDays event that was held in Belgium. So that , Patrick Debois is called ‘Godfather of DevOps’. And, It is widely spread to modern project methodology within a short span. Even though it is a set of processes and practices, DevOps Engineers connect various tools and elements of coding along with library packages , software development kits and various components of integrations.
I believe the article covered some basic aspects of the DevOps and its terms. But As I mentioned earlier, the tools and related studies regarding Devops is wider than this.
Thanks & Regards
Very useful