CSE Semester 06 22CS910 DevOps - Unit I
CSE Semester 06 22CS910 DevOps - Unit I
This document is confidential and intended solely for the educational purpose of RMK
Group of Educational Institutions. If you have received this document through email in
error, please notify the system manager. This document contains proprietary information
and is intended only to the respective group / learning community as intended. If you
are not the addressee you should not disseminate, distribute or copy through e-mail.
Please notify the sender immediately by e-mail if you have received this document by
mistake and delete this document from your system. If you are not the intended
recipient you are notified that disclosing, copying, distributing or taking any action in
reliance on the contents of this information is strictly prohibited.
22CS910 - DevOps
Department : Computer Science & Engineering
Batch / Year : 2022 - 2026 / III
Created by : Mr. S Vijayakumar, Associate Professor / CSE
Date : 15.12.2024
1. Contents
S. No. Contents
1 Contents
2 Course Objectives
3 Prerequisites
4 Syllabus
5 Course Outcomes
6 CO-PO Mapping
7 Lecture Plan
9 Lecture Notes
10 Assignments
12 Part-B Questions
16 Assessment Schedule
2 Systems Methodologies
4 Infrastructure Concepts
22CS910 - DevOps
22IT910
Rest Application Development Using Spring Boot and JPA
22CS402
Web Development Frameworks
22CS301
Advanced Java Programming
22CS202
Java Programming
OBJECTIVES:
The Course will enable learners to:
❖ Bridge the gap between development and operations for faster, more reliable
software releases.
❖ Automate software delivery with CI/CD pipelines.
❖ Package and deploy apps efficiently using Docker containers.
❖ Automate infrastructure with Infrastructure as Code (IaC).
❖ Monitor and troubleshoot applications in production.
UNIT I Introduction to DEVOPS 9
collaboration.
applications.
PO PO PO PO PO PO PO PO PO PO PO PO PS PS PS
COs 1 2 3 4 5 6 7 8 9 10 11 12 O1 O2 O3
CO1 3 3 3 2 2 2 1 1
CO2 3 3 3 2 2 2 1 1
CO3 3 3 3 2 2 2 1 1
CO4 3 3 3 2 2 2 1 1
CO5 3 3 3 2 2 2 1 1
7. Lecture Plan - Unit I
No.
S. of Proposed Actual Pertaining Taxonomy Mode of
Topic
No. Period Date Lecture CO Level Delivery
s Date
Software
Development
1 Methodologies - CO1
K2
Chalk &
1 Talk
Operations
Methodologies
Systems
2 1 CO1 Chalk &
Methodologies K3
Talk
Development,
Release, and
1 CO1 Chalk &
3 Deployment K3
Talk
Concepts
Infrastructure
4 1 CO1 Chalk &
Concepts K2
Talk
What is DevOps? -
5 DevOps importance 1 CO1
K3
Chalk &
and benefits Talk
DevOps principles
and practices - 7 C’s
6 1 CO1 Chalk &
of DevOps lifecycle K3
Talk
for business agility
DevOps and
7 1 CO1 Chalk &
continuous testing K2
Talk
Agile
This approach focuses on continuous releases and customer feedback. It's
characterized by adaptability, transparency, collaboration, and efficient
communication. Agile allows for changes along the way, and it's beneficial for
software projects where the structure isn't particularly defined.
Waterfall
This approach is linear and sequential, and it requires defining and
documenting all requirements, design, and specifications before starting
coding. It's best for physical structure projects where the process for doing it
right is important.
Scrum
Scrum is a management framework that teams use to self-organize and work
towards a common goal. It describes a set of meetings, tools, and roles for
efficient project delivery. Much like a sports team practicing for a big match,
Scrum practices allow teams to self-manage, learn from experience, and
adapt to change. Software teams use Scrum to solve complex problems cost
effectively and sustainably. Some characteristics of Scrum include: Iterative
and incremental approach, Short sprints, Constant feedback, Fast moving
and money efficient, and Customer satisfaction is very important. A project
management framework that helps teams work together to achieve a
common goal:
Break work into sprints : Teams divide work into goals to be completed
within time-boxed iterations called sprints. Sprints are typically two weeks
long, but can be up to one month.
Self-organize : Teams learn from experience, adapt to change, and
reprioritize tasks as needed.
Reflect on progress : Teams regularly review their progress and use the
insights to plan for the future.
Communicate: Teams have frequent face-to-face conversations to prevent
miscommunication.
Surface issues : Teams work in an environment where everyone is aware
of issues that might be affecting the team's success.
Some benefits of Scrum include:
Accelerates software delivery
Fosters teamwork, communication, and transparency
Reduced documentation overhead
Operations Methodology
Operations management (OM) is the practice of handling day-to-day business
functions in a way that is efficient and maximizes profitability. OM teams try
to balance costs with revenue to achieve the highest possible net operating
profit.
IT operations management: Performs daily activities needed to manage
IT services and support infrastructure (e.g., facilities management) to ensure
the overall success of operations.
ITIL stands for Information Technology Infrastructure Library. ITIL was
developed in the 1980s by the United Kingdom's Central Computer and
Telecommunications Organization (CCTA), a government agency responsible
for providing IT assistance to other ministries.
ITIL methodology is a well-known IT best practice that helps firms align their
IT services with ITIL methodology consumer and business goals. IT-related
assets, availability, and resources that provide value and advantages to
clients are examples of services.
Basic Features of ITIL Methodology
The ITIL agile methodology features focus on a distinct component of the IT
service's lifecycle:
1. Service Strategy
The goal of the Service strategy is to establish an ITIL service
lifecycle strategy. The strategy should be in line with the company's goals.
This component's utility and warranty ensure that the service is up to
standard and suitable for use, respectively. It is critical to do this since these
two components give value to the supply of services to clients.
2. Service Design
The Service Design lifecycle stage is concerned with the creation of services
and all enabling components for their implementation in the live
environment. The "Four Ps of Service Design" are areas that should be
considered while creating a service. They are as follows:
People
Processes
Products
Partners
3. Service Transition
The Service Transition process's goal is to design and deploy IT services
while ensuring that modifications to services and Service Management
procedures are conducted cohesively.
4. Service Operations
Service Operations is concerned with achieving end-user expectations while
balancing expenses and identifying possible difficulties. Fulfilling customer
requests, addressing service outages, troubleshooting, and performing
normal operational duties are all part of the Service Operations process. This
is the only category of the five that includes functions and processes.
5. Continual Service Improvement (CSI)
The goal of this phase is to apply quality management systems to learn from
previous achievements and mistakes. It strives to continuously enhance the
efficacy and efficiency of IT processes and services following the ISO 2000
concept of continuous improvement. In this domain, there is just one method
with seven steps:
1. Identifying solutions for improvement
2. Specifying the metrics to be used
3. Data collection
4. Data analysis
5. presenting and utilizing data-derived information
6. Processing of data
7. Making use of the data to improve services
Benefits of ITIL Framework
The benefits of the ITIL framework extend beyond improving service
delivery. Implementing ITIL’s best practices can help organizations:
❖ Optimize IT operations and reduce costs
❖ Align IT with business objectives and goals
❖ Improve customer satisfaction and enhance the user experience
❖ Maximize the value of IT investments
❖ Create a culture of continuous improvement
Real Time Examples
Example 1: A multinational corporation can use the ITIL framework to
standardize its IT operations across different regions, resulting in a potential
20% reduction in incident resolution times.
Example 2: A healthcare provider can implement ITIL frameworks to
improve its service delivery, resulting in enhanced patient care and a
significant reduction in system downtimes.
Benefits of LSD
Here are some key benefits of LSD that help organizations to improve their
software development processes and outcomes:
Increased Efficiency: LSD reduces delays and inefficiencies by identifying
and eliminating non-value-adding activities.
Higher Quality: It integrates quality assurance throughout the development
process, thus preventing defects and ensuring quality products.
Faster Delivery: Shorter development cycles allow for quicker release of
features and updates, thus meeting customer demands more rapidly.
Adaptability: Delaying decisions until they are necessary and are based on
facts, allowing teams to adapt to changes and new information.
Enhanced Collaboration: Engages customers throughout the development
process, ensuring that their needs and feedback are continuously addressed.
Limitations of LSD
Here are some key limitations of LSD:
Cultural Resistance: Implementing LSD requires a significant cultural shift
and if there is resistance to change from team members and management
then it can hinder its adoption and effectiveness.
Learning Curve: There is a steep learning curve associated with
understanding and applying lean principles and practices effectively.
Requires Strong Leadership: Successful implementation of LSD requires
strong and committed leadership to guide the transition.
Difficulty in Measuring Waste: In LSD, determining waste is subjective
and challenging. It requires a deep understanding of processes and value
streams.
Resource Intensive: Implementing LSD requires an initial investment in
training, tools, and process redesign.
Version Control
In the world of software development, version control, also
known as source control, plays a critical role in ensuring a smooth and
efficient coding process. With version control, developers can track, manage,
and collaborate on changes to their code, resulting in better code
management and increased productivity.
Version control provides developers with the ability to recover
from mistakes easily. By keeping a record of all changes made to the code,
developers can revert back to previous versions if needed, preventing any
potential issues or setbacks. This feature proves especially beneficial when
working on complex projects with multiple contributors.
One of the key advantages of version control is the ability to
review past changes. Developers can easily navigate through the code
history, check who made specific changes, and understand the reasoning
behind them. This not only fosters collaboration among team members but
also helps in troubleshooting and improving the codebase.
Test Driven Development
Test Driven Development (TDD) is a software development practice where
developers write automated tests before writing the actual code that needs
to be tested. Developers create unit test cases before developing the actual
code. It is an iterative approach combining Programming, Unit Test Creation,
and Refactoring.
The following sequence of steps is generally followed:
Run all the test cases and make sure that the new test case fails.
Red – Create a test case and make it fail, Run the test cases
Green – Make the test case pass by any means.
Refactor – Change the code to remove duplicate/redundancy. Refactor code
– This is done to remove duplication of code.
Repeat the above-mentioned steps again and again
What are the 5 steps of TDD?
1. Add a test, which will certainly FAIL. ( Red) ...
2. Run all the tests. See if any test fails. ...
3. Write only enough code to pass all the tests. (Green) ...
4. Run all the tests. If any test fails, go back to step 3. ...
5. Refactor the code. (Refactor) ...
6. If a new test is added, repeat from step 1.
Benefits
1. Improved team productivity and efficiency
2. Accelerated speed to market
3. Better product/market fit
4. Higher quality, more stable products
5. Increased customer satisfaction
6. Happier, more productive developers
Continuous Delivery
Continuous delivery is a software development practice where
code changes are automatically prepared for a release to production. A pillar
of modern application development, continuous delivery expands
upon continuous integration by deploying all code changes to a testing
environment and/or a production environment after the build stage. When
properly implemented, developers will always have a deployment-ready build
artifact that has passed through a standardized test process.
Continuous Deployment
Continuous deployment is a software development strategy that
automatically releases code changes to a production environment. It's part of
the continuous integration and continuous delivery (CI/CD) process, which
also includes continuous integration (CI).
Continuous deployment aims to minimize the lead time between when a
developer writes new code and when it's used by live users. It uses a series
of predefined tests to drive the automation. Once new updates pass the
tests, the system pushes them directly to the users
Minimum Viable Product
In software development, MVP stands for Minimum Viable
Product. It's a technique that involves releasing a product with just enough
features to attract early customers and gather feedback for future
development.
Characteristics of an MVP:
Just enough features: An MVP has the minimum features required to
satisfy early customers.
Quick release: The goal of an MVP is to quickly release a product to
market.
Feedback: An MVP enables feedback for future development.
Testing: Testing is a key part of an MVP. It helps to test if an idea works in
a market environment while minimizing expenditure.
Risk reduction: An MVP reduces the risk of innovation by allowing for
gradual expansion models.
1.4 Infrastructure Concepts
IT infrastructure is the foundation for deploying, operating, and
managing a company’s technology resources and applications. It’s the
collection of hardware, software, networks, facilities, and related services
that deliver IT operations.
IT infrastructure components include servers, storage systems,
networking devices, operating systems, databases, and other software
applications. IT infrastructure underpins nearly every aspect of modern
business operations.
Components of IT infrastructure
IT infrastructure includes the following elements:
Hardware consists of servers, computers, routers, switches, and storage
systems.
Software includes operating systems, applications, and problem
management tools.
Networking comprises routers, switches, and cables.
Data centers are facilities housing critical IT equipment and support
infrastructure, including power, cooling, and security systems.
Cloud services encompass remote computing services offering scalable IT
resources over the internet, such as storage and processing power.
Configuration Management
Configuration management (CM) is a process that ensures a
product's performance, functionality, and physical attributes are consistent
with its design, requirements, and operational information throughout its life.
CM is used in the technology world to manage IT systems and
components. It helps to ensure that systems perform as expected and are
maintained in a desired state. CM is often used in conjunction with IT service
management (ITSM).
Configuration management is a process for maintaining a desired state of IT
systems and components. It helps ensure that a system consistently
performs as expected throughout its lifecycle.
System administrators can use configuration management tools
to set up an IT system, such as a server or workstation, then build and
maintain other servers and workstations with the same settings. They can
also use configuration assessments and drift analyses to continuously identify
systems that have strayed from the desired state and need to be updated,
reconfigured, or patched.
Infrastructure automation: configure and manage server infrastructure to
enforce consistency and eliminate configuration drift.
Cloud automation: configure and manage cloud resources including
operating systems, security groups, load balancers, and virtual private
clouds.
Network automation: configure and manage network devices such routers
and switches.
Security automation: configure and manage security devices such as
firewalls and intrusion detection systems
Edge automation: configure and manage remote infrastructure systems
including network, security, IoT devices, and server equipment.
Cloud Computing
Cloud computing is the delivery of computing resources over the
internet, or "the cloud", on-demand. It allows users to access computing
resources like storage, databases, networking, and software without having
to own and maintain physical servers and data centers. Instead, users pay
for what they use, which can help lower operating costs and scale more
efficiently.
Artifact Management
Artifacts management tools, also known as artifact repositories, are used to
store, organize and distribute artifacts (that is, binary files plus their
metadata) in a single centralized location. This reduces the amount of time
spent downloading dependencies from a public place.
In software development, an artifact refers to any output or deliverable
produced during the development process. It can be any file or set of files
used, generated, or modified while creating a software application. Artifacts
can take various forms, including:
Source code
Compiled code
Libraries and dependencies
Configuration Files
Documentation
Executable Files
Database schemas and scripts
Artifact management in DevOps refers to handling and organizing the
various software artifacts produced during the software development life
cycle. These artifacts can include compiled code, libraries, documentation,
and any other files or assets that are part of a software project.
Containers
Containers allow devs to package everything required to run an app—the
code, runtimes, and system tools—into one convenient location. This permits
developers to create the applications and deploy them on servers with the
operating system itself, which makes containers very lightweight and
portable.
Software containers are a key part of modern DevOps practices, and are
used to:
Automate tasks
Container orchestration platforms like Kubernetes automate container
deployment, scaling, and management.
Improve collaboration
Containers and Kubernetes help development and operations teams
collaborate more seamlessly.
Reduce overhead
Containers share an operating system, so they require less overhead and
start up faster than virtual machines (VMs).
Provide isolation
Containers provide application-level isolation, with each container having its
own file system, processes, and network stack.
Secure containers
Containers share the host operating system's kernel, so it's important to
protect them from vulnerabilities and attacks.
1.5 What is DevOps?
DevOps is a tactical approach, not a specific technology. The
term is a combination of the words "development" and "operations".
DevOps is a set of practices, tools, and cultural philosophies that
combine software development and IT operations into a single process.
DevOps originated around 2007 when the software development
and IT operations communities recognized the need to improve on the
traditional model. In this model, developers and operations teams worked
separately, with developers writing code and operations deploying and
supporting it.
DevOps teams often work together across the entire application
lifecycle, from development to operations. They use a variety of tools and
technologies to operate and evolve applications quickly and reliably. DevOps
teams aim for high availability, strong security, zero downtime, and system
reliability
DevOps Practices
Continuous Integration/Delivery/Deployment
A change at any stage of the software delivery pipeline, from development to
production systems, should go through a CI/CD system. This ensures that if
anything fails, there is a fast feedback loop leading to rapid recovery.
Flexibility
DevOps flexibility allows to scale up or down operations quickly,
which is critical. With the right approach, we can scale our operations to
meet increased demand, increase security to handle system failures, and
provide customers with a consistent experience, regardless of their channel
of communication.
Agile Decision Making
Agile DevOps is a strategic approach that combines Agile
software development methodologies with DevOps practices to speed up the
feedback loop between developers and operations teams. Agile decision-
making processes emphasize collaboration and teamwork to solve problems
and progress projects.
7C’s of DevOps Life Cycle
2. Which are some of the most popular DevOps tools? (CO1, K1)
The most popular DevOps tools include:
• Selenium
• Puppet
• Chef
• Git
• Jenkins
• Ansible
• Docker
3. What are the different phases in DevOps? (CO1, K1)
Note : All the above questions requires Diagrams to Illustrate the Concepts, Wherever
Necessary.
13. Supportive online courses
Online Courses
1. https://www.coursera.org/learn/intro-to-devops
2. https://www.udemy.com/course/decodingdevops/?couponCode
=IND21PM
1. https://www.geeksforgeeks.org/devops-tutorial/
2. https://www.simplilearn.com/tutorials/devops-tutorial/devops-
interview-questions#what_is_devops
3. https://aws.amazon.com/devops/what-is-devops/
4. https://azure.microsoft.com/en-us/products/devops
5. https://roadmap.sh/devops
14. Real Time Applications
1. Real Time CI/CD Pipeline for Java Application to Deploy on Apache Server
2. Building Scalable, Secure, and High-Performance Web Applications with
AWS 3-Tier Architecture
3. CICD PROJECT: Production Level Blog APP Deployment using EKS, Nexus,
SonarQube, Trivy with Monitoring Tools
4. CI/CD Project: Deploy a 3-tier Microservice Voting App using ArgoCD and
Azure DevOps Pipeline
5. DevSecOps: OpenAI Chatbot UI Deployment in EKS with Jenkins and
Terraform
6. DevSecOps: Deploy Reddit App to Amazon Elastic Kubernetes Service
(EKS) using ArgoCD and monitor its performance
7. DevOps Project to Automate Infrastructure on AWS Using Terraform and
GitLab CICD
8. DevSecOps (DevOps) Project: Deploying a Petshop Java-Based
Application with CI/CD, Docker, and Kubernetes
9. From Scratch to Production: Deploying EKS Clusters and Applications with
CI/CD using Jenkins and Terraform
10. Real Time DevOps Project : Deploy to Kubernetes Using Jenkins : End to
End DevOps Project : CI/CD
15. Content Beyond Syllabus
What is a DevOps Engineer?
A DevOps engineer is an expert in developing, deploying,
and maintaining software systems using the DevOps methodology and
practices.
DevOps engineers collaborate closely with IT operations
teams, software developers, and other stakeholders to guarantee the
effective delivery of software products. To increase the efficiency and
quality of software development, they implement automation,
continuous integration, and continuous delivery/deployment (CI/CD)
practices. They also locate and resolve issues that arise throughout
the development process.
DevOps engineers often have extensive backgrounds in IT
operations, systems administration, software development, scripting,
automation, and cloud computing skills. They are adept at using
various tools and technologies, including source code management
systems, build and deployment tools, virtualization and container
technologies, and monitoring and logging tools.
DevOps engineers must be proficient in technical and
interpersonal skills, teamwork, and problem-solving techniques. They
also need to be able to interact and collaborate successfully with
coworkers from all backgrounds and disciplines since they work closely
with several teams within the business.
15. Content Beyond Syllabus
What are the Requirements to Become a DevOps Engineer?
Different criteria for becoming a DevOps engineer may exist
depending on the business and the individual function. However, some
specific fundamental skills and certifications are frequently needed or
recommended. They consist of the following:
Excellent technical background: DevOps engineers should
be well-versed in IT operations, systems administration, and software
development. A degree in computer science, information technology, or a
similar discipline may be required, as well as relevant experience and
certifications.
Experience with DevOps tools and methodologies:
DevOps engineers should have experience with various DevOps
technologies and processes, including version control systems, build and
deployment automation, containerization, cloud computing, and monitoring
and logging tools.
Scripting and automation skills: DevOps engineers should
have strong scripting skills and be proficient in using tools such as Bash,
Python, or PowerShell to automate tasks and processes.
Cloud computing experience: DevOps engineers should
have experience working with cloud platforms such as Amazon Web
Services (AWS), Microsoft Azure, or Google Cloud Platform (GCP).
Soft skills: DevOps engineers should be effective
communicators, able to collaborate with teams across departments, and
possess strong problem-solving and analytical skills.
Certification: Some organizations may require DevOps
engineers to hold relevant certifications such as Certified DevOps Engineer
(CDE), Certified Kubernetes Administrator (CKA), or AWS Certified DevOps
Engineer - Professional.
16. Assessment Schedule
S. Name of the
Start Date End Date Portion
No. Assessment
TEXTBOOKS:
1. Deepak Gaikwad, Viral Thakkar, "DevOps Tools: from Practitioner's
Point of View", Wiley, 2019.
2. Jennifer Davis, Ryn Daniels, "Effective DevOps", O'Reilly Media, 2016.
REFERENCES:
1. Gene Kim, Jez Humble, Patrick Debois, "The DevOps Handbook: How
to Create World-Class Agility, Reliability, and Security in Technology
Organizations", IT Revolution Press, 2016.
2. Jez Humble, Gene Kim, "Continuous Delivery: Reliable Software
Releases Through Build, Test, and Deployment Automation", Addison-
Wesley, 2010.
3. Yevgeniy Brikman, "Terraform: Up & Running: Writing Infrastructure
as Code", O'Reilly Media, 2019.
4. Joseph Muli, "Beginning DevOps with Docker", Packt Publishing, 2018.
18. Mini Project Suggestions
Disclaimer:
This document is confidential and intended solely for the educational purpose of RMK Group of
Educational Institutions. If you have received this document through email in error, please notify the
system manager. This document contains proprietary information and is intended only to the
respective group / learning community as intended. If you are not the addressee you should not
disseminate, distribute or copy through e-mail. Please notify the sender immediately by e-mail if you
have received this document by mistake and delete this document from your system. If you are not
the intended recipient you are notified that disclosing, copying, distributing or taking any action in
reliance on the contents of this information is strictly prohibited.