DevOps is a combination of two words Development and Operations
In an organization, there are separate teams who work for different tasks such as development, testing, monitoring. Usually, the Product is developed first and then the operations team will perform their task. In the technical or Software Development Life Cycle, we refer to it as the Waterfall model where each phase has a sequential approach. However, in DevOps development team and operations team works in parallel. Basically, teams that previously work in a sequential manner now will communicate and collaborate for each phase in Software Development Life Cycle.
For example, if an application has multiple pages and services to be developed it will be divided into several modules, after the development of each module, it will transfer to UAT actual testing phases, and go live for users to use it. Based on user feedback appropriate steps are performed. During this entire period development of another module is carried out and the same cycle repeats. This process is recursive process.
➡️ DevOps aims to fill up the gap between the development team and operations team and reduce product time to go live.
➡️ To automate almost everything using tools and techniques under Software Development Life Cycle.
What we achieve from this approach
➡️ Reduce time to market for the product
➡️ Faster development
➡️ Emerges more communication and collaboration between teams
➡️ Most of the tasks can be automated.
➡️ Multiple developers can work on the same module
➡️ Improved customer satisfaction
People included in DevOps 🧑🤝🧑
There are multiple teams in an organization that contributed to software development even security teams. It’s not up to a certain role of the person, It’s about team collaboration and communication. It includes Analyst, developer, tester, end-user, stockholders, security team, network team, and each one who is a contributor to the software.
Terminologies in DevOps
Agile is a collaboration between teams to develop, make the right decision, break tasks into phases, and work iteratively.
You can simply refer it as file .zip, .jar. It could be source code or any project resources.
The build is just compiling your code which means convert the code into machine understandable language, generate final code bundles that are consumable.
It is a process of tracking modifications in code and maintaining history. Maintains version of code with information of who and when changes the code. These systems also help in resolving conflicts in a code.
Scrum is an important part of Agile. so there will be daily standup meeting where developer explains How they achieve the goal, What are they planning to do next, and is there any obstacle they are facing. Upcoming tasks plan, problems and progress are addressed in this meeting
When product development starts multiple developers start working on the same application and on different parts of a project or we can say modules. While integrating everyone’s code together opens multiple challenges such as developers’ availability, manual work, and requires a lot of time. Manually merging code will result in code errors and ultimately failure of functionality most of the time.
So, what DevOps enable is an easy way to merge code from multiple developers when it is completed after a week or month or either day to day to the main branch and create a build of a project and test it automatically. This will give insights that whether the code merged is correct or not and it is not broken.
Continuous delivery is one step ahead of CI. It is a process of releasing software through continuous integration and testing.
Continuous development is simply deploying software to the production environment which brings products out for the customer. Customers can provide feedback and based on this software are validated and this helps in improving customer satisfaction.
DevOps Life cycle
Any Software Development Life Cycle has different phases in its life cycle the same are applied to DevOps as well just the difference is DevOps Software Development Life Cycle will be continuous and iterative. DevOps revolved around working in iterations for each phase.
Continuous Planning and Development
As it follows the agile approach, In the very first stage of requirement gathering, the feasibility of the process is calculated. Along with this development of the application started. Now when it comes to developing multiple developers are doing their job and work on different parts of the application. In this case, there is a need to maintain those code versions. For this purpose version control tools are being used such as GIT, TFS, SVN.
➡️ A proper version of code is maintained
➡️ Ease of backtracking if something has failed in the code.
As I mentioned, if multiple developers are working on a code then at the end we have to merge that code to form an application or module and make it work for this if we merge code manually it compromises accuracy. For this, we are automatically generating builds using Jenkins-like tools.
➡️ Saves time
➡️ Less error and more accuracy
If development is continuous it should be tested at that speed, So when a build is created every time it gets tested to confirm it is working as expected or not. TestNG is a popular tool for this phase. Selenium, Junit also used widely.
➡️ If build is not as expected in next iteration that can be fixed and no need to wait for entire application to be developed.
When the build is ready and testing is done then deployment of code is performed so that, that piece of code will be in production and ready to use by the customer.
➡️ Customers can give feedback and refinement will be done in next iteration.
Continuous Monitoring and Feedback
After every deployment, it is essential to monitor your application if a change in infrastructure or change in code is affecting the app. Continuous feedback from customer is very useful in this phase.
➡️ Feedback will make product finest
➡️ Monitoring will help in maintenance of product
This is the smallest phase In a lifecycle of DevOps and it includes releasing software updates to market
➡️ Create finest product
➡️ Time to market time reduces
DevOps is simply the way of working which has been changing over in past years from sequential approach to iterative approach. DevOps is not about only tools, only development, and it’s not about automation of application development. Basically, it’s all about 3C communication, Continuation, and collaboration.
Also read: Effective DevOps