Transcript for:
DevOps Lifecycle

[Music] hello guys this is Arvin from a dareka and I welcome you all to this session on DevOps lifecycle so before we move any further let us have a quick look at the agenda for today's session we will begin our discussion with the topic why DevOps and in this topic we will cover a few pointers about the history of DevOps the second topic is what is DevOps and we will see how DevOps solves the problems of the previous software development models the final topic is the main topic of this session that is the DevOps lifecycle I hope I am clear with the agenda guys just a reminder in case you have not yet subscribed to our YouTube channel please do subscribe and also hit the bell icon so that you are always updated about the latest videos from in Eureka so without wasting any further time let us begin this session with our first topic why devups so before DevOps we had this waterful model of software development this model was a straightforward and a linear model that followed a top-down approach as you can see in this diagram it had various phases starting with requirement gathering and analysis in this phase you gather the requirements from the client for developing an application and then you analyze those requirements once you are clear with the requirements you proceed further with the design phase in this phase you think about how the software is going to look like and you prepare a blueprint of the software the next phase is the implementation phase where you begin the coding of the application once the application is developed it is tested in the verification phase after testing the application is deployed on the production servers and once the application goes live it is monitored in the maintenance phase so it looks like a perfect model guys isn't it but no this wasn't a perfect model since it had a few drawbacks one of the drawback of this model is unless you complete a particular stage you cannot proceed to the next stage this was a very time-consuming model this model was suitable only for projects where requirements are stable by stable I mean the requirements will not change with the time but in today's world this is a very unlikely scenario because requirements keep on changing no working software is delivered until the stage of the waterfall model also this model was not suitable for large projects and the object oriented projects so these were a few drawbacks of the waterfall model the next model is the agile model in this model the software is broken down into various iterations each eye tration has various phases such as planning design development and so on the duration of each iteration is generally two weeks to eight weeks so what happens in agile model is you release the software in the first iteration after this you gather the feedback from the end users or the customers about the application and you try to incorporate those changes into the second iteration and then you again release the software into the market which is the second iteration you again repeat the same procedure and then you release the software again which is the third iteration and so on so this model was better than the previous model but this model too had a few drawbacks while this model brought a JIT to the development team the operations team still did not come up to speed with the development team because of this there was constant conflict between the development team and the operations team this conflict hampered the pace of the software development and the release so this was the biggest drawback of the agile model and the next model or the next approach is the DevOps approach so guys what is DevOps the term devops is a combination of two words namely development and operations DevOps is a practice which allows a single team to manage the entire application development life cycle that is development testing deployment and operations DevOps is a software development approach through which superior quality software can be developed quickly and with more reliability DevOps consists of various stages such as continuous development containers testing continuous integration continuous deployment and continuous monitoring the aim of DevOps is to shorten the systems development lifecycle while delivering features fixes and updates frequently in close alignment with the business objectives as you can see in this diagram these are the various tools that are used and DevOps and now let us have a look at the DevOps lifecycle as you can see in this diagram these are the various phases of the DevOps lifecycle that is continuous development containers testing continuous integration continuous deployment and continuous monitoring now let us have a look at each of these phases one by one the first phase of the DevOps life cycle is continuous development this is the phase which involves planning and coding of the software applications functionality there are no tools for planning as such but there are a number of tools for maintaining the code the vision of the project is decided during the planning phase and then the actual coding of the application begins the core can be written in any language but it is maintained using the version control tools these are the continuous development DevOps tools the most popular tools used are get SVN mercurial CVS and JIRA also tools such as ant maven and Gradle can be used for building or packaging the code into an executable file so that it can be forwarded to the next phases so guys tools like git enable communication between the development and the operations team and this was one of the drawbacks of the previous model that is the agile model so now let us have a look at the version control tool called git git is a distributed version control tool that supports distributed nonlinear workflows by providing data assurance for developing quality software when you are developing a large project with a huge number of collaborators it is very important to have communication between the collaborators while making changes in the project so imagine a scenario if you are a team of 10 developers and you're working on a project so now what happens is if a developer commits and any change into the code and that change causes an error so now how will you track down which developer made a word change into the code and how to solve that error so here tools such as get solve the problems related to maintain the code what happens in gate is there is one central repository or the main server where the code of your application is present and there is also one local repository where you can also have the code for your application you can fetch the code from the main server to the local repository using pull and using push you can forward the code from the local repository onto the main repository or the main also this is the working directory or your workspace where you develop the application and you can fetch the code from the local repository onto your working directory using update using commit you can forward the code from your working directory to the local repository so this is an overview about the gate so now why do we use git imagine for any reason this server or the main repository crashes or is unavailable so in such a scenario the local repository still has the code for your application so this is an advantage of using tools such as gate so this was all about continuous development the next stage of the DevOps life cycle is continuous integration this is the stage where the code supporting new functionality is integrated with the existing code since there is continuous development of the software the updated code needs to be integrated continuously as well as smoothly with the system's to reflect the changes to the end-users the changed code should also ensure that there are no errors during the runtime which allows us to test the changes and check how it reacts with other changes so there's one very popular tool that is used in this phase which is known as Jenkins using Jenkins one can pull the latest code revision from the git repository and produce a built which can be finally deployed to the test servers or the production servers so let me put this in simpler words guys imagine if a developer commits any change onto the code which is available on the git repository as soon as there is change in this code on the git repository Jenkins will fetch that code and it will produce a build this build is nothing but an executable file which is in the form of a jar file or a war foil and this build can be forwarded to the next stages that is either the production servers or the test servers so this was all about continuous integration the next phase of the DevOps lifecycle is continuous testing this is the stage where the developed software is continuously tested for bugs for continuous testing automation testing tools such as selenium tests ng J unit etc are used these tools allow the Q is to test the multiple code bases thoroughly in parallel to ensure that there are no flaws in the functionality in this phase you can make use of docker containers for simulating test selenium does the automation testing and the reports are generated by testing Z but to automate this entire testing phase you need a trigger and that trigger is provided by the continuous integration tool such as Jenkins automation testing saves a lot of time effort and labor for executing the test cases besides that report generation is a big plus the task of evaluating which test cases failed in the test suit gets simpler these tests can also be sure dual for execution at predefined times once the code is tested it is continuously integrated with the existing code so this was all about continuous testing the next phase of the DevOps life cycle is continuous deployment it is the stage where the code is deployed to the production environment here we ensure that the code is correctly deployed on all the servers now it is the time to understand why DevOps will be incomplete without configuration management tools and containerization tools both the set of tools help us in achieving continuous deployment configuration management is the act of establishing and maintaining consistency in an applications functional requirements and performance so let me put this in simpler words it is the act of releasing deployments to servers scheduling updates on all the servers and most importantly keeping the configurations consistent across all the servers since the new code is deployed on a continuous basis configuration management tools play an important role for executing tasks quickly and frequently some popular tools that are used in this stage are puppet chef saltstack and ansible containerization tools also play an equally important role in the deployment stage docker and vagrant are the popular tools which help produce consistency across the development test staging and the production environments besides this they also help in scaling up and scaling down of instances easily it eliminates any chance of errors or failures in the production environment by packaging and replicating the same dependencies and packages used in the development testing and the staging environment so this was all about the continuous deployment the final phase of the DevOps lifecycle is continuous monitoring this is a very crucial stage in the divorce lifecycle which is aimed at improving the quality of the software by monitoring its performance this practice involves the participation of the operations team who will monitor the user activity for any bugs or improper behavior of the system this can also be achieved by making use of dedicated monitoring tools which will continuously monitor the application performance and highlight the issues some popular tools used are plank ELT stack Nagios New Relic and so on these tools help you monitor the application and the server's closely to check the health of the system proactively they can also improve the productivity and increase the reliability of the system reducing IT support costs any major issues found could be reported to the development team so that it can be fixed in the continence development phase these DevOps stages are carried out on loop continuously until the desired product quality is achieved so guys this was all about DevOps lifecycle in this session from my side I hope you have enjoyed the session if you have any queries related to this session you can write them in the comment box below thank you so much for being with us I hope you have enjoyed listening to this video please be kind enough to like it and you can comment any of your doubts and queries and we will reply them at the earliest do look out for more videos in our playlist and subscribe to any Rekha channel to learn more happy learning