DevOps - Unit-2
DevOps - Unit-2
Fundamentals of DevOps
The DevOps is the combination of two words, one is Development and other
is Operations. It is a culture to promote the development and operation process
collectively.
The DevOps tutorial will help you to learn DevOps basics and provide depth knowledge
of various DevOps tools such as Git, Ansible, Docker, Puppet, Jenkins, Chef, Nagios,
and Kubernetes.
What is DevOps?
The DevOps is a combination of two words, one is software Development, and second is
Operations. This allows a single team to handle the entire application lifecycle, from
development to testing, deployment, and operations. DevOps helps you to reduce the
disconnection between software developers, quality assurance (QA) engineers, and
system
administrators.
DevOps promotes collaboration between Development and Operations team to deploy code to
production faster in an automated & repeatable way.
Skip Ad
DevOps helps to increase organization speed to deliver applications and services. It also
allows organizations to serve their customers better and compete more strongly in the
market.
DevOps has become one of the most valuable business disciplines for enterprises or
organizations. With the help of DevOps, quality, and speed of the application delivery
has improved to a great extent.
DevOps is all about the integration of the operations and development process.
Organizations that have adopted DevOps noticed a 22% improvement in software
quality and a 17% improvement in application deployment frequency and achieve a 22%
hike in customer satisfaction. 19% of revenue hikes as a result of the successful DevOps
implementation.
Why DevOps?
Before going further, we need to understand why we need the DevOps over the other
methods.
2) Collaboration
The Development and Operations team collaborates as a DevOps team, which improves
the cultural model as the teams become more productive with their productivity, which
strengthens accountability and ownership. The teams share their responsibilities and
work closely in sync, which in turn makes the deployment to production faster.
3) Integration
Applications need to be integrated with other components in the environment. The
integration phase is where the existing code is combined with new functionality and
then tested. Continuous integration and testing enable continuous development. The
frequency in the releases and micro-services leads to significant operational challenges.
To overcome such problems, continuous integration and delivery are implemented to
deliver in a quicker, safer, and reliable manner.
4) Configuration management
It ensures the application to interact with only those resources that are concerned with
the environment in which it runs. The configuration files are not created where the
external configuration to the application is separated from the source code. The
configuration file can be written during deployment, or they can be loaded at the run
time, depending on the environment in which it is running.
DevOps Advantages and Disadvantages
Here are some advantages and disadvantages that DevOps can have for business, such
as:
Advantages
o DevOps is an excellent approach for quick development and deployment of applications.
o It responds faster to the market changes to improve business growth.
o DevOps escalate business profit by decreasing software delivery time and transportation
costs.
o DevOps clears the descriptive process, which gives clarity on product development and
delivery.
o It improves customer experience and satisfaction.
o DevOps simplifies collaboration and places all tools in the cloud for customers to access.
o DevOps means collective responsibility, which leads to better team engagement and
productivity.
Disadvantages
o DevOps professional or expert's developers are less available.
o Developing with DevOps is so expensive.
o Adopting new DevOps technology into the industries is hard to manage in short time.
o Lack of DevOps knowledge can be a problem in the continuous integration of
automation projects.
Prerequisite
To learn DevOps, you should have basic knowledge of Linux, and at least one Scripting
language.
Audience
Our DevOps tutorial is designed to help beginners and professionals.
Problem
We assure you that you will not find any issue with this DevOps tutorial. But if there is
any mistake or error, please post the error in the contact form.
DevOps Architecture
Development and operations both play essential roles in order to deliver applications.
The deployment comprises analyzing the requirements, designing, developing,
and testing of the software components or frameworks.
The operation consists of the administrative processes, services, and support for the
software. When both the development and operations are combined with collaborating,
then the DevOps architecture is the solution to fix the gap between deployment and
operation terms; therefore, delivery can be faster.
DevOps architecture is used for the applications hosted on the cloud platform and large
distributed applications. Agile Development is used in the DevOps architecture so that
integration and delivery can be contiguous. When the development and operations
team works separately from each other, then it is time-consuming to design, test,
and deploy. And if the terms are not in sync with each other, then it may cause a delay
in the delivery. So DevOps enables the teams to change their shortcomings and
increases productivity.
Below are the various components that are used in the DevOps architecture:
1) Build
Without DevOps, the cost of the consumption of the resources was evaluated based on
the pre-defined individual usage with fixed hardware allocation. And with DevOps, the
usage of cloud, sharing of resources comes into the picture, and the build is dependent
upon the user's need, which is a mechanism to control the usage of resources or
capacity.
2) Code
Many good practices such as Git enables the code to be used, which ensures writing the
code for business, helps to track changes, getting notified about the reason behind the
difference in the actual and the expected output, and if necessary reverting to the
original code developed. The code can be appropriately arranged in files, folders, etc.
And they can be reused.
3) Test
The application will be ready for production after testing. In the case of manual testing,
it consumes more time in testing and moving the code to the output. The testing can be
automated, which decreases the time for testing so that the time to deploy the code to
production can be reduced as automating the running of the scripts will remove many
manual steps.
4) Plan
DevOps use Agile methodology to plan the development. With the operations and
development team in sync, it helps in organizing the work to plan accordingly to
increase productivity.
5) Monitor
Continuous monitoring is used to identify any risk of failure. Also, it helps in tracking the
system accurately so that the health of the application can be checked. The monitoring
becomes more comfortable with services where the log data may get monitored
through many third-party tools such as Splunk.
6) Deploy
Many systems can support the scheduler for automated deployment. The cloud
management platform enables users to capture accurate insights and view the
optimization scenario, analytics on trends by the deployment of dashboards.
7) Operate
DevOps changes the way traditional approach of developing and testing separately. The
teams operate in a collaborative way where both the teams actively participate
throughout the service lifecycle. The operation team interacts with developers, and they
come up with a monitoring plan which serves the IT and business requirements.
8) Release
Deployment to an environment can be done by automation. But when the deployment
is made to the production environment, it is done by manual triggering. Many processes
involved in release management commonly used to do the deployment in the
production environment manually to lessen the impact on the customers.
DevOps Lifecycle
DevOps defines an agile relationship between operations and Development. It is a
process that is practiced by the development team and operational engineers together
from beginning to the final stage of the product.
Learning DevOps is not complete without understanding the DevOps lifecycle phases.
The DevOps lifecycle includes seven phases as given below:
1) Continuous Development
This phase involves the planning and coding of the software. The vision of the project is
decided during the planning phase. And the developers begin developing the code for
the application. There are no DevOps tools that are required for planning, but there are
several tools for maintaining the code.
2) Continuous Integration
This stage is the heart of the entire DevOps lifecycle. It is a software development
practice in which the developers require to commit changes to the source code more
frequently. This may be on a daily or weekly basis. Then every commit is built, and this
allows early detection of problems if they are present. Building code is not only involved
compilation, but it also includes unit testing, integration testing, code review,
and packaging.
The code supporting new functionality is continuously integrated with the existing code.
Therefore, there is continuous development of software. The updated code needs to be
integrated continuously and smoothly with the systems to reflect changes to the end-
users.
Jenkins is a popular tool used in this phase. Whenever there is a change in the Git
repository, then Jenkins fetches the updated code and prepares a build of that code,
which is an executable file in the form of war or jar. Then this build is forwarded to the
test server or the production server.
3) Continuous Testing
This phase, where the developed software is continuously testing for bugs. For constant
testing, automation testing tools such as TestNG, JUnit, Selenium, etc are used. These
tools allow QAs to test multiple code-bases thoroughly in parallel to ensure that there is
no flaw in the functionality. In this phase, Docker Containers can be used for simulating
the test environment.
Selenium does the automation testing, and TestNG generates the reports. This entire
testing phase can automate with the help of a Continuous Integration tool
called Jenkins.
Automation testing saves a lot of time and effort for executing the tests instead of
doing this manually. Apart from that, report generation is a big plus. The task of
evaluating the test cases that failed in a test suite gets simpler. Also, we can schedule
the execution of the test cases at predefined times. After testing, the code is
continuously integrated with the existing code.
4) Continuous Monitoring
Monitoring is a phase that involves all the operational factors of the entire DevOps
process, where important information about the use of the software is recorded and
carefully processed to find out trends and identify problem areas. Usually, the
monitoring is integrated within the operational capabilities of the software application.
It may occur in the form of documentation files or maybe produce large-scale data
about the application parameters when it is in a continuous use position. The system
errors such as server not reachable, low memory, etc are resolved in this phase. It
maintains the security and availability of the service.
5) Continuous Feedback
The application development is consistently improved by analyzing the results from the
operations of the software. This is carried out by placing the critical phase of constant
feedback between the operations and the development of the next version of the
current software application.
The continuity is the essential factor in the DevOps as it removes the unnecessary steps
which are required to take a software application from development, using it to find out
its issues and then producing a better version. It kills the efficiency that may be possible
with the app and reduce the number of interested customers.
6) Continuous Deployment
In this phase, the code is deployed to the production servers. Also, it is essential to
ensure that the code is correctly used on all the servers.
The new code is deployed continuously, and configuration management tools play an
essential role in executing tasks frequently and quickly. Here are some popular tools
which are used in this phase, such as Chef, Puppet, Ansible, and SaltStack.
7) Continuous Operations
All DevOps operations are based on the continuity with complete automation of the
release process and allow the organization to accelerate the overall time to market
continuingly.
It is clear from the discussion that continuity is the critical factor in the DevOps in
removing steps that often distract the development, take it longer to detect issues and
produce a better version of the product after several months. With DevOps, we can
make any software product more efficient and increase the overall count of interested
customers in your product.
DevOps Principles
The main principles of DevOps are Continuous delivery, automation, and fast reaction to
the feedback.
1. End to End Responsibility: DevOps team need to provide performance support until
they become the end of life. It enhances the responsibility and the quality of the
products engineered.
2. Continuous Improvement: DevOps culture focuses on continuous improvement to
minimize waste. It continuously speeds up the growth of products or services offered.
3. Automate Everything: Automation is an essential principle of the DevOps process. This
is for software development and also for the entire infrastructure landscape.
4. Custom Centric Action: DevOps team must take customer-centric for that they should
continuously invest in products and services.
5. Monitor and test everything: The DevOps team needs to have robust monitoring and
testing procedures.
6. Work as one team: In the DevOps culture role of the designers, developers, and testers
are already defined. All they needed to do is work as one team with complete
collaboration.
These principles are achieved through several DevOps practices, which include frequent
deployments, QA automation, continuous delivery, validating ideas as early as possible,
and in-team collaboration.
61.3M
1.3K
Next
Stay
DevOps Practices
o Self-service configuration
o Continuous build
o Continuous integration
o Continuous delivery
o Incremental testing
o Automated provisioning
o Automated release management
DevOps Tools
Here are some most popular DevOps tools with brief explanation shown in the below
image, such as:
1) Puppet
Puppet is the most widely used DevOps tool. It allows the delivery and release of the
technology changes quickly and frequently. It has features of versioning, automated
testing, and continuous delivery. It enables to manage entire infrastructure as code
without expanding the size of the team.
Features
2) Ansible
Ansible is a leading DevOps tool. Ansible is an open-source IT engine that automates
application deployment, cloud provisioning, intra service orchestration, and other IT
tools. It makes it easier for DevOps teams to scale automation and speed up
productivity.
Features
Features
4) Nagios
Nagios is one of the more useful tools for DevOps. It can determine the errors and
rectify them with the help of network, infrastructure, server, and log monitoring systems.
Features
5) CHEF
A chef is a useful tool for achieving scale, speed, and consistency. The chef is a cloud-
based system and open source technology. This technology uses Ruby encoding to
develop essential building blocks such as recipes and cookbooks. The chef is used in
infrastructure automation and helps in reducing manual and repetitive tasks for
infrastructure management.
Chef has got its convention for different building blocks, which are required to manage
and automate infrastructure.
Features
6) Jenkins
Jenkins is a DevOps tool for monitoring the execution of repeated tasks. Jenkins is a
software that allows continuous integration. Jenkins will be installed on a server where
the central build will take place. It helps to integrate project changes more efficiently by
finding the issues quickly.
Features
7) Git
Git is an open-source distributed version control system that is freely available for
everyone. It is designed to handle minor to major projects with speed and efficiency. It is
developed to co-ordinate the work among programmers. The version control allows you
to track and work together with your team members at the same workspace. It is used
as a critical distributed version-control for the DevOps tool.
Features
8) SALTSTACK
Stackify is a lightweight DevOps tool. It shows real-time error queries, logs, and more
directly into the workstation. SALTSTACK is an ideal solution for intelligent orchestration
for the software-defined data center.
Features
9) Splunk
Splunk is a tool to make machine data usable, accessible, and valuable to everyone. It
delivers operational intelligence to DevOps teams. It helps companies to be more
secure, productive, and competitive.
Features
10) Selenium
Selenium is a portable software testing framework for web applications. It provides an
easy interface for developing automated tests.
Features DevOps Automation
Automation is the crucial need for DevOps practices, and automate everything is the
fundamental principle of DevOps. Automation kick starts from the code generation on
the developers machine, until the code is pushed to the code and after that to monitor
the application and system in the production.
Play Videox
o Infrastructure Automation
o Configuration Management
o Deployment Automation
o Performance Management
o Log management
o Monitoring
Below are few tools in each of these categories let see in brief, such as:
Infrastructure Automation
Amazon Web Services (AWS): Being a cloud service, you don't need to be physically
present in the data center, they are easy to scale on-demand, and there are no up-front
hardware costs. It can be configured to provide more servers based on traffic
automatically.
Configuration Management
Chef: Chef is a handy DevOps tool for achieving speed, scale, and consistency. It can be
used to ease out of complex tasks and perform configuration management. With the
help of this tool, the DevOps team can avoid making changes across ten thousand
servers. Rather, they need to make changes in one place, which is automatically
reflected in other servers.
Deployment Automation
Jenkins: It facilitates continuous integration and testing. It helps to integrate project
changes more efficiently by quickly finding issues as soon as built is deployed.
Performance Management
App Dynamic: It offers real-time performance monitoring. The data collected by this
tool help developers to debug when issues occur.
Log Management
Splunk: This DevOps tool solves issues such as storing, aggregating, and analyzing all
logs in one place.
Monitoring
Nagios: It notified people when infrastructure and related service go down. Nagios is a
tool for this purpose, which helps the DevOps team to find and correct problems.
DevOps Engineers
DevOps Engineer is an IT professional who works with system operators, software
developers, and other production IT staff to administer code releases.
DevOps have hard as well as soft skills to communicate and collaborate with
development, testing, and operations teams.
DevOps engineers need to code occasionally from scratch, and they must have the
basics of software development languages.
The DevOps engineer will work with development team staff to tackle the coding and
scripting needed to connect elements of code, like libraries or software development
kits.
Below are some roles, responsibilities, and skills which are expected from DevOps
engineers, such as:
Here is a list of DevOps engineers salary according to the most recent DevOps engineer
salary report, such as:
₹8,00,000 A DevOps engineer in the Bengaluru area reported 1-2 year Public
making ₹8,00,000 per year. experience
₹12,00,000 A DevOps engineer in the Hyderabad area reported 3-4 year Public
making ₹12,00,000 per year. experiences
₹9,00,000 A DevOps engineer in the Hyderabad area reported 3-4 year Private
making ₹9,00,000 per year. experience
₹6,00,000 An Azure DevOps engineer in the Chennai area 1-2 year Public
reported making ₹6,00,000 per year. experience
₹6,80,000 A DevOps engineer in the Pune area reported 3-4 year Public
making ₹6,80,000 per year. experience
₹11,06,561 A DevOps engineer in the New Delhi area reported 3-4 year Private
making ₹11,06,561 per year. experience
Many people believe that DevOps orchestration is just merging several jobs
into a larger script, but it is much more than that. DevOps orchestration
services include such jobs into a process or workflow, which may involve
many automated tasks and stages, and resources to streamline the entire
workflow or process.
Read this Article to get a Successful DevOps Testing Strategy for Agile
Teams
What’s Next?
Knowing DevOps team struggles like the palm of our hands, we have
developed an ultimate solution for you: Katalon TestOps – an open and
comprehensive orchestration platform that gives testing and DevOps teams
full visibility of their tests, resources, and environments; and orchestration
tools to manage tests and quality insights.
A DevOps pipeline is a set of automated processes and tools that allows both
developers and operations professionals to work cohesively to build and deploy code to
a production environment. While a DevOps pipeline can differ by organization, it
typically includes build automation/continuous integration, automation testing,
validation, and reporting. It may also include one or more manual gates that require
human intervention before code is allowed to proceed.
Continuous is a differentiated characteristic of a DevOps pipeline. This includes
continuous integration, continuous delivery/deployment (CI/CD), continuous feedback,
and continuous operations. Instead of one-off tests or scheduled deployments, each
function occurs on an ongoing basis.
Since there isn’t one standard DevOps pipeline, an organization’s design and
implementation of a DevOps pipeline depends on its technology stack, a DevOps
engineer’s level of experience, budget, and more. A DevOps engineer should have a
wide-ranging knowledge of both development and operations, including coding,
infrastructure management, system administration, and DevOps toolchains.
Plus, each organization has a different technology stack that can impact the process. For
example, if your codebase is node.js, factors include whether you use a local proxy npm
registry, whether you download the source code and run `npm install` at every stage in
the pipeline, or do it once and generate an artifact that moves through the pipeline. Or,
if an application is container-based, you need to decide to use a local or remote
container registry, build the container once and move it through the pipeline, or rebuild
it at every stage.
While every pipeline is unique, most organizations use similar fundamental components.
Each step is evaluated for success before moving on to the next stage of the pipeline. In
the event of a failure, the pipeline is stopped, and feedback is provided to the
developer.
Continuous feedback
The single biggest pain point of the old waterfall method of software development —
and consequently why agile methodologies were designed — was the lack of timely
feedback. When new features took months or years to go from idea to implementation,
it was almost guaranteed that the end result would be something other than what the
customer expected or wanted. Agile succeeded in ensuring that developers received
faster feedback from stakeholders. Now with DevOps, developers receive continuous
feedback not not only from stakeholders, but from systematic testing and monitoring of
their code in the pipeline.
Continuous testing is a critical component of every DevOps pipeline and one of the
primary enablers of continuous feedback. In a DevOps process, changes move
continuously from development to testing to deployment, which leads not only to faster
releases, but a higher quality product. This means having automated tests throughout
your pipeline, including unit tests that run on every build change, smoke tests,
functional tests, and end-to-end tests.
Continuous monitoring is another important component of continuous feedback. A
DevOps approach entails using continuous monitoring in the staging, testing, and even
development environments. It is sometimes useful to monitor pre-production
environments for anomalous behavior, but in general this is an approach used to
continuously assess the health and performance of applications in production.
Numerous tools and services exist to provide this functionality, and this may involve
anything from monitoring your on-premise or cloud infrastructure such as server
resources, networking, etc. or the performance of your application or its API interfaces.
Continuous operations
Continuous operations is a relatively new and less common term, and definitions vary.
One way to interpret it is as “continuous uptime”. For example in the case of a
blue/green deployment strategy in which you have two separate production
environments, one that is “blue” (publicly accessible) and one that is “green” (not
publicly accessible). In this situation, new code would be deployed to the green
environment, and when it was confirmed to be functional then a switch would be
flipped (usually on a load-balancer) and traffic would switch from the “blue” system to
the “green” system. The result is no downtime for the end-users.
Another way to think of Continuous operations is as continuous alerting. This is the
notion that engineering staff is on-call and notified if any performance anomalies in the
application or infrastructure occur. In most cases, continuous alerting goes hand in hand
with continuous monitoring.
In conclusion...
Below the graphic, you’ll find helpful descriptions of each of the classes.
It’s important to remember that many tools attempt to provide more than one piece of
the pie and there is definitely overlap in the defined classes – in these cases, we have
tried to categorize the best fits. These tools play well with others, so combining them
can help you produce a streamlined production focused ecosystem.
Scripts
Scripts are the connector pieces that bring the disparate tools and classes together into
a more coherent whole. Scripts also help with automated and complicated build,
deployment, and automation tasks. Scripting is incredibly flexible and with it, you can
do almost anything.
CI/CD Tools
Continuous Integration/Delivery Tools are almost the enterprise level package in the
DevOps world. They try to do all of the things. They schedule, gather results, kick-off
scripts/processes/tools, integrate with other tools, and report on success. CI/CD tools
can often do much of what you need, but as with most generalists, sometimes you have
to add another tool that provides specialized capabilities.
Build Tools
Build tools are an essential foundational piece of DevOps. With more developers
working on a code-base, checking in code, and moving your product/project forward, it’s
essential there be a tool that can automate bringing together the right dependencies
and generating an installable compiled package.
With the distributed nature of teams in the DevOps world, powerful, enabling source
code management tools are essential. These tools help to manage multiple
simultaneous update streams for the codebase and ensure code coherency through
branching and merging mechanisms.
With the levels of automation that are becoming standard in the DevOps ecosystem, it
makes sense that there be an automated capability for code to be deployed into your
desired environments. It’s necessary for automation to happen, but may also be desired
for manual testing or UAT steps. Deployment tools need to be able to integrate with
your virtualization solutions as well.
Virtualization/Containerization
Gone are the days of setting up a single server to run multiple applications/services.
With the concept that each application or service you wish to deploy having a different
optimal server configuration grew the idea that every application could run in its own
independent container. As this concept grew, it greatly empowered testers and
developers who worked best in their own walled environment. Being able to tear down,
alter, and redeploy these environments at will has added significant flexibility to
DevOps.
Many of the tools in these lists have their own integrated reports and reporting
capability, but you can add functionality and flexibility by adding your own report engine
or plugin. Without a strong capability to monitor the health of your code, servers,
interactions, etc the speed and safety that is attainable with DevOps practices will be
lost. An integrated monitoring system that can bring you real-time statistics is essential.
Test Automation
Test automation is one of the biggest topics in DevOps with numerous threads, intents,
and tool systems. The number of tools and their target is large and deserving of its
own article.). Any automation solutions/tools that you decide to include in your solution
should be capable of integrating with the other tools in your DevOps ecosphere.
Static Code Analysis Tools
One of the tools that can help you determine code quality and health is static code
analysis. By choosing standards for the way your code should be written and then using
a tool to assess this adherence, you can automatically remove a plethora of issues
before they ever get put in front of a tester or user.
Do you have a favourite combination of tools to get your DevOps up and running?
Seeing all these and looking for a little help on getting it up and running? We’re here to
help. Reach out and we can put our team of testing experts to work for you.