0% found this document useful (0 votes)
35 views30 pages

Unit 1

The document discusses DevOps, including what it is, why it is used, its architecture and features, advantages and disadvantages, and what agile methodology is. DevOps promotes collaboration between development and operations teams to deploy code faster. It has advantages like faster response to changes and improved customer experience, but adopting new DevOps technologies can be challenging.

Uploaded by

UT DU
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views30 pages

Unit 1

The document discusses DevOps, including what it is, why it is used, its architecture and features, advantages and disadvantages, and what agile methodology is. DevOps promotes collaboration between development and operations teams to deploy code faster. It has advantages like faster response to changes and improved customer experience, but adopting new DevOps technologies can be challenging.

Uploaded by

UT DU
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

UNIT 1

1.1 What is DevOps?

DevOps is a combination of two words, one is Software Development, and the


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 teams to


deploy code to production faster in an automated & repeatable way.DevOps helps to
increase the organization's speed to deliver applications and services. It also allows
organizations to serve their customers better and compete more strongly in the
market.

DevOps can also be defined as a sequence of development and IT operations with


better communication and collaboration.

DevOps has become one of the most valuable business disciplines for enterprises or
organizations. With the help of DevOps, the quality, and speed of the application
delivery have improved to a great extent.

DevOps is nothing but a practice or methodology of making "Developers" and


"Operations" folks work together. DevOps represents a change in the IT culture with
a complete focus on rapid IT service delivery through the adoption of agile practices
in the context of a system-oriented approach.

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.

1.2 Why DevOps?

Before going further, we need to understand why we need DevOps over the other
methods.

● The operation and development team worked in complete isolation.


● After the design-build, the testing and deployment are performed
respectively. That's why they consumed more time than actual build cycles.
● Without the use of DevOps, the team members are spending a large amount
of time on designing, testing, and deploying instead of building the project.
● Manual code deployment leads to human errors in production.
● Coding and operation teams have their separate timelines and are not in
synch, causing further delays.

1.3 DevOps Architecture

Development and operations both play essential roles in order to deliver


applications. The deployment comprises analyzing the requirements, designing,
developing, and testing 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 the cloud, and sharing of resources come 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 enable 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, and analytics on trends through 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 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 are commonly used to do the
deployment in the production environment manually to lessen the impact on the
customers.
1.4 DevOps Architecture Features:

Here are some key features of DevOps architecture, such as:

1) Automation
Automation can reduce time consumption, especially during the testing and
deployment phase. The productivity increases, and releases are made quicker by
automation. This will lead to catching bugs quickly so that it can be fixed easily. For
contiguous delivery, each code is defined through automated tests, cloud-based
services, and builds. This promotes production using automated deploys.

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 of 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 more reliable manner.

4) Configuration management
It ensures the application interacts with only those resources that are concerned with
the environment in which it runs. The configuration files are not created where the
external configuration of the application is separated from the source code. The
configuration file can be written during deployment, or it can be loaded at the run
time, depending on the environment in which it is running.

1.5 DevOps Advantages and Disadvantages

Here are some advantages and disadvantages that DevOps can have for business,
such as:

Advantages

● DevOps is an excellent approach for the quick development and deployment


of applications.
● It responds faster to market changes to improve business growth.
● DevOps escalate business profit by decreasing software delivery time and
transportation costs.
● DevOps clears the descriptive process, which gives clarity on product
development and delivery.
● It improves customer experience and satisfaction.
● DevOps simplifies collaboration and places all tools in the cloud for
customers to access.
● DevOps means collective responsibility, which leads to better team
engagement and productivity.

Disadvantages

● DevOps professionals or expert developers are less available.


● Developing with DevOps is so expensive.
● Adopting new DevOps technology into industries is hard to manage in a
short time.
● A lack of DevOps knowledge can be a problem in the continuous integration
of automation projects.

1.6 What is Agile Methodology

An agile methodology is an iterative approach to software development. Each


iteration of agile methodology takes a short time interval of 1 to 4 weeks. The agile
development process is aligned to deliver the changing business requirement. It
distributes the software with faster and fewer changes.
The single-phase software development takes 6 to 18 months. In single-phase
development, all the requirement gathering and risks management factors are
predicted initially.

The agile software development process frequently takes the feedback of workable
product. The workable product is delivered within 1 to 4 weeks of iteration.

Roles in Agile

There are two different roles in a Agile methodology. These are the Scrum Master
and Product Owner.

1. Scrum Master

The Scrum Master is a team leader and facility provider who helps the team
member to follow agile practices, so that the team member meets their commitments
and customers requirements. The scrum master plays the following responsibilities:
● They enable the close co-operation between all the roles and functions.
● They remove all the blocks which occur.
● They safeguard the team from any disturbances.
● They work with the organization to track the progress and processes of the
company.
● They ensure that Agile Inspect & Adapt processes are leveraged correctly
which includes
○ Planned meetings
○ Daily stand-ups
○ Demo
○ Review
○ Retrospective meetings, and
○ Facilitate team meetings and decision-making process.

2. Product Owner

The Product Owner is one who runs the product from a business perspective. The
Product Owner plays the following responsibilities:

● He defines the requirements and prioritizes their values.


● He sets the release date and contents.
● He takes an active role in iteration and releasing planning meetings.
● He ensures that the team is working on the most valued requirement.
● He represents the voice of the customer.
● He accepts the user stories that meet the definition of done and defined
acceptance criteria.

1.7 Relationship between Agile & DevOps

● DevOps is a practice of bringing development and operations teams together


whereas Agile is an iterative approach that focuses on collaboration, customer
feedback, and small rapid releases.
● DevOps focuses on constant testing and delivery while the Agile process
focuses on constant changes.
● DevOps requires relatively a large team while Agile requires a small team.
● DevOps leverages both shifts left and right principles, on the other hand,
Agile leverage the shift-left principle.
● The target area of Agile is Software development whereas the Target area of
DevOps is to give end-to-end business solutions and fast delivery.
● DevOps focuses more on operational and business readiness whereas Agile
focuses on functional and non-function readiness.
Stakeholders and communication chain in a typical IT process.

Agile addresses gaps in Customer and Developer communications

DevOps addresses gaps in Developer and IT Operations communications

Parameter Agile DevOps

What is it? Agile refers to an iterative DevOps is considered a


approach that focuses on practice of bringing
collaboration, customer development and
feedback, and small, operations teams
rapid releases. together.

Purpose Agile helps to manage DevOps central concept is


complex projects. to manage end-to-end
engineering processes.

Task Agile process focusses on DevOps focuses on


Parameter Agile DevOps

constant changes. constant testing and


delivery.

Implementation Agile method can be The primary goal of


implemented within a DevOps is to focus on
range of tactical collaboration, so it
frameworks like a sprint, doesn’t have any
safe and scrum. commonly accepted
framework.

Team skill set Agile development DevOps divides and


emphasizes training all spreads the skill set
team members to have a between the development
wide variety of similar and operation teams.
and equal skills.

Team size Small Team is at the core Relatively larger team


of Agile. As smaller is the size as it involves all the
team, the fewer people on stack holders.
it, the faster they can
move.

Duration Agile development is DevOps strives for


managed in units of deadlines and
“sprints.” This time is benchmarks with major
much less than a month releases. The ideal goal is
for each sprint. to deliver code to
production DAILY or
every few hours.

Feedback Feedback is given by the Feedback comes from the


customer. internal team.

Target Areas Software Development End-to-end business


solution and fast delivery.

Shift-Left Principles Leverage shift-left Leverage both shifts left


and right.

Emphasis Agile emphasizes on DevOps is all about


software development taking software which is
methodology for ready for release and
developing software. deploying it in a reliable
When the software is and secure manner.
developed and released,
the agile team will not
care what happens to it.
Parameter Agile DevOps

Cross-functional Any team member should In DevOps, development


be able to do what’s teams and operational
required for the progress teams are separate. So,
of the project. Also, when communication is quite
each team member can complex.
perform every job, it
increases understanding
and bonding between
them.

Communication Scrum is most common DevOps communications


methods of implementing involve specs and design
Agile software documents. It’s essential
development. Daily for the operational team
scrum meeting is carried to fully understand the
out. software release and its
hardware/network
implications for
adequately running the
deployment process.

Documentation Agile method is to give In the DevOps, process


priority to the working documentation is
system over complete foremost because it will
documentation. It is ideal send the software to the
when you’re flexible and operational team for
responsive. However, it deployment. Automation
can hurt when you’re minimizes the impact of
trying to turn things over insufficient
to another team for documentation. However,
deployment. in the development of
complex software, it’s
difficult to transfer all the
knowledge required.

Automation Agile doesn’t emphasize Automation is the


on automation. Though it primary goal of DevOps.
helps. It works on the principle
to maximize efficiency
when deploying software.

Goal It addresses the gap It addresses the gap


between customer need between development +
and development & testing and Ops.
testing teams.
Parameter Agile DevOps

Focus It focuses on functional It focuses more on


and non-function operational and business
readiness. readiness.

Importance Developing software is Developing, testing and


inherent to Agile. implementation all are
equally important.

Speed vs. Risk Teams using Agile In the DevOps method,


support rapid change, the teams must make sure
and a robust application that the changes which
structure. are made to the
architecture never
develop a risk to the
entire project.

Quality Agile produces better DevOps, along with


applications suites with automation and early bug
the desired requirements. removal, contributes to
It can easily adapt creating better quality.
according to the changes Developers need to
made on time, during the follow Coding and
project life. Architectural best
practices to maintain
quality standards.

Tools used JIRA, Bugzilla, Kanboard Puppet, Chef, TeamCity


are some popular Agile OpenStack, AWS are
tools. popular DevOps tools.

Challenges The agile method needs DevOps process needs to


teams to be more development, testing and
productive which is production environments
difficult to match every to streamline work.
time.

Advantage Agile offers shorter DevOps supports Agile’s


development cycle and release cycle.
improved defect
detection.
1.8 DASA DevOps Workflow and Principles:

DevOps workflow provides a visual overview of the sequence in which input is


provided. Also, it tells about which one action is performed, and which output is
generated for an operations process.

DevOps workflow allows the ability to separate and arrange the jobs which are top
requested by the users. Also, it gives the ability to mirror their ideal process in the
configuration jobs.

The main principles of DevOps are Continuous delivery, automation, and fast
reaction to feedback.

● End-to-End Responsibility: DevOps team needs to provide performance


support until they become the end of life. It enhances the responsibility and
the quality of the products engineered.

● Continuous Improvement: DevOps culture focuses on continuous


improvement to minimize waste. It continuously speeds up the growth of
products or services offered.

● Automate Everything: Automation is an essential principle of the DevOps


process. This is for software development and also for the entire infrastructure
landscape.

● Customer-Centric Action: DevOps team must take a customer-centric for that


they should continuously invest in products and services.
● Monitor and test everything: The DevOps team needs to have robust
monitoring and testing procedures.

● 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.

DASA DevOps Principles:

● Customer Centric Action: It is imperative nowadays to have short feedback


loops with real customers and end-users, and that all activity in building IT
products and services centers around these clients. To be able to meet these
customers’ requirements, DevOps organizations require the guts to act as lean
startups that innovate continuously, pivot when an individual strategy is not
(or no longer) working, and constantly invest in products and services that
will receive a maximum level of customer delight.

● Create with End in Mind: Organizations need to let go of waterfall and


process-oriented models where each unit or individual works only for a
particular role/function, without overseeing the complete picture. They need
to act as product companies that explicitly focus on building working
products sold to real customers, and all employees need to share the
engineering mindset that is required actually to envision and realize those
products.

● End to End Responsibility: Where traditional organizations develop IT


solutions and then hand them over to Operations to deploy and maintain
these solutions, in a DevOps environment teams are vertically organized such
that they are fully accountable from concept to grave. IT products or services
created and delivered by these teams remain under the responsibility of these
stable groups. These teams also provide performance support, until they
become end-of-life, which greatly enhances the level of responsibility felt and
the quality of the products engineered.

● Cross-Functional Autonomous Teams: In product organizations with


vertical, fully responsible teams, these teams need to be entirely independent
throughout the whole lifecycle. That requires a balanced set of skills and also
highlights the need for team members with T-shaped all-round profiles
instead of old-school IT specialists who are only knowledgeable or skilled in
for example testing, requirements analysis, or coding. These teams become a
hotbed of personal development and growth.
● Continuous Improvement: End-to-end responsibility also means that
organizations need to adapt continuously in the light of changing
circumstances (e.g. customer needs, changes in legislation, new technology
becomes available). In a DevOps culture, a strong focus is put on continuous
improvement to minimize waste, optimize for speed, costs, and ease of
delivery, and to continuously improve the products/services offered.
Experimentation is therefore an important activity to embed and develop a
way of learning from failures is essential. A good rule to live by in that respect
is if it hurts, do it more often.

● Automate everything you can: To adopt a continuous improvement culture


with high cycle rates and to create an IT organization that receives instant
feedback from end users or customers, many organizations have quite some
waste to eliminate. Fortunately, in the past years, enormous gains in IT
development and operations can be made in that respect. Think of automation
of not only the software development process (continuous delivery, including
continuous integration and continuous deployment) but also of the whole
infrastructure landscape by building next-gen container-based cloud
platforms that allow infrastructure to be versioned and treated as code as
well. Automation is synonymous with the drive to renew the way in which
the team delivers its services.

1.9 Challenges of Traditional Approach and their Solution with DevOps

1. DevOps Challenge: Inconsistent Environment

When the codebase moves within different teams during the phases of the software
development lifecycle, it is a time-consuming process as all the environments
utilized in the process are configured differently. Therefore, it’s quite difficult for the
software to perform consistently across multiple platforms wiring in various
environments.

As a result, every team member wastes their time trying to resolve issues without
realizing that the problem is not with the code but with the environment. Hence, one
of the greatest killers of agility and smooth transition is an inconsistent environment.

Solution

To overcome such technical challenges in DevOps, we have to ensure that all


environments are identical by developing infrastructure blueprints and
implementing Continuous Delivery (CD). However, the involved team should draw
a common blueprint for executing the DevOps process and introduce continuous
delivery to sail through the same boat.

2. DevOps Challenge: Manual Testing and Deployment

When we talk about the development process, manual intervention is not advisable
for the testing and deployment phases. It significantly affects efficiency, consumes
time, and reduces accuracy. Human errors and non-repeatable procedures are the
results of manual intervention. If we perform manual testing, it’s not possible to
implement CI/CD pipelines in an agile way. Furthermore, manual testing increases
the chance of product defects, resulting in unplanned efforts.

When the deployment is done manually, the probability of failure increases


significantly, lowering quality and reliability while increasing unplanned efforts.

Solution

You can solve DevOps challenges related to manual testing and deployment by
automating the framework and deployment processes and, thus, improving the
entire process and strategy. Every DevOps-aspiring organization should think about
including automatic testing procedures in the deployment process. As a result, they
will be able to reduce deployment failures.

3. DevOps Challenge: Incompetence in DevOps and SDLC

The efficiency of SDLC (Software Development Lifecycle) creates a direct impact on


software delivery and deployment. By implementing a systematic and logical SDLC,
an organization should be able to deliver high-quality and reliable software in a
given time. However, for decades, the software development industry has struggled
with SDLC maturity.

In the era of DevOps, where software is provided in shorter increments with a high
degree of reliability and quality, having a mature process is even more crucial for a
team. But some organizations are not able to move further with the agility of
DevOps. In fact, most of these organizations are either immature in the process or
wrongly assume that they already know everything.

Solution

Organizations should follow the path to implement cutting-edge DevOps tools and
technologies. In addition, they also should help their teams learn the newly-adapted
technologies and imbibe them with proper training.
Teams should continuously seek feedback on a regular basis, and they should strive
to improve it. Investing all of your time and money into all-in-one solutions can
make it easier for teams to deploy DevOps, allowing them to deliver features faster
and with fewer failures.

4. DevOps Issue: Traditional Change Management Methods

Many organizations have been using traditional change management practices for
years and are comfortable with them. The majority of their process was developed at
a time when change management meant employing and deploying extra resources.

Now, coming back to the recent scenario, applications now consist of many small
components or microservices that can be easily modified and deployed. Now,
suddenly, the process gets in the way.

In this ever-changing environment, you have to be proactive for immediate changes


and deployment. Sometimes, teams must go through several security reviews,
operations, and code reviews. But what sets you back is that there is often a huge
line to wait for reviews, which causes review processes to be pushed back another
week.

Solution

Organizations should become more agile and try to shift their paradigm from the
traditional approach. For example, instead of authority, embrace autonomy for rapid
decision-making or make sure to release changes from the very beginning of the
development life cycle.

Additionally, you can always prepare for failures and minimize the negative impact
of change as part of the overall DevOps adoption challenges. Soaking all your code
changes in an independent environment and deploying them in stages is a good
practice in this regard.

5. DevOps Challenge: Tool Integration from Different Domains

In DevOps integration, all the required processes, such as development, testing, and
deployment, must be in a continuous and iterative loop. Well, it’s not easy to tie all
the team members in one place as they are from different departments. This will
affect productivity when one department has to transfer work to another with an
entirely different set of tools and technologies.
Solution

The automation process will surely reduce all those time-consuming, repetitive tasks
such as analytical, data entry, and product research. This way, an organization can
enhance its outreach and efficiency.

This brings up two major benefits, such as:

● It will help Dev (development) and Ops (operations) teams to enhance


communication and transparency.
● It streamlines the entire development life cycle by combining various
processes into one

6. DevOps Challenge: Poor Access Control and Secrets Management

For the higher quality development process and product deployment, tight access
controls and secrets management are essential factors. Secrets may consist of API
tokens, account-sensitive information and credentials, SSH Keys, etc. So, many
entities like employees, services, and containers use these.

Henceforth, these passwords and keys are poorly managed and become easy targets
for hackers. Furthermore, DevOps teams often allow unrestricted access to
privileged accounts such as admin, root and others to guarantee a smooth and
speedy workflow.

Solution

In order to avoid such DevOps challenges, the passwords, keys, and other critical
account information must be carefully controlled. DevOps teams have resorted to
inadequate secrets management, such as storing passwords in containers with the
adoption of automated deployment.

With the rapid growth of automated deployments, teams often choose the path that
may lead to leaving their passwords and keys exposed.

Hence, you should remove sensitive information like credentials, services, accounts,
files, etc., for successful DevOps secrets management. In addition, while not using it,
passwords from the code should be removed and stored in a centralized container.
To implement this data storing method, you can use different products like Azure
key vault, AWS secrets manager, CyberArk, Thycotic Secret Server, and many more.

7. Enable a Continuous Integration and Continuous Delivery Cycle Without


Compromising Quality

Outdated development practices come next in our list of DevOps challenges and
solutions. In most organizations, teams dedicatedly perform specific operations like
testing the applications. These teams are not active or involved with other
departments.

So, the only way of having a collaboration between them is a never-ending cycle of
code sent out for testing and then returned. The QA team finds bugs and issues
during this process and sends them back to developers. Then, the team of developers
works to resolve and redeploy the code.

Since it’s an endless process, the teams come to the same table to agree on what bugs
they can tolerate and promote to production. They add more technical debt into the
system with every release, reducing its quality and stability and increasing
unplanned work.

Solution

It's preferable to prevent bugs from progressing through the development process.
This is accomplished by developing automated test harnesses and automatically
failing the build if any of the tests fail. This procedure has been developed with
Continuous Integration (CI) in mind. So, testing should be done as part of the
development process.

8. DevOps Challenge: Incentive-Driven Approach

Development teams work towards enhancing time to market, whereas, the


operations team ensures security, reliability, availability, and governance. Although
this barrier appears to be unrelated to the topic, it significantly impacts DevOps
procedures. The most common organizational approach is for every team to focus on
its own benefits rather than having a shared goal of customer satisfaction.

There will be an endless debate between priorities and resources if every team
doesn’t follow the same goal. If this trend continues, every DevOps process will be
an unresolved mystery for the rest of the time.
Solution

With the organization's best approach in mind, management should consider


rearranging employee incentives to mitigate these DevOps challenges. Everyone
should measure achievement in such a way that those incentives are reinforced. It's a
winning proposition for everyone, particularly the customer

1.10 DevOps Tools

DevOps tools are applications that support the software development process. Often,
they’re also referred to as DevOps technologies. Their primary focus is to enhance
collaboration through project management and automation. There are several
different types of DevOps tools, a few of which are outlined below:

● Version control tools. Version control software (VCS) is also known as source
control or source code management (SCM). These tools track and manage any
changes made to a software’s code.
● DevOps automation tools. DevOps automation tools remove the burden of
repetitive tasks from the workflow. Some focus on specific processes like
testing or deployment, while others may be end-to-end tools. The term
end-to-end refers to the entire development process, from conceptualization
to deployment and continued monitoring.
● Performance monitoring tools. These DevOps tools monitor the performance
of applications and help manage the infrastructure as a whole. They typically
have robust reporting capabilities and artificial intelligence (AI) for defect
detection.
● Container management tools. In the context of software development, a
container is an application or software that is packaged into a portable
environment. They contain an application’s libraries, frameworks, and any
associated dependencies. Containerization makes it possible to run
applications in various environments independently from the environment’s
operating system (OS). Container management tools enable developers to
package, monitor, and change these distributed applications.
● Configuration management tools. Configuration management is the process
of monitoring and maintaining system functionality. In DevOps,
configuration management helps ensure that all applications and services
perform consistently with expectations.
1. DevOps tools for continuous development (CD)

In the DevOps life cycle, continuous development encompasses the planning and
coding of the software. Two of the most popular DevOps tools for this phase of
development are Jira and Git:
● Jira: Although no specific DevOps tools are required for planning, many
DevOps organizations use Agile project management software like Jira. Agile
project management focuses on continuous releases and incorporating
customer feedback in each iteration. The Jira DevOps template can be an
efficient tool for managing projects, creating workflows, and tracking bugs.
● Git: Git is an open-source version control system, meaning anyone can use it
for free. As mentioned above, version control tools manage the source code of
an application or software. Git is an excellent DevOps tool because it supports
nonlinear workflows and collaboration among programmers. You can bridge
the gap between development and operations with GitHub, a web-based
hosting platform for Git code repositories. It enables further collaboration
through features like support ticket management.

2. DevOps tools for continuous integration (CI) and continuous delivery (CD)

In the DevOps pipeline, continuous integration requires developers to commit


changes (like new features or bug patches) to the source code. One of the most used
DevOps tools in this phase of development is Jenkins:
● Jenkins: Jenkins is a Java-based, open-source program. It can be used solely as
a CI server or be turned into a hub supporting continuous delivery. A few
features Jenkins is known for include extensive workflow customization; easy
installation; the ability to efficiently distribute work across multiple machines
for cross-platform development; hundreds of plugins and integrations.

3. DevOps tools for continuous testing

In the DevOps life cycle, continuous testing means that the developed software is
consistently checked for bugs and defects. DevOps automation tools are especially
useful for continuous testing. They allow quality assurance (QA) teams to enhance
the scope of testing through features like automated test execution and parallel
testing across multiple codebases. Selenium and Bamboo are two of the most
relevant continuous testing solutions:
● Selenium: Selenium is another open-source development tool. It’s an
automated testing framework for writing test scripts in commonly used
programming languages such as Java, Python, and C#. It is primarily used to
automate web applications, but you can also use it to automate web-based
administration tasks. Selenium’s versatility provides automation support
across several browsers and operating systems (OS).
● Bamboo: Bamboo is a server-based DevOps tool. It allows users to create
complex build plans and trigger them to start automatically. Bamboo is well
known for its tight integration with Jira and parallel testing capabilities.

4. DevOps tools for continuous deployment

Continuous deployment in the DevOps life cycle refers to the phase wherein code is
deployed to the production servers. Since this occurs on an ongoing basis, DevOps
tools that can support fast and frequent deployments are essential. Both container
management tools and configuration management tools can be beneficial for
continuous deployment:
● Docker (container management): A development team can use the Docker
application to package, manage, and execute distributed applications. A few
of Docker’s key functionalities include a standardized packaging format, tight
integration with GitHub, and Docker Hub. Docker Hub encourages
collaboration among DevOps team members by providing a platform for easy
image publishing and access management.
● Ansible (configuration management): Ansible is an open-source automation
platform used primarily for configuration management and infrastructure
orchestration. Its minimalistic nature makes it easy for developers, IT
professionals, and administrators to use. Ansible enables the creation of
machine groups and control of how they will run in production
environments.

5. DevOps tools for continuous feedback

Analyzing and incorporating feedback is a crucial component of DevOps


methodology. Continuous feedback enables continuous improvement. It requires the
collection of internal insights like employee surveys and bug reports and external
responses like support tickets or social media mentions. Several DevOps tools exist
to support your continuous feedback loops:
● Jira Service Management: Jira Service Management is a DevOps tool built into
the Jira platform. Its primary purpose is to enhance communication by
organizing feedback from various sources in a single hub. It allows customers
to submit service requests and feedback by widget, portal, email, or a
customizable help center.
● Parlor: The parlor is a customer feedback tool for user relationship
management. It engages with active users in real-time to gather contextual
insights. It is integrative with business tools such as support ticket systems
like ZenDesk; technical task management platforms such as Jira;
communication tools like Slack; data management programs like Excel.

6. DevOps tools for continuous monitoring

In the DevOps pipeline, continuous monitoring of the application requires frequent


checks for bugs, system errors, performance issues, and anything else that could
impact product quality. Your DevOps monitoring tools should support two types of
monitoring: application and server.
● Prometheus: Prometheus is an open-source, community-driven performance
monitoring database designed to support continuous monitoring processes. It
equips developers and QA teams with strong reporting capabilities and
extensive client libraries. Prometheus is also suitable for DevOps because it
has multiple modes for data visualization.

7. DevOps tools for continuous operation

Continuous operation means that applications and services must be continuous in


operation, with no interruptions or downtime. Several of the aforementioned tools
have features that can assist you in continuous operations. However, an incident
management platform like Opsgenie may be beneficial.
● Opsgenie: Opsgenie is a DevOps tool used to prepare for, predict, and resolve
service disruptions. It is integrative with continuous monitoring tools, chat
platforms, ticketing systems, and other business applications. Opsgenie
enables scheduled customizations to ensure the right people are notified
through the proper communication channels when a challenge occurs. Its
automated escalation features ensure that critical bugs are caught.

1.11 Version Control Systems

Version control systems are a category of software tools that helps in recording
changes made to files by keeping a track of mAs we know that a software product is
developed in collaboration by a group of developers they might be located at
different locations and each one of them contributes to some specific kind of
functionality/features. So in order to contribute to the product, they made
modifications to the source code(either by adding or removing). A version control
system is a kind of software that helps the developer team to efficiently
communicate and manage(track) all the changes that have been made to the source
code along with the information like who made and what changes have been made.
A separate branch is created for every contributor who made the changes and the
changes aren’t merged into the original source code unless all are analyzed as soon
as the changes are green signaled they merged into the main source code. It not only
keeps source code organized but also improves productivity by making the
development process smooth with modifications done in the code.

Benefits of the version control system:

● Enhances the project development speed by providing efficient collaboration,


● Leverages the productivity, expedites product delivery, and skills of the
employees through better communication and assistance,
● Reduce possibilities of errors and conflicts meanwhile project development
through traceability to every small change,
● Employees or contributors of the project can contribute from anywhere
irrespective of the different geographical locations through this VCS,
● For each different contributor to the project, a different working copy is
maintained and not merged to the main file unless the working copy is
validated. The most popular example is Git, Helix core, Microsoft TFS,
● Helps in recovery in case of any disaster or contingent situation,
● Informs us about Who, What, When, Why changes have been made.

Use of Version Control System:

● A repository: It can be thought of as a database of changes. It contains all the


edits and historical versions (snapshots) of the project.
● Copy of Work (sometimes called as checkout): It is the personal copy of all the
files in a project. You can edit to this copy, without affecting the work of
others and you can finally commit your changes to a repository when you are
done making your changes.
● Working in a group: Consider yourself working in a company where you are
asked to work on some live project. You can’t change the main code as it is in
production, and any change may cause inconvenience to the user, also you are
working in a team so you need to collaborate with your team to and adapt
their changes. Version control helps you with the, merging different requests
to main repository without making any undesirable changes. You may test the
functionalities without putting it live, and you don’t need to download and
set up each time, just pull the changes and do the changes, test it and merge it
back. It may be visualized as.
Purpose of Version Control:

● Multiple people can work simultaneously on a single project. Everyone works


on and edits their own copy of the files and it is up to them when they wish to
share the changes made by them with the rest of the team.
● It also enables one person to use multiple computers to work on a project, so
it is valuable even if you are working by yourself.
● It integrates the work that is done simultaneously by different members of the
team. In some rare cases, when conflicting edits are made by two people to
the same line of a file, then human assistance is requested by the version
control system in deciding what should be done.
● Version control provides access to the historical versions of a project. This is
insurance against computer crashes or data loss. If any mistake is made, you
can easily roll back to a previous version. It is also possible to undo specific
edits that too without losing the work done in the meanwhile. It can be easily
known when, why, and by whom any part of a file was edited.

1.12 Git Commands

1) Git config command

This command configures the user. The Git config command is the first and
necessary command used on the Git command line. This command sets the
author name and email address to be used with your commits. Git config is
also used in other scenarios.

Syntax
$ git config --global user.name "ImDwivedi1"

$ git config --global user.email "[email protected]"


2) Git Init command

This command is used to create a local repository.

Syntax

$ git init Demo


The init command will initialize an empty repository. See the below screenshot.

3) Git clone command

This command is used to make a copy of a repository from an existing URL. If


I want a local copy of my repository from GitHub, this command allows
creating a local copy of that repository on your local directory from the
repository URL.

Syntax

$ git clone URL

4) Git add command

This command is used to add one or more files to staging (Index) area.

Syntax

To add one file

$ git add Filename

To add more than one file


$ git add*

5) Git commit command

This is used in two scenarios. They are as follows.

Git commit -m

This command changes the head. It records or snapshots the file permanently
in the version history with a message.

Syntax

$ git commit -m " Commit Message"

Git commit -a

This command commits any files added in the repository with git add and
also commits any files you've changed since then.

Syntax

$ git commit -a

6) Git status command

The status command is used to display the state of the working directory and
the staging area. It allows you to see which changes have been staged, which
haven't, and which files aren?t being tracked by Git. It does not show you any
information about the committed project history. For this, you need to use the
git log. It also lists the files that you've changed and those you still need to
add or commit.

Syntax

$ git status

7) Git push Command

It is used to upload local repository content to a remote repository. Pushing is


an act of transferring commits from your local repository to a remote repo. It's
the complement to git fetch, but whereas fetching imports commits to local
branches on comparatively pushing exports commits to remote branches.
Remote branches are configured by using the git remote command. Pushing is
capable of overwriting changes, and caution should be taken when pushing.

Git push command can be used as follows.

Git push origin master

This command sends the changes made on the master branch, to your remote
repository.

Syntax

$ git push [variable name] master

Git push -all

This command pushes all the branches to the server repository.

Syntax

$ git push --all

8) Git pull command

This is used to receive data from GitHub. It fetches and merges changes on
the remote server to your working directory.

Syntax

$ git pull URL


9) Git Branch Command

This command lists all the branches available in the repository.

Syntax

$ git branch

10) Git Merge Command

This command is used to merge the specified branch history into the current branch.

Syntax

$ git merge BranchName

11) Git log Command

This command is used to check the commit history.


Syntax

$ git log

By default, if no argument passed, Git log shows the most recent commits first. We
can limit the number of log entries displayed by passing a number as an option, such
as -3 to show only the last three entries.

$ git log -3

12) Git remote Command

This is used to connect your local repository to the remote server. This command
allows you to create, view, and delete connections to other repositories. These
connections are more like bookmarks rather than direct links to other repositories.
This command doesn't provide real-time access to repositories.

You might also like