Unit-1
Introduction to S/w Engineering
Table of Content
• What is DevOps?
• DevOps Collaboration Cycle
• Meaning of infinite loop
• Benefits of DevOps
• DevOps Tools
• CI/CD Pipeline
• Benefits of CI/CD
2
Process
DevOps 3
Feedback Loop
<- - - - - - - - - - - - - - - - - - - - -
Development Department Operations Department
4
DevOps DevOps
Development Operations
DevOps is a set of practices and
tools designed to shorten the
life cycle of a software
development process
5
What is DevOps?
• DevOps is a s/w development approach that emphasizes collaboration and
communication between development and operations team.
• Allows a single team to handle the entire application lifecycle from development
to testing, deployment and operations
• Reduce the disconnection between software developers, quality assurance
engineers and system administrators
6
What is DevOps?
7
How DevOps practices
are applied across
different industries?
security 8
Contd.
1. Software Development
•Description: Startups and companies in software development adopt DevOps to build and deploy reliable
applications efficiently.
•Key Benefits:
• Accelerated development and deployment cycles.
• Reduction in risks associated with releasing software.
2. E-Commerce
•Description: E-commerce businesses leverage DevOps for faster setup times and optimized workflows.
•Key Benefits:
• Automated processes streamline operations.
• Enhances workflow efficiency, reducing time-to-market for features.
9
Contd.
3. Healthcare
•Description: The healthcare industry, being heavily regulated, relies on DevOps for addressing data
privacy and security challenges.
•Key Benefits:
• Compliance with strict regulations.
• Improved security and reliability in handling sensitive patient data.
4. Fintech/Banking
•Description: In the highly sensitive and regulated banking sector, DevOps is used to address
security concerns while maintaining agility.
•Key Benefits:
• Enhanced security protocols.
• Ensures compliance with industry regulations.
• Facilitates continuous delivery while minimizing risks.
10
Contd.
5. Social Impact Organizations/Development Sector
•Description: DevOps supports social impact organizations by enabling them to achieve
efficiency and scalability in their operations.
•Key Benefits:
• Accelerates project timelines.
• Ensures reliable deployment of applications in impactful development initiatives.
11
DevOps collaboration cycle:
DevOps cycle
12
Meaning of infinite loop:
illustrates how development and operations teams work together in a never-ending
process to build, deploy, operate, and improve applications.
Continuous Feedback:
Seamless feedback between development and operations at every stage ensures
continuous improvement of software and processes.
Seamless Collaboration:
Reflects the integration of teams, breaking down silos between development and
operations.
Automation and Iteration:
Processes like testing, deployment, and monitoring are automated and repeat in cycles
which reduces manual effort and increases efficiency.
13
Benefits of DevOps:
DevOps benefits
14
DevOps Tools:
• Version Control: Git, GitHub, GitLab
• CI/CD Tools: Jenkins, GitLab CI/CD
• Configuration Management: Ansible, Puppet, Chef
• Containerization: Docker, Kubernetes
• Monitoring: Prometheus, ELK Stack
15
CI/CD (Continuous Integration and Continuous Deployment) pipeline
A process used in software development to automate building, testing and deploying
code.
It streamline development workflows, reduce errors, and deliver software faster and
more reliably.
16
CI: Continuous Integration
Developers regularly merge their code changes into the main branch,
followed by automated testing and running of the project.
•Process: After completing a task, the developer saves changes into the
working project copy. The CI/CD tool (Jenkins, GitLab CI/CD, etc.)
detects these changes and runs the project.
•Error Handling: If issues occur, the developer is notified with a
detailed error description. If no issues are found, a confirmation of a
successful run is provided.
•Benefits: Detects and resolves conflicts or errors at the earliest stage
possible.
17
CD: Continuous Delivery/Deployment
Continuous Delivery involves the regular and automated deployment of
new application versions into a production environment.
•Key Aspect: Ensures that the application is always in a deployable
state. Deployment processes are automated but may include a final
manual approval step.
•Benefit: Enables rapid and reliable delivery of updates to users.
18
Imagine you are developing a food delivery app like
Uber Eats
• Code: A developer adds a feature, like a new "dark mode" for the app.
• Commit: The developer saves (commits) the changes to a shared repository (like
GitHub).
• CI Pipeline:
• Build: The system automatically builds the app with the new feature to check if
it compiles correctly.
• Unit Tests: It tests only the "dark mode" feature to ensure it works as
expected.
• Integration Tests: It ensures the new feature works with existing app features,
19
Contd.
• CD Pipeline:
• Review: The team reviews the feature for quality (optional for Continuous Deployment).
• Staging: The app is deployed to a staging environment where a team or beta users test
"dark mode" as if it's live.
• Production: Once stable, the feature is automatically or manually deployed to the app
that users download from app stores.
Real-Life Benefit: Every small change, like "dark mode," is tested, integrated and delivered
seamlessly to users with minimal downtime or errors.
20
CI/CD Pipeline
CI: Continuous Integration CD: Continuous Delivery/Deployment
• Enabling Continuous Integration and Deployment for Modern software
• CI/CD pipelines enable faster and reliable software delivery processes.
• It is a software development approach to automate the process of integrating code
changes, testing, and deploying applications.
• Automates builds, tests and deployments for seamless collaboration.
• Tools like Jenkins, Docker, Kubernetes streamline pipeline workflows.
21
Tools for CI/CD
• Version Control: Git, GitHub, GitLab for source management.
• Build Tools: Jenkins, CircleCI, TravisCI automate build processes.
• Containerization: Docker simplifies deploying applications using containers.
• Orchestration: Kubernetes manages containerized applications at scale.
• Testing Tools: Selenium, JUnit ensure automated software testing workflows.
22
CI/CD Pipeline Workflow
• Source Control: Code pushed to version control repository.
• Build Stage: Application code compiled and dependencies installed.
• Test Stage: Automated tests run to ensure software quality.
• Release Stage: Deployment package prepared and versioned for delivery.
• Deploy Stage: Application deployed to production or staging environments.
23
• Monitor Stage: Application performance monitored post-deployment.
Benefits of CI/CD:
• Faster Time-to-Market: Accelerates delivery of features and
updates.
• Improved Code Quality: Automated testing reduces bugs and
regression issues.
• Early Error Detection: Integration issues are caught earlier.
• Reliable Deployment: Automation reduces manual errors during
release.
• Enhanced Collaboration: Encourages frequent and smaller code
changes.
24
Challenges in CI/CD Adoption
1.Cultural Resistance: Teams may resist transitioning from traditional
workflows.
2.Toolchain Complexity: Integrating and managing CI/CD tools is
challenging.
3.Skill Gaps: Teams may lack expertise in CI/CD processes and tools.
4.Infrastructure Costs: Setting up and maintaining CI/CD can be expensive.
5.Testing Challenges: Comprehensive test coverage is time-consuming to
build and maintain.
6.Security Concerns: Automated pipelines can expose vulnerabilities if not
secure.
7.Integration Issues: Legacy systems may not integrate well with CI/CD
pipelines.
8.Change Management: Frequent changes can lead to instability if not
managed properly.
9.Monitoring and Feedback: Failures in pipelines can go unnoticed without
robust monitoring.
10.Scalability: Scaling pipelines for large teams and complex apps is difficult. 25
Diagram illustrates a DevOps pipeline integrating tools and
platforms like Git, Jenkins, Docker, and Kubernetes.
1. Developers and Source Code Repository
•Developers: Write and commit source code.
•Git/GitHub: The source code is stored and version-controlled in Git
or GitHub, which acts as the central repository for the codebase.
2. Jenkins for Continuous Integration
•Jenkins: A CI/CD tool that automates building, testing,
and integrating code.
•Process:
• Jenkins pulls code from the GitHub repository.
• Jenkins builds the application and runs tests to ensure
code quality.
• Once successful, Jenkins triggers the next step
(containerization with Docker).
26
3. Docker for Containerization
•Docker: Used to package the application and its
dependencies into a portable container ensuring consistency
across different environments.
•Steps:
• Jenkins uses Docker to create a Docker image of the
application.
• The image is then pushed to Docker Hub, a cloud-
based repository for storing and sharing Docker
images.
4. Continuous Deployment with Kubernetes
•Kubernetes Cluster: After the Docker image is available in
Docker Hub, it is deployed to a Kubernetes cluster.
•Key Features:
• Kubernetes handles orchestration, ensuring that
containers are deployed across multiple nodes.
• It enables auto scaling, meaning the number of
containers increases or decreases based on
demand.
27
Summary of workflow
• Code changes: developers commit code changes to a
version control system (e.g. Git)
• Build Process: Jenkins pulls the latest code and triggers
the build process
• Containerization: Jenkins uses Docker to package the
application into a Docker container.
• Testing: Jenkins runs automated tests within the Docker
container to ensure the application works correctly.
• Deployment: Once tests pass, Jenkins pushes the
Docker image to a container registry (e.g. Docker Hub)
• Orchestration: Kubernetes pulls the Docker image from
the registry and deploys it to the Kubernetes cluster.
• Management: Kubernetes manages the deployed
containers, ensuring they are running, scaled, and
updated as needed.
28
Summary of workflow
• Source Code Management: Developers push code
to GitHub.
• Continuous Integration: Jenkins builds and tests
the code.
• Containerization: Docker packages the application
into images and uploads them to Docker Hub.
• Continuous Deployment: Kubernetes manages the
deployment and scaling of the application in
production.
This pipeline demonstrates a modern DevOps process
that enables automation, scalability, and efficiency
in deploying applications.
29
CI/CD Pipeline:
Continuous Integration (CI):
•Automates merging code changes into a shared repository.
•Runs automated tests to validate changes.
•Detects integration issues early.
Continuous Delivery (CD):
•Prepares code changes for release to production.
•Ensures the application is always in a deployable state.
Continuous Deployment:
•ensures that tested, stable changes are delivered to users
quickly and reliably.
CI/CD Pipeline Workflow
•Minimizes human intervention in deployment.
30
CI/CD Pipeline Workflow