What Is DevOps
What Is DevOps
family
What
is
Devops ?
DEFINITION
What is DEV ?
DEFINITION
Are just tools we use daily to easy our life and solve issues, for
example we use facebook, twitter, whatsapp to communicate
or banking applications to monitor our bank accounts, or
doordash to order food when we are hungry, or gmail,
yahoo,msn, aol, outlook to check and monitor our email.
DEFINITION
Has
NOTHING
to do with
DEFINITION
dev
elop
DEFINITION
In other words
Write application
DEFINITION
In other words
DO
DEFINITION
Developers world
DEFINITION
What is OPS
DEFINITION
What is Operation
In simple words operation in this context stand for transforming a code coming from
developers into a working application
DEFINITION
pl i c a t i on
e ap
Writ
c od e mor
e
A r e
he
on t
of
Side
t he
to
i rt h
G iv e b
Now that you have an idea
of what is
Tired of the big grammar ?
In simple worlds DevOps is a tradition or culture that help break the gap between
Development and operations teams to improve and better control the software
Pro
vid
e to
Pr ol s
ov for
Development
ide
oot
team (DEV)
ls
f or
r
ls fo
v i de too
Provide tools for Pro
Security and
Infosec
team
Network
Team (IT)
Quality
Engineers
Database
Administrators
CyberSecurity
Developers Engineers
IT Helpdesk
Network
Engineers
DEVOPS ENGINEERS COLLEAGUES Security
Engineers
Quality
Developers Engineers
DEVOPS ENGINEERS
Devops process
Devops process
Continue Continuous
Continue Continuous
Planning Integration
Development code
(CI) Inspection
Continuous
Testing
Continuous Continuous Continuous
Security
Delivery (CD) Deployment
Continue
Monitoring and
Continuous Continuous Logging
Feedback Improvement
Devops process
Continue
Planning
The process of continuously defining goals, tasks, and
requirements for the project, involving regular
discussions to ensure everyone is aligned.
Continue
Development
The practice of constantly writing, testing, and building
code in small increments, so features are developed
quickly and efficiently.
Continuous
Integration
(CI)
Frequently merging all code changes into a shared
repository, followed by automated testing to ensure new
code works well with existing code.
Continuous
code
Inspection
Reviewing code regularly, either manually or through
automated tools, to identify issues like bugs, security
vulnerabilities, and code quality concerns.
Continuous
Testing
Devops process
Continuous
Deployment
Automatically deploying code to the live production
environment after all tests pass, making the latest
updates instantly available to users.
Continuous
Delivery (CD)
Automatically deploying code to the live production
environment after all tests pass, making the latest
updates instantly available to users.
Continuous
Security
Devops process
Continuous
Feedback
Continuous
Improvement
Continuous
Monitoring and
Logging
Continuous
Version Integration and Configuration
Control Continuous Management Containerization
Systems and Orchestration
Deployment
(CI/CD)
Artifact Collaboration
Infrastructure Monitoring and
Repository Communication
as Code (IaC) and Logging Management
Version
Control
Systems
Devops Tooling
Continuous
Integration and
Continuous
Deployment
(CI/CD)
Devops Tooling
Configuration
Management
Devops Tooling
Containerization
and Orchestration
Devops Tooling
Infrastructure
as Code (IaC)
Devops Tooling
Monitoring
and Logging
Devops Tooling
Artifact
Repository
Management
Devops Tooling
Collaboration
and
Communication
Devops Tooling
Source Code
Analysis (Static
Code Analysis)
Devops Tooling
Security and
Vulnerability
Scanning
Devops Tooling
Testing
Devops Tooling
Backup and
Disaster
Recovery
Metric for Devops
Success
Deployment/
release How often
Frequency deployments/release
happen.
Mean Time to
Recovery
(MTTR) Average time to recover from
failures.
Change Failure
Rate Percentage of changes
causing failures.
Environment classification
Dev
environment
These are
LOWER
environments
QA
environment
Staging/pre-
production
Environment
(PRE-PROD)
This is an
Production UPPER
Environment
(PROD)
environment
Environment input Output
Application ready
Staging/pre- for end user
production Tested application
Environment
(PREPROD)
Code application
Tested application
Application ready
Fully operational
for end user
Application
Environment flow
Dev
QA
environment
environment
Staging/pre-
production
Environment
(PREPROD)
Production
Environment
(PROD)
Environment flow
QA
environment
Purpose: The QA (Quality Assurance) environment is a dedicated
testing space where QA engineers or automated tests rigorously validate
the code for functionality, performance, and security.
Staging/pre-
production
Environment
Purpose: Pre-production is an environment that closely mirrors the
(PREPROD)
production environment but does not impact real users. It’s intended to
serve as a final verification point before production.
Production
Environment
(PROD) Purpose: The production environment is the live environment accessible
by end-users. It’s where the application is fully operational and expected
to be stable.
Production
Staging/pre-
Environment
production
(PROD)
Environment
(PREPROD)
● Acts as a final testing ground before ● The live environment where the application is
releasing new code to end-users. fully available to end-users.
● Hosts actual customer data and handles live
● Designed to simulate the production Purpose traffic, so it needs to be stable, secure, and
environment as closely as possible, providing
a space to conduct "real-world" tests without highly performant.
affecting live users. ● All updates in production are accessible to
● Used for staging, testing, and validating code end-users, so changes here are closely
with production-like data and configurations monitored.
to ensure compatibility, performance, and
stability.
Preprod vs Prod
Production
Staging/pre-
Environment
production
(PROD)
Environment
(PREPROD)
Production
Staging/pre-
Environment
production
(PROD)
Environment
(PREPROD)
Pre-production (PREPROD):
Staging/pre-
production Production
Environment Environment
(PREPROD) (PROD)
Pre-production (PREPROD):
Staging/pre-
production Production
Environment Environment
(PREPROD) (PROD)
Pre-production (PREPROD):
Staging/pre-
production Production
Environment Environment
(PREPROD) (PROD)
Pre-production (PREPROD):
Production
Staging/pre- Environment
production (PROD)
Environment
(PREPROD)
Environment classification
Dev
environment
These are
LOWER
environments
QA
environment
Staging/pre-
production
Environment
(PREPROD) In DevOps, the production environment (often referred to
simply as "production" or "prod") is the live environment where
This is an the application, service, or system is fully operational and
accessible by end-users. It is the final stage in the
Production UPPER development pipeline, following stages like development,
testing, and staging, and represents the "real-world"
Environment
(PROD)
environment environment where the application is expected to perform
reliably.
Environment classification
Dev
www.development.devopseasylearning.com
environment
Only available to
software factory
QA
www.testing.devopseasylearning.com employees
environment
Staging/pre-
production www.pre-production.devopseasylearning.com
Environment
(PREPROD)
Available to
Production
Environment
www.devopseasylearning.com anyone
(PROD)
Environment software life cycle
Staging/pre-
Staging/pre-
v1.0.0
Staging/pre-
v2.0.0 production
v4.0.0
production production
Environment Environment Environment
(PREPROD) (PREPROD) (PREPROD)
Production Production
v1.0.0
Production v3.0.0
Environment v1.0 Environment Environment
(PROD) (PROD) (PROD)
Environment software life cycle
Staging/pre-
Staging/pre-
v4.0.0
Staging/pre-
v5.0.0 production
v6.0.0
production production
Environment Environment Environment
(PREPROD) (PREPROD) (PREPROD)
Production Production
v4.0.0
Production v5.0.0
Environment v3.0 Environment Environment
(PROD) (PROD) (PROD)
Environment owners
Dev Developers
environment
QA
Quality assurance
environment
Staging/pre-
production
DevOps
Environment
(PREPROD)
Production DevOps
Environment
(PROD)
Environment provider
Staging/pre-
production
DevOps provide Processes & Tooling
Environment
(PREPROD)
Production
Environment DevOps provide Processes & Tooling
(PROD)
Deployment vs Release
Deployment Release
Release and Deployment are two related but distinct concepts in software
development and operations, each with a different purpose and process.
Deployment vs Release
Deployment
Deployment
Release
Release
Deployment Release
Deployment Release
Dev
www.development.devopseasylearning.com
environment
QA
www.testing.devopseasylearning.com
environment
Staging/pre-
production
www.pre-production.devopseasylearning.com
environment
Production www.devopseasylearning.com
environment
Computer vs Server
Server
Computer
Computer vs Server
Computer
Server
Role and
Functionality Computer: Generally intended for personal or business use to perform
tasks like web browsing, word processing, gaming, or media consumption.
Hardware and
Performance Computer: Has hardware geared toward personal or office tasks. It may
have moderate processing power and storage, usually designed for
individual tasks.
Operating System
Computer: Runs operating systems designed for personal use, like
Windows 10/11, macOS, or Linux distributions like Ubuntu Desktop.
Network
Connectivity and
Access Computer: Primarily accessed by a single user, usually physically or over
the internet for specific purposes like remote work.
Data Center
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
Important DevOps
Concepts
What to know from
day 1 at work as new
DevOps Engineer
Version Control
(e.g., Git)
Key Skills:
Commit, push,
pull, merge,
branching.
What to know from
day 1 at work as new
DevOps Engineer
Continuous Integration
and Continuous
Deployment (CI/CD)
Infrastructure as Code
(IaC)
Containers and
Containerization
Orchestration
Automation
Networking Basics
Key Concepts: IP
addresses, DNS,
HTTP/HTTPS, firewalls,
VPN.
What to know from
day 1 at work as new
DevOps Engineer
Cloud Platforms
Security Fundamentals
Configuration
Management
CI/CD Pipeline
Components
Fundamentals of Load
Balancing and Scaling
Key Concepts: IP
addresses, DNS, ports,
HTTP methods, load
balancers.
What to know from
day 1 at work as new
DevOps Engineer
Observability
Collaboration and
Communication
Blameless
Postmortems and
Incident Management
Testing/QA
Environment
Development
Staging
Environment
DevOps Environment
Production
Environment
Here are the key environments that typically require DevOps
practices to ensure smooth operations, consistency, and efficiency
throughout the software development lifecycle
1. Development Environment
2. Testing/QA Environment
3. Staging Environment
4. Production Environment
Production
Environment
Development
Environment
Testing/QA
Environment Staging
Environment
What does DevOps
Engineer Deploy ?
Infrastructure
Application
Version Control -
Code Repositories - Database Applications -
GitHub, GitLab, Bitbucket
Artifactory, Nexus MySQL, PostgreSQL,
MongoDB
Automation Tools -
Ansible Tower, Rundeck
Infrastructure tools
String
Hello
class
devops
Important concept to know: Basic Data Types and
Structures
Integer
20
31
15
0
Important concept to know: Basic Data Types and
Structures
Boolean
True
False
Yes
no
Important concept to know: Basic Data Types and
Structures
Array
[1, 2, 3, 4, 5]
["apple", "banana", "cherry"]
Important concept to know: Basic Data Types and
Structures
List
Map
Key
Value
Secret
API_KEY="ABCD1234XYZ"
Important concept to know: Security and
Authentication
Password
"MyS3cureP@ssw0rd"
Important concept to know: Security and
Authentication
Token
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
Important concept to know: Security and
Authentication
Encryption
Key Pair Value: A pair where one element (key) identifies the
other (value).
{"region": "us-west-1"}
Important concept to know: Metadata and
Organization
Tag
Variable
username = "admin"
Important concept to know: Compute, network,
storage
virtual-
machine(server) What is it for?
here is the Compute provides the processing power needed to run
applications, handle user requests, and perform backend
environment the operations.
application live
Why is it important for DevOps?
DevOps engineers need to:
● Configure and manage secure network environments (e.g., VPCs, security groups).
● Implement high availability and fault tolerance using load balancers.
● Troubleshoot and monitor network performance to avoid bottlenecks or downtime.
Important concept to know: Compute, network,
storage
What is it?
Storage Storage refers to the systems and devices used to save data,
including block storage (e.g., AWS EBS), object storage (e.g.,
S3), and file systems (e.g., NFS).
Code
Devops
Get the code from DEV
team
Docker Devops take the docker
image and turn it into an
application
image
Devops use automation
tools to transform DEV
code into a docker
image
Application
Movie birth
Shooting a movie
Movie on TV
Movie DVD
Application
Code Docker
image
Application birth
Code
Devops
Get the code from DEV
team
Code
Devops
Get the code from DEV
team
Code
Devops
Get the code from DEV
team
Code
Devops
Get the code from DEV
team
Code
Devops
Get the code from DEV
team
Code
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Docker
image
Devops
Get the code from DEV
team
Application
An application is essentially a
program or set of programs
designed to perform specific
tasks, delivering particular
functionality to end users or
other systems.
An Application is a Set of Code and Configurations to
Achieve Specific Functionalities
Application birth
Application
Application
Application
Application
Application
Application
Application
Application
Application
Once deployed, an
application’s health and
performance need to be
continuously monitored to
ensure reliability, track usage
metrics, detect anomalies, and
An Application Needs to be Monitored and Managed in troubleshoot issues in real
time.
Production
Application birth
Application
Application
Application
Application
Application
Applications go through a
lifecycle, starting from
development, moving through
testing and staging, and finally
being deployed to production.
This lifecycle may repeat for
An Application Has a Lifecycle from Development to every new version or update.
Deployment
Application birth
Application
Application
Proper documentation of an
application’s functionality, setup
instructions, API references,
and troubleshooting guides is
crucial to support developers,
operators, and end-users,
especially for complex
An Application Requires Documentation applications.
Application birth
Application
Application
Code
Devops
Get the code from DEV
team
Docker Devops take the docker
image and turn it into an
application
image
Devops use automation
tools to transform DEV
code to a docker image
Application
Application birth
Docke
Code rfile
Dock
er
image
Doc
Application ker
con DockerHub
tain
er
Application birth
Docke
Devops get code from dev team
Dock
er
image
The docker container use the application
code to create the application Devops use docker image to create a docker
container
con DockerHub
tain
er
Movie birth
Shooting a movie
Movie on TV
Movie DVD
Application
Code Docker
image
Movie birth
Code Dockerfile
Docker image
DockerHub
Docke
Dockerfile: The DevOps team creates a Dockerfile, which contains
instructions on how to package the code and dependencies into a
rfile Docker image. The Dockerfile encapsulates all necessary steps to
build the environment.
Application birth
Dock
er Docker Image: Using the Dockerfile, a Docker image is built. This
image is a snapshot of the application environment, containing all
image the code, libraries, and dependencies required to run the
application.
Application birth
e rH
accessible for future use and deployment on different
environments.
u b
Application birth
ker
container, which is a runnable instance of the image. The container
runs the application by isolating it in a consistent environment.
con
tain
er
Application birth
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
Dockerfile
DockerHub
DockerHub
DockerHub
DockerHub
DockerHub
DockerHub
DockerHub
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
Application
lives in container
Docker
Virtual machine
container (VM)aka server
lives in
Virtual machine
(VM)aka server Data-Center
lives in
Important to know
before we move on
Datacenter
Virtual
Machine(VM) aka
Server
Docker Container
Application
Important to know
before we move on
Docker
Dockerfile
Helps create images
Docker
images Docker container
Helps create
Docker container
Is an environment that Application
start and run the
application and also
make it available for the
end user on the browser
Library, Binary,
Dependency, artifact
Library Dependency
Artifact
Binary
Library, Binary,
Dependency, artifact
Types:
Library Dependency
Binary Artifact
Questions: Where does developers store code ?
Imagine you’re writing a book, but you’re not working on it alone. You
have a team of writers, editors, and designers all making changes to
the manuscript. Now, imagine the chaos if everyone just edited a single
copy of the book on their own computer without any way to track
changes, work on separate sections, or see what others were doing.
In software development, writing code is a lot like writing that book. Developers
(the writers) need a system to store and manage all the code they’re writing so
they can collaborate, make changes safely, and keep track of the history of
every change. T
Questions: Where does developers store code ?
In the example of the book, imagine you have a central library where
all versions of the manuscript are stored. This library allows writers to
check out a copy, make changes, and check it back in.
In coding, this central library is a Version Control System (VCS) like GitHub, GitLab, or Bitbucket.
It’s an online place where all the code (the manuscript) is stored and where developers can safely
collaborate and track changes.
Questions: Where does developers store code ?
In the book example, every time a writer checks out a copy, makes
edits, and returns it, the library keeps a record of who made which
changes. This way, if any mistakes are made, you can go back to an
earlier version.
Similarly, in a VCS, every change to the code is recorded as a “commit” (like a saved snapshot). This
means you can look back through the history of changes, see who made what change, and even
revert to an earlier version if something goes wrong.
Questions: Where does developers store code ?
Let’s say you have different writers working on different chapters of the
book at the same time. Instead of editing the main manuscript directly,
they work on their own copies of their specific chapters and merge
them into the main book when they’re done.
In coding, developers use branches to work on different parts of the code independently. They can
try out new features or make changes without affecting the main version. When they’re done and
everything looks good, they can “merge” their branch back into the main code.
Questions: Where does developers store code ?
Before any major edits are added to the final manuscript, an editor
reviews them to make sure they fit with the overall story. Similarly,
before code is added to the main version, other developers review it to
check for errors or improvements.
In VCS systems like GitHub, developers create something called a pull request to ask for their
changes to be reviewed. Once the changes are approved, they’re added to the main code.
Questions: Where does developers store code ?
In our book example, the central library could be online, so any writer
can access the manuscript from anywhere in the world.
In coding, VCS platforms like GitHub are online, so developers can access the code from anywhere.
They “clone” (make a copy of) the code to work on their own computer, then “push” their changes
back to the online repository when they’re done.
Example: Building a Simple To-Do List App Together
Imagine you and a friend are building a to-do list app together. You both want to be able to
add, delete, and organize tasks, and each of you will work on different parts of the app.
Here’s how you’d use a Version Control System like GitHub:
● You set up a GitHub repository (like an online folder) for your app. This is where the
main version of the code lives.
● Every time you make progress on your feature, you commit (save) your changes with a
message describing what you did, like “Added feature to add tasks to the to-do list.”
Example: Building a Simple To-Do List App Together
Imagine you and a friend are building a to-do list app together. You both want to be able to
add, delete, and organize tasks, and each of you will work on different parts of the app.
Here’s how you’d use a Version Control System like GitHub:
● When you’re both done with your features, you each create a pull request on
GitHub. This allows you to review each other’s work, make sure everything works
correctly, and then merge the changes into the main code.
● Now, the main code on GitHub has the features for both adding and deleting tasks. You both
“pull” (download) this latest version to your computers, and now you each have the updated
app.
Using a Version Control System like GitHub makes it easy to collaborate, keep track of changes, and
build your app without accidentally overwriting each other’s work. If something goes wrong, you can
always go back to an earlier version of the code and fix it.
Questions
APIs (Application
Programming
Interfaces)
Database
Question: What is structure of an application ?
Complex application
Middleware
Services
Authentication and Cache
Authorization
Question: What is structure of an application ?
APIs (Application
Programming The “Messenger”
Interfaces)
APIs ensure that data flows smoothly and securely between parts of the
application.
Question: What is structure of an application ?
● This is like the locks on your doors or a security system Authentication and Authorization: The
in the house, controlling who can enter and what they security system, controlling who can access
and modify data.
can access.
A monolithic application is built as one large, unified piece. All the components (like the
user interface, backend, database, and business logic) are tightly connected and
operate as a single unit.
Monolithic Application
Questions
Microservices
Application
Microservice
Each person focuses on their own job and works independently, but they work together
to make the restaurant run smoothly. If the cashier has a problem, the chef can still
keep making pizzas, and the delivery driver can still deliver orders.
Microservice
What is a Microservice?
Microservices
Application A microservice is like one of these specialists. Instead of building an app where one
big system does everything, we split the app into smaller pieces, and each piece (or
"microservice") has a specific job.
Imagine an online shopping app. Using microservices, the app would be split into smaller
pieces, each with one job:
● The Cart Service sends your cart info to the Order Service.
● The Order Service checks with the Payment Service to process payment.
● The Notification Service sends you a confirmation email.
Each microservice does just one job, and if one has an issue, it doesn’t stop the others from
working.
1. Independent Updates: You can change or update one microservice without affecting the
others.
2. Scalability: If the Cart Service gets busy, you can add more resources to it without
changing the rest of the app.
3. Reliability: If one microservice goes down (like Notifications), the rest of the app still works.
Now that you know a bit about DevOps and Application
etc ..
Let me take you to the next step
Questions
Stateless Stateful
Stateless
Don't store user session data on the server, so each request is treated
independently. Stateless applications are good for dynamic workloads and
changing business requirements. They can easily scale horizontally and are
simpler to develop and maintain. However, they often require frequent database
queries, which can create performance bottlenecks.
Questions
Stateful
Stateful applications are web applications that store data related to user
sessions on the server side
Save client session data on the server, allowing for faster processing and
improved performance. Stateful applications are good for predictable
workloads and consistent user experiences. However, they can be more
difficult to scale than stateless applications.
Questions
Stateless Stateful
Stateless Stateful
Imagine you’re using a computer or a phone to play a game online or browse a website. The
client side and the server side work together like a team to make everything happen.
Client-side vs Server-side
The client side is everything you see and do on your device. It’s what makes the game or website
Client Side look nice and lets you interact with it.
When you open a game or website, all the colors, images, text, and buttons you see are part of the
client side.
If you click a button, type in a text box, or swipe your screen, the client side handles that. It’s like the
“face” of the program that talks to you.
Think of it like the outside of a vending machine: you press buttons, choose snacks, and see the
display. The client side is all about what you can see, touch, and use.
Client-side vs Server-side
The server side is like the engine inside the vending machine that you don’t see. It’s hidden but
does all the important work behind the scenes
Server Side
When you press a button to choose a snack, the server side processes that choice, checks if the snack
is in stock, and then sends it down to you.
On a website, when you log in, the server side checks if your password is correct. Or if you search for
something, it finds the results for you.
So, the server side is the “brain” of the operation. It stores all the information, runs calculations, and
makes sure everything works the way it should. You don’t see it, but it’s working hard every time you
interact with the client side.
Client-side vs Server-side
Whenever you do something on the client side, like press a button, the server side respond. The
client and server talk to each other to make sure everything works smoothly. The client asks for
what you need, and the server figures it out and sends it back.
Networking
Infrastructure Management
Security
CI/CD Pipelines
Monitoring and
Troubleshooting
Microservices and
Containerization
IP
TCP subnet
CIDR Firewalls
DNS Load
balancing
reverse
proxies VPN
TLS SSH
Networking
GET
TCP
HTTPS
DHCP Certificate
MX
record
SOA A record
SSL CNAME
CA
Network
Layers
NS NAT
Ports POST
Networking
When you access a website, the OSI model explains how each layer
interacts. For instance, the Application layer is your web browser, the
Transport layer (using TCP) breaks data into packets, and the Network
layer routes those packets to the correct IP address.
Networking
OSI Model
Networking
When you download a file, TCP guarantees that every packet of data
arrives and is reassembled in the correct order. If a packet is lost, TCP
resends it, ensuring your file downloads correctly without missing data.
Networking
Typing 192.168.1.1 in a browser often takes you to your home router’s settings page. This
IP address uniquely identifies your router on your local network, allowing communication with
connected devices.
Networking
A company firewall may block access to certain websites, like social media, to enhance
productivity. It may also allow only specific applications, like email, to prevent malware from
entering the network.
Networking
High-traffic websites like Amazon use load balancers to distribute incoming requests across
multiple servers, ensuring that no server gets overloaded and users experience fast
response times.
Networking
A reverse proxy like Nginx receives requests for mywebsite.com, checks which backend
server is available, and forwards the request to that server. The client only interacts with the
reverse proxy, not the actual backend servers.
Networking
When working remotely, employees use a VPN to securely access the company's internal
network. This allows them to work as if they’re in the office while keeping data secure over
the public internet.
Networking
When you visit a bank’s website (indicated by "https://"), TLS encrypts your data, such as
login credentials, to prevent eavesdropping by malicious parties. Sites without TLS are
labeled "http://" and are less secure.
Networking
To manage a remote server, a DevOps engineer might use ssh [email protected]. This
allows them to securely execute commands on the server as if they were physically present,
with data encrypted during the session.
Networking
When you visit a website like http://example.com, your browser uses HTTP to
communicate with the web server and request the webpage.
Networking
HTTPS (Hypertext HTTPS is the secure version of HTTP, using encryption (TLS/SSL)
Transfer Protocol to protect the data exchanged between the client and server.
Secure)
Banking websites use HTTPS (e.g., https://bank.com) to ensure that sensitive information,
like your password, is encrypted and secure from eavesdropping.
Networking
TCP is used when downloading a file from the internet. If any packet is lost during transfer,
TCP ensures it is resent, so the file downloads correctly.
Networking
Online gaming and video streaming often use UDP because a few lost packets (causing a
minor glitch) are preferable to the delay caused by resending packets.
Networking
When you connect to Wi-Fi at a coffee shop, the router assigns your device an IP address
using DHCP, so you can access the internet.
Networking
The MX record for example.com might direct emails to mail.example.com, allowing the
domain to receive emails.
Networking
The A record for example.com might map to 192.168.1.1, so when you type
example.com, you’re directed to that IP address.
Networking
When you see a padlock icon in the browser address bar (usually for HTTPS sites), SSL or
TLS is securing the data between your browser and the website.
Networking
When a DNS server checks the SOA record for example.com, it learns which server is
authoritative for the domain and can contact the administrator if needed.
Networking
In a home network, your router uses NAT to let multiple devices (laptops, phones) share one
public IP address while assigning each device a unique local IP address.
Networking
Port 80 is commonly used for HTTP traffic, and port 443 is used for HTTPS. When you visit
a website, your browser connects to the server’s IP on port 80 or 443.
Networking
When you visit a secure website (https://example.com), your browser checks the site’s
digital certificate to verify it’s legitimate. If the certificate is valid and trusted, it establishes a
secure (TLS/SSL) connection. The certificate shows the site’s authenticity and that data
exchange will be encrypted.
Networking
Let’s say example.com wants to secure its website with HTTPS. It requests a certificate
from a CA, like Let’s Encrypt or DigiCert. The CA verifies the identity of example.com and
issues a certificate. Now, when users visit example.com, their browsers trust that the
certificate is legitimate because it’s signed by a trusted CA.
Networking
GET POST
Definition: GET is an HTTP method used to request data from a specified resource. It retrieves information from the server without modifying any data.
GET Purpose: Primarily used to fetch data from the server.
Characteristics:
● Idempotent: Calling GET multiple times should not have any side effects. Each request will yield the same result, without altering data on the server.
● URL Parameters: GET requests can include parameters in the URL (known as query parameters), often used for filtering, sorting, or paginating data.
● Caching: GET requests are often cached by browsers, making them suitable for retrieving data that doesn’t change frequently.
● When you need to retrieve information without modifying data (e.g., viewing a webpage, searching for products, listing users).
● For API calls that simply read or fetch data, such as querying database records or returning search results.
● When you want to enable caching, as GET responses can be stored and reused to improve performance.
Networking
POST
Definition: POST is an HTTP method used to send data to the server to create or update a resource. Unlike
GET, POST requests may result in changes to the server’s data.
Purpose: Primarily used for creating new resources or submitting data to the server.
Characteristics:
● Non-Idempotent: Calling POST multiple times can have different results each time. For example,
sending a POST request twice might create duplicate entries.
● Request Body: POST requests carry data in the body (rather than the URL), allowing large and
complex data structures to be sent, such as JSON objects.
● Not Cached: POST requests are generally not cached by browsers or servers, making them
appropriate for operations where fresh data is needed every time.
● When creating a new resource (e.g., submitting a form, registering a user, adding a new item).
● When sending sensitive information that shouldn’t be visible in the URL (e.g., passwords, personal
data).
● For operations that modify the server’s data, such as creating or updating records.
Networking
GET
POST
Networking
LoadBalancer
LoadBalancer
Networking
NGINX: Often used as a software load balancer and reverse proxy. It can
distribute requests based on different rules (like round-robin or least
connections) and handle HTTP, HTTPS, and TCP/UDP traffic.
HAProxy: A popular open-source software load balancer that supports both HTTP
and TCP load balancing. It’s used by companies like Airbnb, Instagram, and
Twitter for high-traffic applications.
Google Cloud Load Balancer: Google’s load balancing service that distributes
traffic across multiple servers in Google Cloud and can automatically scale to
handle large volumes of traffic.
Least Connections: Directs traffic to the server with the fewest active
connections. This is useful when each request can have a different duration, as
it helps prevent any single server from being overloaded.
Least Response Time: Sends requests to the server with the fastest response
time, helping reduce latency for end users.
Weighted Round Robin: Assigns a weight to each server based on capacity, with
higher-weight servers receiving more requests. This is useful when servers have
different resource levels.
Networking
Random: Routes each request to a randomly selected server. This can work
well in some cases but lacks the optimization of other methods.
LoadBalancers type
Application Load
Balancer(ALB) Network Load
Balancer(NLB)
Networking
HTTP vs HTTPS
HTTP vs HTTPS
● Security: HTTP does not encrypt data. All information sent over HTTP is in plain
text, making it vulnerable to interception by third parties.
● Port: Uses port 80 by default.
● Data Privacy: Data privacy is not guaranteed. Anyone who intercepts HTTP data
can read it, including login credentials, personal information, etc.
● Use Cases: While still used, HTTP is increasingly discouraged for any sensitive
data transfer. It is mainly used for internal or non-sensitive data transmissions.
Networking
HTTP vs HTTPS
● Security: HTTPS is HTTP with encryption, typically using SSL (Secure Sockets
Layer) or TLS (Transport Layer Security) protocols. This encryption secures the
data so only the intended recipient can decrypt and read it.
● Port: Uses port 443 by default.
● Data Privacy: Encrypts data in transit, ensuring privacy and security. HTTPS also
validates the authenticity of the website, protecting against "man-in-the-middle"
attacks.
● Use Cases: Recommended for any data-sensitive or public-facing websites, such
as those involving login credentials, payments, or personal data. HTTPS is now a
standard requirement for secure websites and is favored by search engines.
Networking
DevOps engineers often manage infrastructure with IaC tools like Terraform,
Ansible, or CloudFormation. Misconfigurations in IaC can lead to security
vulnerabilities.
Infrastructure as Code
(IaC) Security
If a security group in AWS is accidentally set to allow open access (e.g., 0.0.0.0/0
on SSH), it can expose your infrastructure to attacks. Knowing how to set secure
defaults and review IaC for security issues is critical.
Security
Network Security
Setting up secure VPCs, subnets, and using security groups and firewalls to
control traffic can help protect sensitive data and systems.
Security
Many DevOps pipelines include stages for scanning code and applications
for vulnerabilities. Knowing how to configure and interpret security tools (like
SonarQube, OWASP Dependency-Check, or Snyk) is valuable.
Application Security
Container Security
Using tools like Aqua Security or Twistlock to scan Docker images for
vulnerabilities, managing permissions within Kubernetes, and avoiding running
containers as the root user are all essential container security practices.
Security
Proper IAM ensures that only authorized users and services have access to
resources. Managing permissions correctly and following the principle of least
privilege are crucial.
Security
Proper IAM ensures that only authorized users and services have access to
resources. Managing permissions correctly and following the principle of
least privilege are crucial.
Configuring IAM roles and policies in AWS or other cloud platforms to limit access
based on roles (e.g., giving production access only to certain team members)
helps reduce the risk of unauthorized access.
Security
Setting up monitoring with tools like Prometheus, Grafana, and ELK stack
(Elasticsearch, Logstash, Kibana) helps detect anomalies. Having incident
response protocols in place helps respond quickly to security incidents.
Security
Many industries have regulatory requirements like GDPR, HIPAA, and SOC
2. Knowing these requirements helps ensure that DevOps practices meet
security standards and legal obligations.
Compliance and
Regulatory
Requirements
Many industries have regulatory requirements like GDPR, HIPAA, and SOC
2. Knowing these requirements helps ensure that DevOps practices meet
security standards and legal obligations.
Compliance and
Regulatory
Requirements
Users, processes, and systems should only have the minimum access
necessary to perform their functions.
Principle of
Least
Privilege
(PoLP)
Reduces the attack surface by limiting access to only what’s necessary, preventing
unauthorized access to sensitive resources.
Important Security
Concepts
Encryption (Data
at Rest and Data
in Transit)
Identity and
Access
Management
(IAM)
Vulnerability
Management
Secrets
Management
Protects sensitive data from exposure, especially in CI/CD pipelines where secrets
are frequently used.
Important Security
Concepts
Compliance and
Regulatory
Standards
Secure Coding
Practices
Prevents common vulnerabilities (like SQL injection and cross-site scripting) and
ensures code is secure by design.
Important Security
Concepts
Limits the spread of attacks within a network and restricts access to sensitive
areas, providing layered security.
Important Security
Concepts
Monitoring and
Logging
Incident
Response and
Recovery
Being prepared with an incident response plan helps organizations respond swiftly
and minimize the impact of security breaches.
Important Security
Concepts
Patching and
Update
Management
Helps prevent attackers from exploiting known vulnerabilities and ensures that
systems are up-to-date and secure.
Important Security
Concepts
Threat Modeling
Helps proactively identify and mitigate risks, making security a built-in aspect of the
system’s design.
Important Security
Concepts
Zero Trust
Architecture
Configuration
Management and
Secure Defaults
Ensures all systems start with secure configurations, reducing vulnerabilities from
default or misconfigured settings.
Important Security
Concepts
Security in CI/CD
(DevSecOps)
Shifts security left, allowing issues to be identified and addressed early in the
development cycle, reducing overall risk.
Important Security
Concepts
API Security
APIs are widely used to integrate services and access data, so securing them is
crucial to protect both backend services and sensitive information.
Important Security
Concepts
Container
Security
Containers are widely used in DevOps, and they introduce unique security
challenges that require special handling.
Important Security
Concepts
NAT (Network
Address
Translation) and
IP Masking
Helps prevent direct access to internal network devices, reducing the risk of
external attacks.
Important Security
Concepts
TLS/SSL
Certificates and
Certificate
Management
Certificates ensure data confidentiality and integrity during transmission and help
users verify the authenticity of a website or server.
Important Security
Concepts
Access control defines who can access resources, and MFA adds an extra
layer of security by requiring multiple forms of verification.
Access Control
and Multi-Factor
Authentication
(MFA)
Access control and MFA help prevent unauthorized access, even if passwords are
compromised.
DATABASE
DevOps engineers often need to integrate database changes into the CI/CD
pipeline to ensure that schema migrations and updates are deployed
seamlessly alongside application code.
Infrastructure as
Code (IaC)
Database Monitoring
and Performance
Tuning
Database Security
Understanding SQL
and NoSQL
Databases
Data migrations (moving data from one database to another or from one
version of a database to another) are common in DevOps workflows,
especially when upgrading applications or changing environments. Knowing
how to plan and execute migrations is essential to avoid data loss and
ensure data integrity.
Data Migrations
Setting up read replicas in MySQL to offload read requests from the primary
database, which improves performance for read-heavy applications.
DATABASE
Database
Configuration and
Optimization
Access Control Attribute-Based Access Control (ABAC): Uses attributes (such as user
Models department, time of access, or security level) to define access control policies. This
model allows fine-grained control but can be complex to implement and manage.
Permission Types Admin/Superuser Access: Allows full access to manage resources, users, and
configurations within a system.
Implementing Access Access Control Lists (ACLs): List of permissions attached to resources specifying
Control which users or roles can access them and their actions.
USER PERMISSION
USER PERMISSION
Read (R)
Definition: Grants permission to view or read the contents of a file or list the
contents of a directory.
Use Cases:
● For a text document, the read permission allows users to open and view the
file.
● For directories, it allows users to list the files and subdirectories within that
directory.
Example Scenarios:
● Viewing Documents: A report file can be read by users but not altered unless they have additional
write permissions.
● Website Files: Web server configurations typically grant read access to public files for web access
but restrict write permissions to prevent unauthorized changes.
USER MANAGEMENT
USER PERMISSION
Use Cases:
● For a document, write permission allows users to edit and save changes to the document.
● For directories, it allows users to add new files, delete existing files, or rename files within the
directory.
Example Scenarios:
● Collaborative Editing: Team members might have write access to project files,
allowing them to contribute to shared documents.
● Application Logs: Application directories require write access so that processes
can log events, but typically, this permission is not granted to regular users.
USER MANAGEMENT
USER PERMISSION
Execute (X) Definition: Grants permission to run or execute a file, which is especially
relevant for scripts, binaries, and applications.
Use Cases:
● For a program file or script, execute permission allows users to run the file as
a process.
● For directories, it allows users to access or traverse through directories and
view their content (if read permission is also set).
Example Scenarios:
USER PERMISSION
This concept is about defining what a user can and cannot do within a system. Permissions and
access control are the core of system security, ensuring that users only have access to
resources essential for their role.
Authorization: Once
authenticated, authorization
determines what actions a user is
allowed to perform based on their
permissions. For instance, an
administrator might have full
access, whereas a regular user
may have limited access.
USER MANAGEMENT
RBAC is an access control model that assigns permissions to users based on their role within
an organization. It simplifies permission management by grouping permissions into roles rather
than assigning them individually, which can be especially useful in large environments.
Roles: RBAC groups permissions
into roles (e.g., Developer,
Administrator, Tester), and users are
assigned roles rather than individual
permissions. A role represents a
function in the organization.
Dynamic Role Adjustment: As
Permissions: Each role users change roles (e.g., a
has a defined set of Role Assignment: Users are
developer becoming a lead), their
assigned to roles based on their
permissions associated job responsibilities. This
permissions are automatically
adjusted by assigning them to a new
with it, determining what simplifies management since role, reducing the risk of "permission
actions users with that permissions need updating only creep."
role can perform. at the role level.
User vs Group
In DevOps, understanding the distinction between users and groups is essential for managing
permissions, ensuring security, and promoting efficient collaboration.
USER GROUP
USER MANAGEMENT
User vs Group
USER A user is an individual entity with a unique identity on a system. Each user
represents a person (e.g., developer, sysadmin) or a process (e.g.,
automated deployment bot) that can interact with the system. Users are
typically assigned specific permissions to control what they can access and
what actions they can perform.
● User ID (UID): Each user is assigned a unique identifier, which is used by the system to manage and control
access.
● Home Directory: Users often have their own directories where they can store personal files and configuration
settings.
● Ownership and Permissions: Users can own files and processes, and permissions can be set on resources
to control what users can do (e.g., read, write, execute).
● Authentication and Security: Users authenticate using passwords, SSH keys, or other methods, and each
user’s actions are tracked for security and auditing purposes.
Example Use Case: In a deployment pipeline, each developer has their own user account to access specific servers,
repositories, or configurations. Permissions assigned to each user control their access to only the resources they
need.
USER MANAGEMENT
User vs Group
GROUP
A group is a collection of users that share similar permissions, making it
easier to manage access control for multiple users at once. Groups are
especially useful for organizing users with similar roles or responsibilities
(e.g., developers, testers, admins).
● Group ID (GID): Each group has a unique identifier, similar to user IDs, used to manage and assign
permissions to multiple users.
● Shared Permissions: Permissions set on a group allow all members of that group to inherit access to specific
files, directories, or resources.
● Efficient Access Management: Instead of managing permissions for each user individually, you can set
permissions for a group. This ensures consistency and simplifies permission changes.
● Collaboration and Access Control: Group-based permissions facilitate collaboration by ensuring that all team
members have access to necessary resources without compromising security.
Example Use Case: In a DevOps environment, a “deploy” group can be created for team members responsible for
deployments. Assigning deployment permissions to this group ensures that all members have the same level of
access, reducing the need to manage permissions individually.
USER MANAGEMENT
User vs Group
In DevOps, understanding the distinction between users and groups is essential for managing
permissions, ensuring security, and promoting efficient collaboration.
GROUP
USER
USER MANAGEMENT
GROUP
GROUP
USER
Role: A set of
permissions or actions
Group: A collection of that users or groups
User: An individual users. Groups are can perform. Instead of
person or account used to assign the assigning permissions
that logs into a same permissions to directly to a user, you
system. Each user multiple users at give them a role that
has their own unique once, making it easier has the needed
identity (username) to manage access for permissions for their job
and can have specific similar types of users (like "admin" or
permissions. (like a team). "viewer").
USER MANAGEMENT
GROUP
USER GROUP
In short:
Authentication
(AuthN)
Authentication (AuthN)
● Definition: Authentication is the process of verifying who a user or entity is. It answers
the question, “Are you who you claim to be?”
● Importance in DevOps:
○ Ensures only legitimate users or services can access resources, especially in
cloud, CI/CD, and production environments.
○ Common methods include passwords, multi-factor authentication (MFA), tokens,
and certificates.
○ As a DevOps engineer, you may set up and manage authentication mechanisms
for secure access to tools, repositories, servers, and cloud platforms.
● Example: Configuring OAuth, LDAP, or Single Sign-On (SSO) for accessing systems
like Jenkins, Kubernetes, or AWS.
AUTH & AUTHZ
Authorization (AuthZ)
Authorization (AuthZ)