bing
Flat 10% & upto 50% off + 10% Cashback + Free additional Courses. Hurry up
×
UPTO
50%
OFF!
Intellipaat
Intellipaat
  • Live Instructor-led Classes
  • Expert Education
  • 24*7 Support
  • Flexible Schedule

Overview of DevOps

According to reportlinker.com, the DevOps market size is forecasted to grow from ~$3.4B in 2018 to ~$10.3B by 2023, at a Compound Annual Rise rate of 24.70 percent during the forecast period. Being in computers field, you must be aware about this buzzword “taking the IT world by storm, that is “DevOps”. This tutorial will take you through the main concepts of DevOps with its important tools and use cases.

Here we have the list of topics if you want to jump right into a specific one:

Learn DevOps in 16 hrs from experts



What exactly is DevOps?

 

Don’t get scared with this term “DevOps”, it is nothing but a practice or methodology of making “Developers” and “Operations” folks work together, hence the term “DevOps. How exactly is this achieved, will discuss as we move further.

devops

Why DevOps?

Before understanding the concepts and methodology of DevOps, we need to understand why do we even need DevOps? Why DevOps? Why not other methods?

First let’s understand the “Need of DevOps”.

Before DevOps, Waterfall Model was the earliest SDLC approach which was used for Software Development. This method was reliable at first which was used for illustrating the software development process in sequential flow.

devops

Workflow of Waterfall Method

 

Let’s consider you’re developing your software using the Waterfall Method. So, these are the aspects that will occur during your SDLC if you’re using this method:

  • Feasibility check:

Feasibility phase is used for determining whether this approach/technique will be feasible enough for developing the software.

  • Analysis of the system requirements:

Analyze from the customers point of view and gather the information about the system and the software requirements, these requirements list will be captured in a document in a need to remove any incompleteness in that particular product.

  • Design:

The goal of this phase is to transform software requirement specification (SRS) document into an ordered structure which is appropriate for the implementation in a programming language

  • Coding and Unit testing:

The design that we created previously is supposed to get converted into a source code then every design module is coded and checked individually if they are working in a proper manner.

  • Integration and System Testing:

After the design of each modules have been coded, then the integration of these modules is carried out appropriately, then these integrated modules are tested individually as a resultant. After this an acceptance testing is carried out in which product is delivered and tested by the customer whether to accept it or reject it.

  • Maintenance:

Maintenance is that phase of the software lifecycle where 60% of the efforts are spent during the whole software development process. Several Maintenance operations like Corrective Maintenance, Perfective Maintenance and Adaptive Maintenance where error corrections, functionalities enhancement along with trying these software’s on new environments and operating systems.

So, now let’s discuss about what were the Advantages & Disadvantages of this this model.

Advantages:

  • This method was easy & simple to use
  • Easy to manage due to the rigid model
  • Each phase had review process making it less vulnerable to errors
  • One at a time process phases, due to which these phases do not overlap each other
  • Reliable for the small projects

Disadvantages:

  • While your application is in testing stage, it gets really difficult to go back and make changes to any issues those were developed in previous steps due to miscommunication or the lack of knowledge
  • It was a risky process as it was difficult to diagnose and provide the feedback
  • Its main focus was to help the internal teams to work efficiently, it used to exclude the end user/clients due to which majority people did not trust this methodology
  • Delays in testing process, because this method insists the teams to wait until this process is on 4th or 6th stage

So as a solution to this, Agile method came into existence.

Agile Software Development

 

Agile refers to an incremental approach like Waterfall model, but with the iterative approach along with focussing on customers feedback and small rapid changes as well as releases. It basically breaks the product into smaller divisions and finally integrates them for the testing process.

Similarly, let’s take a look at their Advantages & Disadvantages.
Advantages:

  • It prefers to take customer’s feedback throughout the project, which gives enough time to team for making decisions quickly
  • It prefers making changes, welcomes them, but at an expensive cost
  • Having an ability to scale
  • There is a continuous attention to the technical excellence and good designs
  • Prioritizing and scheduling the most valuable features for the implementation, which reduces the risk of having an unusable resource
  • Small and dedicated teams are involved with high degree of involvement and coordination

Disadvantages:

  • There is less predictability
  • Requires more time and commitment, testers, developers and customers must interact with each other constantly and should agree to each other’s decisions in order to get the task done, which in a nutshell is time consuming
  • Limited documentation often comes as a problem, in case of fall backs there are very less detailed documents in order to cross check
  • Requires minimal planning at the beginning which does makes it easier to develop the project quickly but there is never a finite end due to unexpected functionality there is never a clear vision and they’re not sure of what their final product looks like

So, in a nutshell, when Waterfall Model failed to deliver the consistency in the result, Agile Methodology came into existence to overcome them. However, there were many disadvantages in Agile itself as discussed above. And the main problem faced were the gaps created in these both the methods as:

  • In case of Waterfall Model, there was a gap between Customer Software Requirements and the Developers, which was overcome by Agiledevops

         (Gaps created between customers & developers)

  • Similarly, in case of Agile Method there was a gap between Developers and Operations folks

devops
                                                                  (Gaps created operations & development folks)

devops

                                                                    How do you think it was overcome?

Then DevOps was introduced in order to overcome this gap between Developers and Operations folks.

devops
Now let’s check the major differences between Agile and DevOps

Difference between Agile and DevOps

Agile Methodology Simply DevOps
Majorly focuses on collaboration, customer feedback, and small, rapid changes It brings Developers and Operations team together
It does not focus on Automation Its primary goal is the Automation in order to increase the efficiency while deployment
Development process is inherent for Agile, making it majorly focused towards Development process instead testing and implementation process Whereas, DevOps focuses on all Development, testing and implementation with equal importance
It overcomes the gap between customers and developers It overcomes the gap between Developers and Operations folks

Wish to Learn DevOps? Click Here

How DevOps works?

How DevOps works can be understood with its lifecycle, let’s move forward.

DevOps Lifecycle

DevOps basically emphasis on bringing all the Development and Operations + IT infrastructures guys together, which includes developers, system admins, QA’s. Testers etc also called as DevOps Engineers having the end-to-end responsibility from gathering information for development, to testing, to deployment of Infrastructure, to application deployment along with the monitoring & also getting feedback from the end users for making any better improvements, so this process of developing, testing, deployment and monitoring-gathering keeps on going for better results.

You can actually figure it all out from the DevOps diagram below, whatever the process flow we discussed here can be understood with a gist through this DevOps diagram.

devops lifecycle
1. Code: First step to this life-cycle is Code, where developer build the code on any platform.

2. Build: You build the version of your program in any extension depending upon the language you’re using.

3. Test: For DevOps to be successful, you must Automate all the testing process using any automation tools like Selenium etc.

4. Release: Process for managing, planning, scheduling and controlling the build in different environments after testing and before deploying.

5. Deploy: Then Deploy is to get all your application’s artifacts/all your code files and deploy or execute them on the server.

6. Operate: Then we run that application after the deployment, where users are using it as a real use case.

7. Monitor: Monitor helps in providing a crucial information which basically help you to ensure the service uptime and the optimal performance.

8. Plan: Gather all the information through monitoring and whatever the feedback you received through the monitoring, you implement those changes for the better performance.

Become DevOps Certified in 16 hrs.
CLICK HERE

close

Different Lifecycle Stages

devops lifecycle

Now let’s discuss about different stages in DevOps Lifecycle which contributes to the consistent software development lifecycle:

  • Continuous Development
  • Continuous Integration
  • Continuous Testing
  • Continuous Monitoring
  • Virtualization and Containerization

These stages are basically the aspects for achieving the DevOps goal.

Now let’s Discuss each of them in detail.

Continuous Development:

In Waterfall Model, your software product parts get broken into multiple pieces or sub-parts for the short development cycles but in this stage, your software is getting developed continuously.

Tools used:

As we Code & Build in this stage, so one can use GIT to maintain the different versions of the code and to build/package the code into an executable file, we use a reliable tool called as Maven.

Continuous Integration:

In this stage, if your code is supporting a new functionality, it is then integrated with an existing code continuously. As the continuous development keeps on taking place the existing code needs to be integrated with the latest one “continuously”, also the changed code should ensure that there are no errors in the current environment for them to work smoothly.

Tools used:

Jenkins is the tool that is used for the Continuous Integration here, one can pull the latest code from the GIT Repository, of which you can produce the build and deploy on test or the production server.

Continuous Testing:

In this stage, your developed software is being tested continuously to detect the bugs using the several automation tools.

Tools used:

So, for the QA/Testing purposes, one can use the automated tools for it and the tool used widely for automation testing is Selenium, as it lets the QAs to test the codes in parallel fashion to ensure that there is no error, in-competencies or flaws in the software.

Continuous Monitoring:

Continuous monitoring is a very crucial part of the DevOps life-cycle where it helps in providing the important information which basically helps you to ensure the service up-time and the optimal performance. The operations team get the results from the reliable monitoring tools to detect and fix the bugs/flaws in the application.

Tools used:

Several tools like Nagios, Splunk, ELK Stack and Sensu are used for monitoring the application.
They help you to monitor your application and servers closely to check their health and if they are operating actively or not, any major issue detected by these tools are forwarded to the developer’s team for them to fix them in the continuous development phase.

As we have discussed about DevOps and its main tools along with their functionalities, now let’s move forward and discuss about a very famous use case of DevOps in Netflix.

DevOps Tools

Some of the most popular DevOps tools are –

devops17

    • Puppet – Puppet is one of the most widely-used DevOps tool. It allows delivering and release the technology changes quickly and frequently. It has features of versioning, automated testing and continuous delivery.

 

    • Docker – Docker is a high-end DevOps tool that allows building, shipping and running distributed applications on multiple systems. It helps assemble the applications quickly and is typically suitable for container management.

 

    • Jenkins – Jenkins is one of the most popular DevOps tool that allows monitoring the executions of repeated jobs. Not only this, Jenkins lets you integrate the changes and access the results easily and quickly.

 

    • Ansible – This tool helps automate the entire life-cycle of an application. It manages complicated deployments and speeds up the productivity.

 

  • Nagios – This tool helps monitor the IT infrastructure. It is able to determine the errors and rectify them with the help of standard network, server and log monitoring systems.

DevOps Benefits

After successfully being implemented on-premise, now DevOps is being called as the key to speed-up the cloud platforms. Its all-rounder performance has attracted aspirants to build a career in this domain and hence having sound knowledge is imperative for them.

devops

DevOps is a contemporary approach that lets companies to realize numerous benefits by its deployment.  Some of the major DevOps benefits are as follows :

    • Breaking the Silos – DevOps has broken down the conventional style of departmentation where each task was designated to certain team and in effect data used to be siloed. This in turn reduce the flexibility and responsiveness. Going beyond the lines of organizational hierarchy, DevOps promoted mutual cooperation and communication.

 

    • Continuous improvement – DevOps stresses on continuous improvement by aligning the business with IT. It strives to reduce feedback cycle and delivery loops which in turn increases customer satisfaction.

 

    • Minimized failures – When an organization integrates DevOps with fault detection techniques, it leads to minimize the failures significantly. Since DevOps is usually implemented on top of agile programming, it promotes collaboration, modular programming, etc., making the fault detection an easy task.

 

    • Creativity and Innovation – The team members build a culture of trust and cooperation which encourages them to improve the organizational products and services by continuously researching about creativity and innovation. These attempts allow the organization to better understand and address the customer needs.

 

  • Performance-oriented culture – The organization becomes more of a performance-based firm from power-based. This makes the workforce more creative and productive reducing turnover and improving retention.

DevOps use case in Netflix

devops

 

We all know about Netflix, the world’s leading subscription for watching TV episodes and movies on your favorite smart devices delivering best experience anywhere, anytime to more than 75 Million of its global members.

Let’s understand how Netflix uses DevOps Methodology to provide its customers with the best and smooth video streaming experience. Netflix used Spinnaker Continuous Delivery Platform for the Continuous Delivery of its application. Before reaching to Spinnaker for the Continuous Delivery there were number of steps which were supposed to take place.
Let’s understand from the diagram below:

devops

Before going up for the deployment using Spinnaker, the code is first built and tested

devops

  • They used Nebula for the build; they considered it as the best build tool for the Java Application. It is a collection of Gradle plugins built for Netflix engineers to eliminate boilerplate build logic and provide sane conventions.

devops

(A simple Java Application build.gradle file)

  • Then further it is tested locally using Nebula only.
  • These changes are then committed to their central Git Repository.
  • Also, they migrated their monolith application to the cloud based microservices in AWS, their microservice architecture allows teams at Netflix to be loosely coupled, building and pushing changes at a speed they are comfortable with.
  • A Jenkins job is created which helps in executing the Nebula, which further builds, tests and packages their application for the further deployment.
  • Their build is further “baked” in to Amazon Machine Images (AMI), for generating AMI’s from source, they Created the bakery and the bakery exposes an API which facilitates the creation of AMI’s globally.
  • Once the bake is complete, the Spinnaker is used for the deployment by making the resultant AMI’s available for the tens, hundreds and thousands of instances.

After the continuous integration, deployment and final availability, then application goes live.

Roles & Responsibilities of a DevOps Engineer

 

DevOps is merely a culture which is being incorporated by the giants in IT world.
DevOps, when practiced the right way, keeping certain roles and responsibilities in mind, helps overcome the gap between development and operation.

The said roles and responsibilities of DevOps engineers are as follows:

    • Project planning and management: In addition to monitoring software, regulating and updating tools, they also provide their expertise on costs, benefits, risks and what not about various projects.

 

    • Design, development and deployment: DevOps Eng. are required to design and develop automated modules for better and smooth functioning within the production environment by designing risk management techniques and tests etc.

 

    • Communication and support: DevOps Eng. should have exceptional communication skills which comes in handy when they need to work and coordinate with different departments and provide support.

 

    • Technical skills: Some basic technical experience and familiarity with configuration tools is a must.

 

    • Interpersonal skills: Since they are in a constant interaction with other departments in the business, they should be approachable, organised, foresight, team player and ability to multitask would be a bonus.

 

  • Troubleshooting: Last but not the least, one of the ongoing responsibilities of DevOps Eng. is to troubleshoot and come up with solutions for various errors to benefit the firm with speed and efficiency.

The main objective of these roles and responsibilities is to be able to perform coding, scripting and process re-engineering.
Following are job opportunities in DevOps:

    • DevOps Evangelist: To identify the business benefits coming from DevOps and thus aid in the promotion of DevOps.

 

    • Code Release Manager: To understand agile methodology and supervise the overall progress.

 

    • Automation Architect: To design and build automated tools and systems to implement continuous and smooth deployments.

 

    • Experience Assurance: To enhance user experience testing in addition to finding bugs and including all the essential features in the applications.

 

    • Software Developer/Tester: To make sure that the code meets all the original business requirements along with performing testing and monitoring.

 

  • Security Engineer: To integrate security into the applications and products to keep the businesses and safe.

Conclusion

So, from this tutorial, you got the detailed understanding of DevOps, its workflow, its need and its various use cases.

While here we covered quite a bit of DevOps core functionality, there is still a lot to know about it. If you’re looking forward to learning more about it, then you must go for a structured DevOps training provided by Intellipaat, where you will work on various case-based scenarios along with the exhaustive topic wise assignments, hands-on sessions and various industrial based projects which prepares you from scratch to top notch understanding of DevOps.

We would suggest that you practice this example which is explained above. If you’re willing to enter in DevOps domain or up-skill yourself with this domain, then you must go with DevOps Certification Training which will help you understand the most important tools and frameworks that you must learn and practice to become a successful and a productive team member at your workplace.

Happy Learning! 😊

Download Interview Questions asked by top MNCs in 2018?

Learn SQL in 16 hrs from experts



"0 Responses on DevOps Tutorial"

Leave a Message

100% Secure Payments. All major credit & debit cards accepted Or Pay by Paypal.
top

Sales Offer

Sign Up or Login to view the Free DevOps Tutorial.