Introduction (10-15 Minutes)
Introduction (10-15 Minutes)
Introduction:
Hello everyone, my name is Rajat zade, and I am thrilled to be your DevOps
trainer for this course. I have five years of hands-on experience as a DevOps
Engineer at confidential organisation ., Additionally, I have over seven years of
experience as a trainer,
Throughout this journey, I’ve gained in-depth expertise in various DevOps
technologies, including CI/CD pipelines, containerization, cloud platforms, and
infrastructure automation. I am passionate about sharing knowledge and
helping others excel in their DevOps careers.
Let’s work together to make this training a valuable and enriching experience
for all of us!
operations.
○ Automation: Automating repetitive tasks to save time and reduce
errors.
○ Continuous Improvement: Regularly refining processes to
3. DevOps Lifecycle
● Plan:
Teams use tools like Jira or Trello to define requirements and plan
tasks.
● Develop:
Developers write and test code using IDEs (Integrated Development
Environment) and version control systems like Git.
● Build:
Tools like Jenkins compile the code and create executable artifacts.
Using maven ,Gradle,TravisCl,CircleCI,Jenkins
● Test:
Automated testing using tools like sonarqube,Selenium or JUnit
ensures code quality.
● Release:
Release management tools ensure code is ready for deployment.
● Deploy:
Deployment is automated using tools like Kubernetes or AWS
CodeDeploy.
● Operate:
Tools like Ansible and Chef help manage the infrastructure in
production.
● Monitor:
●
Monitoring tools like Prometheus and Grafana ensure the health and
performance of systems.
Types of Software
. System Software:
Includes operating systems (e.g., Windows, Linux), database
management systems, and utility software that manage hardware and
application software.
. Application Software:
Tools and programs used for end-user tasks like word processing, web
browsing, and gaming.
. Middleware:
Connects different software applications, enabling communication and
data management.
Types of IT Companies
1. Product-Based Companies
● Definition: These companies develop and sell their own software
products or platforms.
● Examples: Microsoft, Google, Adobe, Oracle.
● Characteristics:
○ Focus on innovation and scalability.
○ Revenue primarily through licensing, subscriptions, or sales.
○ Products are used by multiple customers across industries.
2. Service-Based Companies
● Definition: These companies provide IT services such as consulting,
software development, and system integration to other businesses.
● Examples: TCS, Infosys, Wipro, Accenture.
● Characteristics:
○ Offer custom solutions tailored to clients' needs.
○ Revenue through projects and contracts.
○ Operate across multiple industries.
3. Startup Companies
● Definition: Emerging businesses that focus on innovative solutions,
often in niche markets or emerging technologies.
● Examples: Airbnb (early years), Zoom, and many local SaaS or AI
startups.
● Characteristics:
○ Agile and fast-moving.
○ Aim for rapid growth and disruption in their domain.
○ Often rely on venture capital funding.
8. Cybersecurity Companies
● Definition: Focus on providing solutions to protect digital assets,
networks, and data from cyber threats.
● Examples: Palo Alto Networks, McAfee, Symantec.
● Characteristics:
○ Offer tools like firewalls, antivirus, and encryption.
○ Provide threat detection and incident response services.
○ Focus heavily on compliance and regulatory standards.
advertisements.
10. Gaming and Multimedia Companies
● Definition: Create games, entertainment software, and multimedia
applications.
● Examples: EA Games, Unity, Netflix (IT division).
● Characteristics:
○ Blend creativity with technology.
○ Often focus on user engagement and experience.
○ Use cutting-edge graphics and real-time data processing.
1. What is SDLC?
SDLC is a structured framework used to design, develop, and test high-quality
software. It consists of several phases that guide software teams in managing
projects efficiently.
Waterfall Model
The Waterfall Model is a linear and sequential approach to software
development. Each phase must be completed before moving to the next.
Key Phases of the Waterfall Model:
. Requirement Analysis: Detailed documentation of customer needs.
. System Design: Designing architecture and components.
. Implementation: Coding based on design specifications.
. Testing: Verifying that the system works as expected.
. Deployment: Delivering the final product to the customer.
. Maintenance: Providing updates and fixes.
Advantages of the Waterfall Model:
● Clear structure and easy to understand.
● Works well for projects with fixed requirements.
● Easy to manage due to defined stages.
Disadvantages of the Waterfall Model:
● Inflexible to changes once the process begins.
● Testing happens late in the cycle, leading to delayed bug detection.
● Not suitable for complex or long-term projects.
Agile Model
The Agile Model is an iterative and flexible approach focusing on collaboration
and customer feedback. It delivers software in small, functional increments.
Key Principles of Agile:
. Iterative Development: Work divided into short iterations or sprints.
. Customer Collaboration: Continuous interaction with the customer.
. Flexibility: Adapts to changes even late in the development cycle.
. Team Collaboration: Cross-functional teams work closely together.
Key Practices in Agile:
● Scrum: Uses sprints and daily stand-ups.
● Kanban: Visualizes workflows using boards.
● Extreme Programming (XP): Emphasizes frequent releases and
feedback.
Advantages of the Agile Model:
● Highly flexible to changing requirements.
● Continuous delivery ensures early feedback.
● Promotes collaboration between developers and stakeholders.
Disadvantages of the Agile Model:
● Requires skilled and collaborative teams.
● Less predictability in terms of cost and time for large projects.
● Difficult to measure progress due to its dynamic nature.
⸻—
Introduction to APIs (Application Programming Interfaces)
An API (Application Programming Interface) is a set of rules and protocols
that allows one software application to interact with another. It defines the
methods and data formats that applications use to communicate with each
other. APIs are used to enable the functionality of different systems, services,
or platforms to work together.
Types of APIs
. Open APIs (Public APIs)
○ Open to external developers and available for public use.
○ Example: APIs provided by social media platforms like Twitter,
merchant’s website.
○ Use case: A retailer uses a partner API to accept payments
user profile).
API Authentication and Security
To ensure that only authorized users can access sensitive data and perform
certain operations, APIs often require authentication and security mechanisms:
. API Keys: A unique identifier passed with each API request to
authenticate the caller.
. OAuth: A more secure and complex protocol for authorizing
applications to access data on behalf of a user.
. JWT (JSON Web Tokens): Used for securely transmitting information
between client and server.
Conclusion:
APIs software ecosystem mein ek mahatvapurn bhumika nibhate hain, jo
systems ke beech communication ko enable karte hain, custom development ki
zarurat ko kam karte hain, aur external services ke sath integration ko asaan
banate hain. APIs ke types, methods, aur use cases ko samajhna un developers
ke liye atyant zaruri hai jo modern applications par kaam karte hain, khaaskar
microservices, cloud environments, aur DevOps practices mein.
Programming Interfaces).
Technologies Used in Frontend:
● HTML (HyperText Markup Language): Structures the content of the
web page.
● CSS (Cascading Style Sheets): Styles the page, including colors,
fonts, and layout.
● JavaScript: Adds interactivity, such as form validation, animations, or
dynamic content updates.
● Frontend Frameworks/Libraries: Tools like React, Vue.js, Angular,
and Svelte help build complex user interfaces efficiently.
Example of Frontend in Action:
When you visit a website like Facebook, everything you see on the page — your
feed, the "Like" buttons, images, and text — is part of the frontend.
⸺
Backend (Server-Side)
The backend refers to the part of the application that runs on the server-side.
It is responsible for managing the data, ensuring the logic of the application
works, and handling requests from the frontend.
Responsibilities of the Backend:
. Data Management: Storing, retrieving, and managing the data (like
user information, posts, or transactions) in databases.
. Business Logic: Processing the application’s functionality, like
authentication, calculations, or operations based on requests from the
frontend.
. API Handling: Responding to frontend requests via APIs (sending
data, updating records, etc.).
. Security: Ensuring that the application is secure by managing
authentication (user login), authorization (permissions), and data
encryption.
Technologies Used in Backend:
● Server-Side Languages: Languages like Node.js (JavaScript),
Python, Ruby, Java, PHP, C#, and Go are commonly used for
backend development.
● Databases: Relational databases like MySQL, PostgreSQL, and SQL
Server, or NoSQL databases like MongoDB, Cassandra, and Redis.
● Frameworks: Tools like Express.js, Django, Spring Boot, Ruby on
Rails, and Flask make it easier to build backend applications.
● Web Servers: Software like Apache, Nginx, or cloud-based services
like AWS or Azure host the backend services.
Example of Backend in Action:
In the Facebook example, the backend handles tasks like storing your posts in
the database, managing login/authentication, and sending the right content to
your feed based on the server-side logic.
—
Stages of Application Development: Roles of Developer, Tester,
Database, and DevOps Teams
Application development involves multiple stages where different teams
collaborate to ensure the smooth creation, testing, deployment, and
maintenance of the software. Here's an overview of the key stages in the
development lifecycle and the roles of the Developer, Tester, Database, and
DevOps teams at each stage.
based on requirements.
● Database:
○ Analyze the data requirements and suggest suitable database
design strategies.
○ Help define data models and schemas for the application.
● DevOps:
○ Ensure infrastructure requirements are considered for deployment
and scaling.
○ Plan for the environment setup, including servers, CI/CD pipelines,
2. Design Phase
● Developer:
○ Design the overall application architecture, code structure, and
non-functional.
○ Identify potential risks in the application and address them in test
planning.
● Database:
○ Design the database schema, tables, relationships, and stored
procedures.
○ Ensure database normalization and optimization.
● DevOps:
○ Design the infrastructure layout and automation workflows.
○ Plan deployment processes for various environments (e.g., dev,
test, production).
○ Prepare version control strategies and repository setups.
3. Development Phase
● Developer:
○ Write the code for both the frontend and backend of the
services.
● Tester:
○ Begin writing unit tests to validate individual code components.
○ Prepare test environments and tools for integration and system
testing.
● Database:
○ Implement database schema changes, manage migrations, and
4. Testing Phase
● Developer:
○ Debug and fix issues identified during testing.
○ Collaborate with testers to ensure the application meets functional
optimization.
○ Assist in validating transactions, indexes, and stored procedures.
● DevOps:
○ Ensure automated tests are running as part of the CI pipeline.
○ Monitor build and test environments for any issues.
○ Assist in troubleshooting deployment issues in the test
○
environment.
5. Deployment Phase
● Developer:
○ Ensure that the code is production-ready by conducting final
environment.
○ Ensure database performance and integrity during the deployment.
● DevOps:
○ Deploy the application to production using CI/CD pipelines.
○ Automate the deployment process to ensure consistency across
improvements or fixes.
○ Collaborate with testers and DevOps to ensure smooth post-
deployment monitoring.
● Tester:
○ Conduct regression testing after bug fixes or new features are
introduced.
○ Ensure the application continues to meet quality standards.
● Database:
○ Monitor database performance, handle queries, optimize data
uptime.
○ Scale the infrastructure based on usage demands (auto-scaling).
○ Implement logging, monitoring, and alerting systems to track
technical debt.
○ Respond to feedback from users and stakeholders, making
updates as needed.
● Tester:
○ Update test cases based on new features and changes.
○ Improve testing processes based on feedback and identified
issues.
● Database:
○ Refine database performance and optimize queries and structures
based on feedback.
○ Implement backup and disaster recovery plans as the application
grows.
● DevOps:
○ Continuously improve infrastructure automation, scaling, and
security practices.
○ Gather feedback on deployment processes and make
. Distributed System:
○ Every developer has a full copy of the repository, including the
complete history.
○ No reliance on a central server for most operations.
fixes.
○ Facilitates easy merging of changes into the main codebase.
. Collaboration:
○ Enables multiple developers to work on the same project
○
simultaneously.
○ Provides tools to resolve conflicts when changes overlap.
. Staging Area:
○ Changes can be reviewed before committing to the repository.
○ Encourages better commit hygiene.
. Lightweight:
○ Efficient in terms of performance and storage.
○ Handles large projects with ease.
. Subversion (SVN):
○ Centralized system, popular for older projects.
○ Good for managing large binary files.
. Mercurial:
○ Distributed system similar to Git.
○ Known for its simplicity and performance.
. Perforce:
○ Centralized system, often used in enterprise environments.
○ Handles large codebases and binary files effectively.
. Azure DevOps:
○ Integrated with CI/CD pipelines and project management tools.
○ Supports both Git and TFVC (Team Foundation Version Control).
. Tracked:
○ Files that Git is aware of and is monitoring for changes.
○ These files can be in one of the following states:
◆ Unmodified: The file hasn’t been changed since the last
commit.
◆ Modified: The file has been changed but not yet staged.
◆ Staged: Changes have been added to the staging area and are
ready to be committed.
. Git Repository:
○ The .git directory inside your project.
○ Stores all the committed changes and history.
○ Tracks the state of your project over time.
. Modified → Staged:
○ Use git add <file> to stage modified files for commit.
. Staged → Committed:
○ Use git commit -m "commit message" to save staged changes to
the repository.
. Committed → Pushed:
○ Use git push to send committed changes to a remote repository
like GitHub.
. Committed → Modified:
○ Edit a file that has already been committed to make it "modified."
Git Workflow
. Clone or Initialize:
○ Clone an existing repository using git clone <repository-url>.
○ Or initialize a new repository using git init.
. Edit Files:
○ Work on your project files in the working directory.
. Stage Changes:
○ Use git add <file> or git add . to stage changes.
. Commit Changes:
○ Use git commit -m "commit message" to save your changes to the
repository.
. Push to Remote:
○ Push committed changes to a remote repository using git push.
. Pull Updates:
○ Pull updates from the remote repository using git pull to sync your
local repository.
. Branching:
○ Create a new branch for feature development using git branch
<branch-name>.
○ Switch branches using git checkout <branch-name> or git switch
<branch-name>.
. Merge Changes:
○ Merge feature branches into the main branch using git merge.
. Resolve Conflicts:
○ Handle merge conflicts if changes from different branches overlap.
States Visualization
Benefits of Git
. Efficient Collaboration:
○ Multiple team members can work on the same project without
environments.
https://git-scm.com/download/win
○ The download should start automatically. If not, you can click the
git --version
○
mkdir git-demo
cd git-demo
git init
Effect: A .git directory is created, and the folder is now a Git repository.
git log
git log
Effect: This will create a new commit that undoes the changes made in
abc5678
git status
Effect: This restores the file to its state as it was in the last commit, discarding
your recent changes.
git branch
Git Diff