devops
devops
Course Objectives:
Understand the skill sets and high-functioning teams involved in Agile, DevOps and related
methods to reach a continuous delivery capability.
Course Outcomes:
After completion of the course, the student should be able to
1. Apply DevOps principles and methodologies to identify, analyze, and address challenges in
software development and delivery processes. L3
2. Apply DevOps principles, implement continuous testing practices, and shape resilient
software architecture to enhance business agility in software development models. L3
3. Apply source code control practices, understand the history and roles associated with
source code management, and effectively utilize Git-based tools and platforms in project
development. L3
4. Analyze complex build systems, demonstrate advanced proficiency in configuring and
optimizing Jenkins servers, critically strategize build dependency management, and design
sophisticated pipelines for effective system integration. L4
5. Analyze testing types, evaluate test automation, demonstrate proficiency in Selenium for
frontend testing and JavaScript for backend integration, apply testdriven development
principles, and assess deployment strategies using virtualization, configuration management,
and container orchestration. L4
UNIT-I
Introduction to DevOps: Introduction, Agile development model, DevOps and ITIL. DevOps
process and Continuous Delivery, Release management, Scrum, Kanban, delivery pipeline,
identifying bottlenecks.
UNIT-II
Software development models and DevOps: DevOps Lifecycle for Business Agility, DevOps,
and Continuous Testing. DevOps influence on Architecture: Introducing software
architecture, The monolithic scenario, Architecture rules of thumb, The separation of
concerns, Handling database migrations, Micro services and the data tier, DevOps,
architecture, and resilience.
UNIT-III
Introduction to project management: The need for source code control, the history of source
code management, Roles and code, source code management system and migrations, shared
authentication, Hosted Git servers, Different Git server implementations, Docker
intermission, Gerrit, The pull request model, GitLab.
UNIT-IV
Integrating the system: Build systems, Jenkins build server, managing build dependencies,
Jenkins plugins, and file system layout, The host server, Build slaves, Software on the host,
Triggers, Job chaining and build pipelines, Build servers and infrastructure as code, Building
by dependency order, Build phases, Alternative build servers, Collating quality measures.
UNIT-V
Testing Tools and Deployment: Various types of testing, Automation of testing Pros and cons,
Selenium - Introduction, Selenium features, JavaScript testing, Testing backend integration
points, Test-driven development, REPL-driven development. Deployment of the system:
Deployment systems, Virtualization stacks, code execution at the client, Puppet master and
agents, Ansible, Deployment tools: Chef, Salt Stack and Docker.
TEXT BOOK:
1. JoakimVerona, Practical DevOps, Packt Publishing, 2016.
REFERENCE BOOKS:
1. Deepak Gaikwad, ViralThakkar, DevOps Tools from Practitioner’s Viewpoint. Wiley
publications.
2. LenBass, IngoWeber, LimingZhu. DevOps: A Software Architect's Perspective. Addison
Wesley
Unit-1
History
Software Development Life Cycle (SDLC)
A software life cycle model (also termed process model) is a pictorial and diagrammatic
representation of the software life cycle. A life cycle model represents all the methods
required
to make a software product transit through its life cycle stages. It also captures the structure
in
which these methods are to be undertaken.
SDLC MODELS
Waterfall Model:
Description: A linear and sequential approach where each phase must be completed before
the next begins.
Phases: Requirements, Design, Implementation, Testing, Deployment, Maintenance.
Advantages: Simple and easy to understand; works well for small projects with well-defined
requirements.
Disadvantages: Inflexible to changes; difficult to go back to previous phases.
Incremental Model:
Description: Development is carried out in small, manageable increments or modules. Each
increment adds functional capabilities.
Advantages: Allows for partial implementation; easier to manage risk; accommodates
changing requirements.
Disadvantages: Requires good planning and design; may lead to integration issues.
Iterative Model:
Description: Involves building a prototype and refining it through multiple iterations based
on feedback.
Advantages: Flexibility to adapt to changes; focuses on customer feedback.
Disadvantages: Can lead to scope creep if not managed well; may require more resources.
Spiral model:
Description: Combines iterative development with the systematic aspects of the Waterfall
model. It emphasizes risk assessment and minimizes risks through iterative cycles (spirals).
Phases: Planning, Risk Analysis, Engineering, Evaluation.
Advantages: Focus on risk management; allows for incremental releases.
Disadvantages: Can be complex; requires extensive documentation and expertise.
Agile model:
Description: An iterative and incremental approach that emphasizes collaboration, customer
feedback, and flexibility. Agile frameworks (e.g., Scrum, Kanban) are commonly used.
Advantages: Highly adaptable; promotes continuous delivery and improvement; fosters
strong team collaboration.
Disadvantages: Requires cultural change in organizations; less emphasis on documentation.
Devops model:
Description: Integrates development and operations teams to improve collaboration,
efficiency, and deployment frequency.
Advantages: Continuous integration and delivery; faster time to market; improved
collaboration.
Disadvantages: Requires cultural shifts and investment in tools; can be challenging to
implement.
WATERFALL MODEL :
Winston Royce introduced the Waterfall Model in 1970.This model has five phases:
Requirements analysis and specification, design, implementation, and unit testing, integration
and system testing, and operation and maintenance. The steps always follow in this order and
do not overlap. The developer must complete every phase before the next phase begins. This
model is named "Waterfall Model", because its diagrammatic representation resembles a
cascade of waterfalls.
1. Requirements analysis and specification phase: The aim of this phase is to understand
the exact requirements of the customer and to document them properly. Both the customer
and the software developer work together so as to document all the functions, performance,
and interfacing requirement of the software. It describes the "what" of the system to be
produced and not "how."In this phase, a large document called Software Requirement
Specification (SRS) document is created which contained a detailed description of what the system
will do in the common language.
2. Design Phase: This phase aims to transform the requirements gathered in the SRS into a
suitable form which permits further coding in a programming language. It defines the overall
software architecture together with high level and detailed design. All this work is
documented as a Software Design Document (SDD).
3. Implementation and unit testing: During this phase, design is implemented. If the SDD
is complete, the implementation or coding phase proceeds smoothly, because all the
information needed by software developers is contained in the SDD. During testing, the code
is thoroughly examined and modified. Small modules are tested in isolation initially. After
that these modules are tested by writing some overhead code to check the interaction between
these modules and the flow of intermediate output.
4. Integration and System Testing: This phase is highly crucial as the quality of the end
product is determined by the effectiveness of the testing carried out. The better output will
lead to satisfied customers, lower maintenance costs, and accurate results. Unit testing
determines the efficiency of individual modules. However, in this phase, the modules are
tested for their interactions with each other and with the system.
5. Operation and maintenance phase: Maintenance is the task performed by every user
once the software has been delivered to the customer, installed, and operational.
Advantages of Waterfall model
This model is simple to implement also the number of resources that are required for it is
minimal.
The requirements are simple and explicitly declared; they remain unchanged during the
entire project development.
The start and end points for each phase is fixed, which makes it easy to cover progress.
The release date for the complete product, as well as its final cost, can be determined
before development.
It gives easy to control and clarity for the customer due to a strict reporting system.
Disadvantages of Waterfall model
In this model, the risk factor is higher, so this model is not suitable for more
significant and complex projects.
This model cannot accept the changes in requirements during development.
It becomes tough to go back to the phase. For example, if the application has now
shifted to the coding phase, and there is a change in requirement, It becomes tough to
go back and change it.
Since the testing done at a later stage, it does not allow identifying the challenges and
risks in theearlier phase, so the risk reduction strategy is difficult to prepare.
Introduction
The DevOps is the combination of two words, one is Development and other is Operations.
It is a culture to promote the development and operation process collectively. The DevOps
tutorial will help you to learn DevOps basics and provide depth knowledge of various
DevOps tools such as Git, Ansible, Docker, Puppet, Jenkins, Chef, Nagios and
Kubernetes.
What is DevOps?
Why DevOps?
Before going further, we need to understand why we need the 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.
DevOps History
• In 2009, the first conference named DevOpsdays was held in Ghent Belgium. Belgian
consultant and Patrick Debois founded the conference.
• In 2012, the state of DevOps report was launched and conceived by Alanna Brown at
• Puppet.
• In 2014, the annual State of DevOps report was published by Nicole Forsgren, Jez
• Humble, Gene Kim, and others. They found DevOps adoption was accelerating in
2014 also.
• In 2015, Nicole Forsgren, Gene Kim, and Jez Humble founded DORA (DevOps
Research and Assignment).
• In 2017, Nicole Forsgren, Gene Kim, and Jez Humble published "Accelerate:
Building
• and Scaling High Performing Technology Organizations".
Agile development
An agile methodology is an iterative and incremental 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.
What is the Agile Methodology?
Agile methodologies are iterative and incremental, which means it’s known for breaking a
project into smaller parts and adjusting to changing requirements.
1. They prioritize flexibility, collaboration, and customer satisfaction.
2. Major companies like Facebook, Google, and Amazon use Agile because of its
adaptability and customer-focused approach.
Life cycle of Agile Methodology
1. Requirement Gathering
In this stage, the project team identifies and documents the needs and expectations of
various stakeholders, including clients, users, and subject matter experts.
It involves defining the project’s scope, objectives, and requirements.
Establishing a budget and schedule.
Creating a project plan and allocating resources.
2. Design
Developing a high-level system architecture.
Creating detailed specifications, which include data structures, algorithms, and
interfaces.
Planning for the software’s user interface.
3. Development (Coding)
Writing the actual code for the software. Conducting unit testing to verify the functionality of
individual components.
4. Testing
This phase involves several types of testing:
1. Integration Testing: Ensuring that different components work together.
2. System Testing: Testing the entire system as a whole.
3. User Acceptance Testing: Confirming that the software meets user requirements.
4. Performance Testing: Assessing the system’s speed, scalability, and stability.
5. Deployment
1. Deploying the software to a production environment.
2. Put the software into the real world where people can use it.
3. Make sure it works smoothly in the real world.
4. Providing training and support for end-users.
6. Review (Maintenance)
1. Addressing and resolving any issues that may arise after deployment.
2. Releasing updates and patches to enhance the software and address problems.
History of Agile
In 1957, people started figuring out new ways to build computer programs. They wanted to
make the process better over time, so they came up with iterative and incremental methods.
In the 1970s, people started using adaptive software development and evolutionary project
management. This means they were adjusting and evolving how they built software.
In 1990s, there was a big change. Some people didn’t like the strict and super-planned ways
of doing things in software development. They called these old ways “waterfall.” So, in
response, lighter and more flexible methods showed up. These included:
Rapid Application Development (RAD) in 1991.
Unified Process (UP), Dynamic Systems Development Method (DSDM) in 1994.
Scrum in 1995.
Crystal Clear and Extreme Programming (XP) in 1996.
Feature-Driven Development (FDD) in 1997.
Agile is the process that follows concept of agile manifestation held in in Feb 2001
Agile manifesto contains 12 principles of agile software development.
Understanding the 12 Agile principles
The 12 Agile principles guide teams on how to work more flexibly and respond quickly to
changes, which is key in project management. Here’s a quick overview of the 12 Agile
principles:
1. Make customers happy through early and continuous delivery of useful software.
2. Embrace changing requirements, even in later stages.
3. Deliver work frequently, from a couple of weeks to a couple of months, with a
preference for the shorter timescale.
4. Stakeholders and developers must work together daily throughout the project.
5. Build projects around motivated individuals, giving them the environment and
support they need, and trusting them to get the job done.
6. Face-to-face conversations are the most effective method of communication.
7. The main measure of progress is working software.
8. The working pace should be constant yet sustainable.
9. Pay continuous attention to technical excellence and good design.
10. Keep things as simple as possible.
11. The best results come from self-organizing teams.
12. The team reflects on how to become more effective at regular intervals, adjusting
behaviour accordingly.
Advantages
1) Customer satisfactions
2) Customers, developers, tester constantly interact with each other
3) Working software is delivered frequently
4) Face to face conversion is the best from of communication
5) Even late changes in requirement are welcomed
6) Continuous attention to technical excellence and good design.
Disadvantages
1) Lack of documentation
2) Lack of planning and project management software
3) Team must be knowledgeable
4) Project can easily take off track is costumer is not satisfied.
2. Artifacts:
- Product backlog: The product backlog is a prioritized features list containing every
desired feature or change to the product. Note: The term “backlog” can get confusing because
it’s used for two different things. To clarify, the product backlog is a list of desired features
for the product.
-The sprint backlog is a list of tasks to be completed in a sprint.
3. Events:
- Sprint: A time-boxed period, usually lasting 2-4 weeks, during which the Scrum Team
works to create a usable product increment. Sprints are of consistent length throughout the
project.
-Sprint Planning:
At the start of each sprint, a sprint planning meeting is held, during which the product owner
presents the top items on the product backlog to the team.
The team selects the work they can complete during the coming sprint.
That work is then moved from the product backlog to a sprint backlog, which is the list of
tasks needed to complete the product backlog items the team has committed to complete in
the sprint.
- Daily Scrum: Each day during the sprint, a brief meeting called the daily scrum is
conducted. This meeting helps set the context for each day’s work and helps the team stay on
track. All team members are required to attend the daily scrum.
- Sprint review meeting: At the end of each sprint, the team demonstrates the completed
functionality at a sprint review meeting, during which, the team shows what they
accomplished during the sprint.
- Sprint retrospective: Also at the end of each sprint, the team conducts a sprint
retrospective, which is a meeting during which the team reflects on how well their process is
working for them and what changes they may wish to make for it to work even better.
Key Principles:
- Transparency: All aspects of the process must be visible to those responsible for the
outcome. This includes the Product Backlog, Sprint Backlog, and progress toward goals.
- Inspection: Regularly review artifacts and progress to identify any deviations from the plan
and make adjustments as needed.
-Adaptation: Make adjustments to processes and practices based on feedback and
inspections to improve efficiency and effectiveness.
Release Management:
Release Management is the process of planning, coordinating, and controlling the release of
software products to ensure that they meet the required quality, functionality, and timeline.
Key Activities:
1. Release Initiation: Identify the need for a release, define objectives, and obtain approval.
2. Release Planning: Create a detailed plan, including scope, timeline, resources, and budget.
3. Build and Test: Develop, test, and stabilize the release candidate.
4. Deployment: Deploy the release to production, configure, and verify.
5. Post-Release Review: Conduct a retrospective, identify lessons learned, and document
improvements.
By following these notes, you'll be well-equipped to manage software releases effectively and
efficiently!
Here are detailed and precise notes on identifying bottlenecks in DevOps and how to
overcome them:
1. Code Review: Manual code review processes can be a bottleneck, causing delays in the
development cycle.
2. Testing: Inadequate testing or manual testing processes can slow down the delivery
pipeline.
3. Deployment: Manual deployment processes or lack of automation can cause delays and
errors.
4. Monitoring: Inadequate monitoring or lack of real-time monitoring can lead to delayed
issue detection.
5. Communication: Poor communication between teams or stakeholders can cause delays and
misunderstandings.
Overcoming Bottlenecks in DevOps:
1. Automate Code Review: Implement automated code review tools to reduce manual effort
and increase efficiency.
2. Test Automation: Implement automated testing tools to reduce testing time and increase
coverage.
3. Continuous Deployment: Implement continuous deployment practices to automate
deployment processes.
4. Real-time Monitoring: Implement real-time monitoring tools to detect issues quickly and
reduce downtime.
5. Improve Communication: Implement collaboration tools and practices to improve
communication between teams and stakeholders.
Best Practices: