INT 331
FUNDAMENTALS OF DEVOPS
Lecture
#1
Waterfall Methodology
• Sequential Flow:
• Rigid Structure:Each phase has specific deliverables and
milestones that must be completed before the next phase can
begin.
• Limited Flexibility: Changes to requirements or design are
difficult to accommodate once the project is underway, as the
process assumes all requirements are known upfront.
• Risk Management: Risks are addressed during the early stages
of the project, with preventive measures identified and planned.
• Well-Suited for Stable Requirements:It is best suited for
projects where requirements are well understood and unlikely to
change significantly.
Disadvantage of Waterfall Methodology:
• Lack of Flexibility:The waterfall methodology is rigid and lacks
flexibility, making it challenging to make changes in the middle
of the project.
• Inefficient: as each phase must be completed before moving
on to the next one, which can cause delays in the project’s
delivery.
• Client Involvement: The waterfall methodology does not
involve the client until the end of the project, which can lead to
misunderstandings and dissatisfaction.
• Risk of time waste due to transition.
Agile Methodology
• Iterative and Incremental: projects are divided into small iterations
or sprints, typically 1-4 weeks long. Each iteration results in a
potentially usable product feature.
• Customer Collaboration: Agile teams prioritize customer
collaboration and feedback. They work closely with stakeholders to
understand and deliver what the customer truly needs.
• Adaptive to Change: Agile embraces changes in requirements
throughout the project lifecycle.
• Continuous Improvement: Agile promotes continuous improvement
and learning. Teams regularly reflect on their processes and adjust
them to improve efficiency and effectiveness.
• Transparent and Open Communication: Agile fosters transparent
communication within teams and with stakeholders. Information is
shared openly to build trust and alignment.
• Focus on Quality: emphasize sustainable
development. They maintain high standards of work
through continuous attention to technical excellence
and good design.
• Early and Predictable Delivery: Agile provides
early and predictable delivery of products, with
incremental releases that allow for more realistic
planning and improved stakeholder satisfaction.
• Close Collaboration Between Developers and
Business Users: Agile methodologies emphasize
close daily cooperation between developers and
business people.
Disadvantages of Agile
Methodology
• Complexity: The Agile methodology can be complex, requiring
skilled and experienced project team members.
• Lack of Predictability: The Agile methodology lacks
predictability, as the project’s scope, timeline, and budget are
not determined at the beginning of the project.
• Documentation: The Agile methodology requires less
documentation, which can make future maintenance and
updates challenging.
• True agile execution has many more dependencies and
engineering costs.
Why DevOps?
• The goal of DevOps is to increase an
organization’s speed when it comes to
delivering applications and services.
• Many companies have successfully
implemented DevOps to enhance their
user experience including Amazon,
Netflix, etc.
What is DevOps?
• DevOps is a software development
approach that emphasizes collaboration
and communication between
development (Dev) and operations
(Ops) teams.
• It aims to shorten the software
development lifecycle and improve the
quality and reliability of software
releases.
• Build: The stage where the software
code is compiled and packaged into a
deployable unit.
• Test: The stage where the software is
rigorously tested to ensure it functions
as expected and identifies any bugs.
• Release: The stage where the software
is deployed to production for end users.
Feedback loop
• The loop indicates that information and
learnings from the production
environment are fed back into the
earlier stages of the pipeline. This
feedback can be used to improve the
software development process and
future releases.
Benefits of DevOps
• Faster Delivery: DevOps enables organizations to release new
products and updates faster and more frequently, which can
lead to a competitive advantage.
• Improved Collaboration: DevOps promotes collaboration
between development and operations teams, resulting in better
communication, increased efficiency.
• Improved Quality: DevOps emphasizes automated testing and
continuous integration, which helps to catch bugs early in the
development process and improve the overall quality of
software.
• Increased Automation: DevOps enables organizations to
automate many manual processes, freeing up time for more
strategic work and reducing the risk of human error.
• Better Scalability: DevOps enables organizations to quickly
and efficiently scale their infrastructure to meet changing
demands, improving the ability to respond to business needs.
• Increased Customer Satisfaction: DevOps helps
organizations to deliver new features and updates more quickly,
which can result in increased customer satisfaction and loyalty.
• Improved Security: DevOps promotes security best practices,
such as continuous testing and monitoring, which can help to
reduce the risk of security breaches and improve the overall
security of an organization’s systems.
• Better Resource Utilization: DevOps enables organizations to
optimize their use of resources, including hardware, software,
and personnel, which can result in cost savings and improved
efficiency.
Challenges While Adopting
DevOps
• High Initial Investment: Implementing DevOps can be a complex and
costly process, requiring significant investment in technology,
infrastructure.
• Skills Shortage: Finding qualified DevOps professionals can be a
challenge, and organizations may need to invest in training and
development programs to build the necessary skills within their teams.
• Resistance to Change: Some employees may resist the cultural and
organizational changes required for successful DevOps adoption, which
can result in resistance, resistance to collaboration, and reduced
efficiency.
• Lack of Standardization: DevOps is still a relatively new field, and there
is a lack of standardization in terms of methodologies, tools, and
processes. This can make it difficult for organizations to determine the
best approach for their specific needs.
• Increased Complexity: DevOps can increase the
complexity of software delivery, requiring organizations
to manage a larger number of moving parts and
integrate multiple systems and tools.
• Dependency on Technology: DevOps relies heavily on
technology, and organizations may need to invest in a
variety of tools and platforms to support the DevOps
process.
• Need for Continuous Improvement: DevOps requires
ongoing improvement and adaptation, as new
technologies and best practices emerge. Organizations
must be prepared to continuously adapt and evolve
their DevOps practices to remain competitive.
Comparison
DevOps Life Cycle
• DevOps follows positive techniques that
consist of code building, testing,
releasing, deploying, operating,
displaying, and planning. DevOps
lifecycle follows a range of phases such
as non-stop development, non-stop
integration, non-stop testing, non-stop
monitoring, and non-stop feedback.
• Continuous Development
• Continuous Integration
• Continuous Testing
• Continuous Deployment/Continuous
Delivery
• Continuous Monitoring
• Continuous Feedback
• Continuous Operations
1. Continuous Development
• In Continuous Development code is
written in small, continuous bits rather
than all at once, Continuous
Development is important in DevOps
because this improves efficiency every
time a piece of code is created, it is
tested, built, and deployed into
production.
• This phase involves the planning and
coding of the software.
• The vision of the project is decided
during the planning phase. And the
developers begin developing the code
for the application.
• There are no DevOps tools that are
required for planning, but there are
several tools for maintaining the code.
VCS(Git)
2. Continuous Integration
• This stage is the heart of the entire
DevOps lifecycle.
• Continuous Integration can be explained
mainly in 4 stages in DevOps. They are
as follows:
• Getting the SourceCode from SCM
• Building the code
• Code quality review
• Storing the build artifacts
• This is the stage where the code
supporting new functionality is integrated
with the existing code, since there is cont.
development of the software the updated
code needs to be integrated continuously
as well as smoothly with systems to
reflect the changes to the end users.
• The changed code should also ensure
that there is no errors during the runtime
which allows us to test the changes and
checks how it reacts with other changes.
• Jenkins is a popular tool used in this
phase. Whenever there is a change in
the Git repository, then Jenkins fetches
the updated code and prepares a build
of that code, which is an executable file
in the form of war or jar. Then this build
is forwarded to the test server or the
production server.
3. Continuous Testing
• Where the developed software is
continuously tested using automation
testing tools such
as Testsigma, Selenium , Test ng, J
unit etc.
• To ensure there are no flaws in
functionality.
• Selenium does the automation
testing, and TestNG generates the
reports. This entire testing phase can
automate with the help of a Continuous
Integration tool called Jenkins.
• Automation testing saves a lot of time
and effort for executing the tests
instead of doing this manually. Apart
from that, report generation is a big
plus.
• The task of evaluating the test cases
that failed in a test suite gets simpler.
Also, we can schedule the execution of
the test cases at predefined times.
• After testing, the code is continuously
integrated with the existing code.
4. Continuous Deployment/ Continuous Delivery
• Continuous Deployment: is the process
of automatically deploying an
application into the production
environment when it has completed
testing and the build stages.
• Ensures that the code is correctly
deployed on all the servers.
Configuration Management tool
• Puppet
• Chef
• Salt stack
• Ansible
CMT
• The new code is deployed continuously, and
configuration management tools play an essential
role in executing tasks frequently and quickly.
• Containerization tools are also playing an essential
role in the deployment phase. Vagrant and Docker
are popular tools that are used for this
purpose.
• These tools help to produce consistency across
development, staging, testing, and production
environment.
• Containerization tools help to maintain
consistency across the environments where
the application is tested, developed, and
deployed.
• There is no chance of errors or failure in the
production environment as they package and
replicate the same dependencies and
packages used in the testing, development,
and staging environment. It makes the
application easy to run on different
computers.
5. Continuous Monitoring
• To improve the quality of a software by montotoring
its performance.
• There is a participation of operational team who will
monitor the user activities.
• Bugs or improper behaviour of a system.
• Improve the productivity
• Increase reliability
• Reduce IT support cost
Tools
• Spluck
• Elk stack
• Nagios
• New Ralic
• These tools enable complete control in
overseeing the performance of the system,
the production server, and the application.
The operations team can actively engage in
increasing the reliability and productivity of
the applications with the help of these tools.
• “Server not reachable” or “low memory” are
some of the common system errors resolved
in this phase.
• Continuous monitoring helps in sustaining the
availability of services in the application.
• Security issues get resolved and problems are
automatically detected and fixed.
• If any bugs found during this phase, are
reported to the cont. development phase
6. Continuous Feedback
• Once the application is released into the market the end users will use
the application .
• they will give us feedback about the performance of the application .
• any glitches affecting the user experience after getting multiple
feedback from the end users’ the DevOps team will analyze the
feedbacks given by end users .
• they will reach out to the developer team tries to rectify the mistakes
they are performed in that piece of code .
• by this we can reduce the errors or bugs that which we are currently
developing and can produce much more effective results for the end
users .
• Continuous Feedback can increase the performance of the application
and reduce bugs in the code making it smooth for end users to use the
application.
7. Continuous Operations
• These DevOps stages are carried out on
loops continuously untill the desired
product quality is achieved.
• With DevOps, we can make any
software product more efficient and
increase the overall count of interested
customers in your product.