0% found this document useful (0 votes)
12 views38 pages

Unit II

DevOps is a collaborative approach that integrates development and IT operations to enhance software delivery speed, quality, and efficiency through automation and continuous practices. It addresses the challenges of isolated development and operations teams by fostering communication, scalability, and security, ultimately leading to faster and more reliable software releases. Key components of DevOps include continuous integration, continuous delivery, infrastructure as code, and monitoring, all aimed at streamlining the software development lifecycle.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views38 pages

Unit II

DevOps is a collaborative approach that integrates development and IT operations to enhance software delivery speed, quality, and efficiency through automation and continuous practices. It addresses the challenges of isolated development and operations teams by fostering communication, scalability, and security, ultimately leading to faster and more reliable software releases. Key components of DevOps include continuous integration, continuous delivery, infrastructure as code, and monitoring, all aimed at streamlining the software development lifecycle.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 38

Fundamentals of DevOps

What is DevOps?
DevOps is a collaboration between Development and IT Operations to make software production
and Deployment in an automated & repeatable way.

DevOps helps increase the organization’s speed to deliver software applications and services. The
full form of ‘DevOps’ is a combination of ‘Development’ and ‘Operations.’

It allows organizations to serve their customers better and compete more strongly in the market.

In simple words, DevOps can be defined as an alignment of development and IT operations with
better communication and collaboration.
What is DevOps?
DevOps is a set of practices, principles, and cultural philosophies that emphasize collaboration
and communication between software development (Dev) and IT operations (Ops) teams.

The main objective of DevOps is to enhance the efficiency and reliability of the software
development and delivery process by promoting automation, continuous integration,
continuous delivery, and other practices that streamline the entire lifecycle.
What are Automation, Scaling, and Infrastructure?
Automation: In the context of DevOps, automation refers to the use of tools and processes to mechanize
manual and repetitive tasks in software development, testing, and deployment. Automation minimizes
human error and accelerates the delivery process.

Scaling: Scaling involves the ability to adapt the infrastructure and software systems to handle increased
workloads or demand. DevOps often employs auto-scaling mechanisms to automatically adjust resources
based on traffic or usage.

Infrastructure: In DevOps, infrastructure can be managed as code (Infrastructure as Code or IaC), which
means that the provisioning, configuration, and management of servers, networking, and other
infrastructure components are defined and controlled using code.
Why is DevOps Needed?
Before DevOps, the development and operation team worked in complete isolation.

Testing and Deployment were isolated activities done after design-build. Hence they consumed
more time than actual build cycles.

Without using DevOps, team members spend a large amount of their time testing, deploying,
and designing instead of building the project.

Manual code deployment leads to human errors in production.

Coding & operation teams have separate timelines and are not sync, causing further delays.
Why is DevOps Needed?
Faster Delivery: DevOps accelerates the development and deployment of software, allowing
organizations to release updates and new features more quickly, which is crucial in today’s fast-
paced business environment.

Improved Quality: Automation and continuous testing in DevOps reduce the chances of human
error and help maintain a consistent level of quality in software.

Efficiency: DevOps streamlines the software development process, making it more efficient by
automating manual tasks, optimizing resource usage, and reducing downtime.
Why is DevOps Needed?
Collaboration: DevOps fosters collaboration and communication between development and
operations teams, leading to a shared sense of responsibility and faster issue resolution.

Scalability: With the ability to auto-scale infrastructure and applications, DevOps helps
organizations handle varying workloads and effectively manage resources.

Security: DevOps practices, such as DevSecOps, integrate security into the software development
and delivery process, reducing vulnerabilities and enhancing data protection.

Continuous Improvement: DevOps encourages a culture of continuous improvement, where


feedback and lessons learned from failures are used to enhance processes and products.
DevOps Principles
 Collaboration: Collaboration is at the heart of DevOps. Development and operations come together to form a
functional team that communicates, shares feedback and collaborates throughout the development and
deployment cycle.

Automate everything possible: Automation is an essential component of DevOps. The general approach is to
automate as much of the software development lifecycle (SDLC) as possible. By automating tasks in the
development process, developers have more time to write code and build new features. Plus, it reduces human
error and increases team productivity.

Continuous improvement: Continuous improvement is tied to continuous delivery (CD) and enables DevOps teams
to push updates that improve software systems' efficiency constantly. This principle concerns incremental
improvements and ongoing efforts to improve products, services or processes.
DevOps Principles
Customer-centric decision making: Teams can use DevOps practices—such as real-time live monitoring and
rapid deployment—to streamline and speed up the process of gathering user feedback. With immediate visibility
into how live users interact with a software system, teams can and should use that insight to develop further
improvements.

Create with the end in mind: DevOps teams understand customers' needs and create products or services
based on solving real problems. It may mean that teams need to let go of their assumptions about how
consumers will use the software. Instead, they need to understand the product thoroughly and continuously
focus on the idea that they are building working products sold to actual customers.
DevOps Architecture
DevOps Architecture
Development and operations both play essential roles in order to deliver applications. The
development 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 teams; therefore,
delivery can be faster.
DevOps Architecture
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 teams 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.
DevOps Core Components
 Continuous Integration/Continuous Delivery (CI/CD)

• CI: Developers integrate code into a shared repository frequently, with automated

builds and testing ensuring early detection of issues.

• CD: Automates the deployment of code to production or staging environments.

Tools: Jenkins, GitLab CI/CD, CircleCI, Azure DevOps, Travis CI.


DevOps Core Components
 Infrastructure as Code (IaC)
• Manages infrastructure through code to ensure consistency, scalability, and
repeatability.

• Enables provisioning, configuration, and management of infrastructure in a


programmatic way.

Tools: Terraform, AWS CloudFormation, Ansible, Chef, Puppet.


DevOps Core Components
 Monitoring and Logging
• Tracks system performance, detects anomalies, and provides insights for continuous
improvement.

• Centralized logging helps debug and analyze issues.

Tools: Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana), Splunk,


Datadog.
DevOps Core Components
 Collaboration and Communication
• Facilitates seamless communication between development, operations, and
other stakeholders.
• Promotes a culture of shared responsibility.

Tools: Slack, Microsoft Teams, Jira, Confluence.


DevOps Core Components
 Version Control System (VCS)

• Manages codebase versions and tracks changes made by multiple developers.

• Supports branching, merging, and rollback capabilities.

Tools: Git, GitHub, GitLab, Bitbucket.


DevOps Core Components
 Configuration Management
• Ensures consistency across environments by automating configuration
tasks.
• Simplifies updates and maintenance.

Tools: Ansible, SaltStack, Chef, Puppet.


DevOps Core Components
 Containerization and Orchestration
• Containers: Package applications and dependencies into portable units.

• Orchestration: Manages and scales containers across distributed


environments.

Tools: Docker, Kubernetes, OpenShift, Amazon ECS.


DevOps Core Components
 Cloud and Hybrid Environments
• Supports scalable, flexible, and on-demand infrastructure for DevOps
workflows.
• Enables hybrid setups for seamless on-premises and cloud integration.

Cloud Providers: AWS, Azure, Google Cloud Platform (GCP).


DevOps Workflow in the Architecture
DevOps Architecture
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.

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.
DevOps Architecture
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.

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.
DevOps Architecture
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.

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.
DevOps Architecture
Benefits of DevOps Architecture
• Faster Delivery: Automates repetitive tasks, reducing deployment time.

• Improved Collaboration: Breaks silos between teams for better coordination.

• Enhanced Reliability: Ensures consistent environments and robust monitoring.

• Scalability: Enables efficient scaling of applications and infrastructure.

• Cost Efficiency: Optimizes resource usage through automation and cloud-native


solutions.
DevOps Lifecycle
DevOps Lifecycle
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. During this phase, project requirements are
gathered and discussed with stakeholders. Moreover, the product backlog is also maintained
based on customer feedback which is broken down into smaller releases and milestones for
continuous software development.

Once the team agrees upon the business needs, the development team starts coding for
the desired requirements. It’s a continuous process where developers are required to code
whenever any changes occur in the project requirement or in case of any performance
issues. There are no DevOps tools that are required for planning, but there are several tools
for maintaining the code.
DevOps Lifecycle
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 not only involves
compilation, but it also includes unit testing, integration testing, code review,
and packaging.

In this phase, updated code or add-on functionalities and features are developed and
integrated into existing code. Furthermore, bugs are detected and identified in the code during
this phase at every step through unit testing, and then the source code is modified accordingly.
This step makes integration a continuous approach where code is tested at every commit.
DevOps Lifecycle
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.
DevOps Lifecycle
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.
DevOps Lifecycle
Continuous Testing: This phase, where the developed software is continuously
tested 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.
DevOps Lifecycle
Selenium does the automation testing, and TestNG generates the reports. This entire testing
phase can be automated 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.
DevOps Lifecycle
Continuous Deployment: Continuous deployment, or CD, is the final piece of a
complete DevOps pipeline and automates the deployment of code releases.
That means if code passes all automated tests throughout the production
pipeline, it’s immediately released to end users. CD critically removes the
need for human intervention to orchestrate a software release, which results
in faster release timelines. This also gives developers more immediate real-
world feedback.
DevOps Lifecycle
Continuous Monitoring: Continuous monitoring is a set of automated processes and
tooling used to troubleshoot issues and development teams can use to inform future
development cycles, fix bugs, and patch issues.
A well established continuous monitoring system will typically contain four components:
 Logging offers a continuous stream of raw data about business-critical components.

 Monitoring provides intelligence about the raw data provided in logs and metrics.

 Alerting provides proactive notifications when something has gone wrong and critical debugging information.

 Tracing takes logging a step further, providing a deeper level of application performance and behavioral insights that

can greatly impact the stability and scalability of applications in production environments.
DevOps Lifecycle
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.
DevOps Orchestration
DevOps automation is a process by which a single, repeatable task, such as launching an app or
changing a database entry, is made capable of running without human intervention, both on PCs and
in the cloud.

Orchestration refers to a set of automated tasks that are built into a single
workflow to solve a group of functions such as managing containers, launching a
new web server, changing a database entry, and integrating a web application.
More simply, orchestration helps configure, manage, and coordinate the
infrastructure requirements an application needs to run effectively.
DevOps Orchestration
Automation applies to functions that are common to one area, such as launching a web server, or integrating a web
app, or changing a database entry. But when all of these functions must work together, DevOps orchestration is
required.

DevOps orchestration involves automating multiple processes to reduce issues leading to the production date and
shorten time to market. On the other hand, automation is used to perform tasks or a series of actions that are
repetitive.

DevOps orchestration streamlines the entire workflow by centralizing all tools used across teams, along with their
data, to keep track of process and completion status throughout. Besides, automation can be pretty complicated at
scale, although normally it is focused on a specific operation to achieve a goal, such as a server deployment. When
automation has reached its limitations, that’s when orchestration plays to its strengths.
DevOps Orchestration
Reasons to invest in DevOps Orchestration:
 Speed up the automation process

 Enhance cross-functional collaboration

 Release products with higher quality

 Lower costs for IT infrastructure and human resources

 Build transparency across the SDLC

 Improve the release velocity

You might also like