Understanding the Cloud: A Primer on IaaS, PaaS, and SaaS
In this masterclass, we'll break down the three major cloud service models—IaaS, PaaS, and SaaS—and visualize how they stack up in terms of control, responsibility, and abstraction.
Cloud Service Models at a Glance
IaaS (Infrastructure as a Service)
Control Level: You manage OS, middleware, runtime, apps, and data. The cloud provider manages the hardware.
Use Case: Ideal for full-stack developers who want control over the OS and applications but don't want to manage physical hardware.
Example: AWS EC2 instances, virtual machines, and data centers.
PaaS (Platform as a Service)
Control Level: You manage apps and data. The platform handles runtime, middleware, and infrastructure.
Use Case: Great for developers who want to focus on building apps without managing infrastructure or runtime environments.
Example: Dockerized Python Flask apps deployed on platforms like Heroku or Google App Engine.
SaaS (Software as a Service)
Control Level: You only manage data. The provider handles everything else.
Use Case: Perfect for businesses using tools like Salesforce or Google Workspace.
Example: SaaS applications that require minimal setup and maintenance.
Key Insight: The higher the service model (IaaS → PaaS → SaaS), the less control you have, but the more the provider does for you. It's a trade-off between control and convenience.
Visualizing the Abstraction Layers
Let’s visualize how these services stack up in terms of control and responsibility:
Click to Reveal: Control vs. Responsibility in Cloud Models
IaaS: You manage OS, middleware, runtime, apps, and data.
PaaS: You manage apps and data.
SaaS: You only manage data.
Pro-Tip: Use the cloud service model that best fits your team’s control needs. Don’t over-engineer or under-provision!
Key Takeaways
- IaaS gives you the most control but requires more management.
- PaaS abstracts away infrastructure, letting you focus on app logic.
- SaaS is fully managed—just bring your data and use the software.
Infrastructure as a Service (IaaS): The Foundation of Cloud Flexibility
Infrastructure as a Service (IaaS) is the foundational cloud service model that provides virtualized computing resources over the internet. It offers the highest level of flexibility and management control over computing infrastructure, allowing you to rent servers, storage, networks, and other core computing resources on-demand.
Core IaaS Components
Virtual Machines
Scalable compute instances that run your applications and services.
Storage
On-demand data storage solutions, including block, file, and object storage.
Networking
Virtual networks, firewalls, and load balancers to manage traffic and ensure secure communication.
How IaaS Works: A Visual Breakdown
Pro-Tip: IaaS is ideal for businesses that need full control over their infrastructure but want to avoid the cost and complexity of physical hardware.
Key Takeaways
- IaaS provides the most control over cloud resources, letting you manage everything from the OS up.
- It’s perfect for custom applications, big data analytics, and development environments.
- Use IaaS when you need scalability, flexibility, and full-stack control without owning hardware.
💡 Click to see code example: Provisioning a VM in AWS
# Example: Launching an EC2 instance in AWS using Boto3
import boto3
ec2 = boto3.resource('ec2')
# Create a new EC2 instance
instances = ec2.create_instances(
ImageId='ami-12345678',
MinCount=1,
MaxCount=1,
InstanceType='t2.micro',
KeyName='my-key-pair'
)
print("Instance launched:", instances[0].id)
Platform as a Service (PaaS): Developer Empowerment in the Cloud
Enter the world of Platform as a Service (PaaS), where the cloud abstracts away infrastructure concerns, letting developers focus on what they do best: building applications. PaaS is the middle child of cloud service models, sitting between the raw compute power of IaaS and the fully managed application environment of SaaS. It provides a complete development and deployment platform, including runtime, middleware, and development tools, all managed by the cloud provider.
What is PaaS?
Platform as a Service (PaaS) abstracts the underlying infrastructure, offering a complete platform for developers to build, run, and manage applications without dealing with servers, storage, or networking. It's designed for developers who want to focus on coding, not infrastructure.
Key Features of PaaS
- Abstraction: No need to manage servers, databases, or networking manually.
- Developer-Focused: Offers built-in tools, databases, and middleware.
- Scalability: Automatically scales based on demand.
- Managed Services: The cloud provider handles updates, patches, and security.
How PaaS Works
When you deploy an application to a PaaS, the provider handles everything from the operating system up. You simply upload your code, and the platform takes care of the rest. This includes runtime environments, middleware, and even runtime dependencies. It’s a powerful model that allows developers to focus on writing code, not managing infrastructure.
💡 Click to see code example: Deploying a Node.js App to Heroku
// Example: Simple Express.js server for PaaS deployment
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello from PaaS!');
});
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
Use Cases for PaaS
- Web and mobile application development
- DevOps and CI/CD pipelines
- API development and hosting
- Microservices architecture
Key Takeaways
- PaaS abstracts infrastructure, letting developers focus on code.
- Ideal for full-stack web applications, APIs, and microservices.
- Use PaaS when you want to build and deploy quickly without managing servers.
💡 Click to see code example: Deploying a Python Flask App to Heroku
# Example: Simple Flask App for PaaS deployment
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello from PaaS!"
if __name__ == '__main__':
app.run()
Software as a Service (SaaS): The App You Use Every Day
SaaS is the most visible layer of cloud computing for end-users. It's the software you interact with directly—think Google Workspace, Salesforce, or even Slack. But what makes SaaS different from PaaS or IaaS? Let’s break it down.
💡 Pro-Tip: SaaS abstracts everything from infrastructure to application logic—users simply access the software via a web browser. No installation, no updates, no servers to manage.
What Makes SaaS Different?
SaaS delivers ready-to-use software over the internet. The provider handles everything from the OS to the application logic, while you just use the service through a browser or app. It's the ultimate plug-and-play model for software.
Common SaaS Examples
- Google Workspace (Docs, Sheets, Gmail)
- Salesforce (CRM platform)
- Slack (team communication)
- Zoom (video conferencing)
Comparison: SaaS vs PaaS vs IaaS
SaaS
End-User Focus: You use the software directly.
- Browser-based access
- No local installation
- Provider handles updates and security
PaaS
Developer-Focused: You build apps on top of the platform.
- Cloud-based development
- APIs and middleware
- Scalable app hosting
IaaS
Infrastructure-Focused: You manage OS, middleware, runtime.
- Virtual machines
- Storage and networks
- Control over resources
Visual Comparison Table
| SaaS Example | User Responsibilities | Provider Responsibilities |
|---|---|---|
| Google Workspace | Use services like Docs, Sheets, Slides | Google manages infrastructure, security, and updates |
| Salesforce | Configure CRM tools | Salesforce manages user access, data storage |
Key Takeaways
- SaaS abstracts all infrastructure and application logic—users simply access the software via the web.
- Ideal for end-users who want to use software without managing backend systems.
- Use SaaS when you want to focus on *using* the software, not building or maintaining it.
💡 Click to see code example: SaaS App Integration
// Example: Integrating with a SaaS API (e.g., Salesforce) const fetch = require('node-fetch'); async function fetchUserDetails(userId) { const response = await fetch(`https://api.example.com/users/${userId}`); const data = await response.json(); return data; }
Live Example: Google Workspace Integration
Google Workspace
Use Case: Productivity Suite
- Cloud-based document editing
- Email, calendar, and storage
- Collaboration tools
Salesforce
Use Case: Customer Relationship Management
- CRM tools
- Lead and opportunity tracking
- Team collaboration
Mermaid.js Diagram: SaaS Architecture
Key Takeaways
- SaaS delivers ready-to-use software over the web—no installation or maintenance required.
- Users access tools like Google Docs, Salesforce, or Zoom directly via the internet.
- Use SaaS when you want to use software without managing infrastructure or code.
Core Differences Between IaaS, PaaS, and SaaS Explained
In the cloud computing landscape, services are typically categorized into three main models: Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and Software-as-a-Service (SaaS). Each model defines a different level of control, flexibility, and responsibility between the user and the service provider.
Control and Responsibility Overview
Here's how each model distributes control:
- IaaS: The customer manages the OS, applications, and data. The provider manages the hardware, networking, and storage.
- PaaS: The customer manages apps and data. The provider handles everything else, including runtime, middleware, and OS.
- SaaS: The customer only manages data. The provider handles everything else, including apps and infrastructure.
Visual Comparison Grid
| Service Model | Customer Responsibility | Provider Responsibility |
|---|---|---|
| IaaS | OS, Applications, Data | Physical Hardware, Networking, Storage |
| PaaS | Applications, Data | Runtime, Middleware, OS |
| SaaS | Data | Applications, Infrastructure, Runtime |
Configuration Examples (Prism.js)
Below are simplified configuration examples for each model:
IaaS Configuration Example (Terraform)
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1ab">
instance_type = "t2.micro"
tags = {
Name = "IaaS-Example"
}
}
PaaS Configuration Example (App Engine)
runtime: python39
env: flex
env_variables:
CLOUD_SQL_CONNECTION_NAME: my-project:us-central1:my-db
SaaS Configuration Example (Using a SaaS UI)
No configuration required. Just sign in and use!
Key Takeaways
- IaaS offers the most control, requiring you to manage everything from the OS up.
- PaaS abstracts the OS and runtime, letting you focus on your application and data.
- SaaS provides out-of-the-box solutions with minimal management from the user.
Choosing Your Model: Use Cases and Decision Factors
Choosing the right cloud service model (IaaS, PaaS, or SaaS) depends on your project's needs, team expertise, and long-term goals. This decision matrix is shaped by three core factors: control, speed of deployment, and cost. Let's explore how to make the right call.
Decision Factors
When choosing a service model, consider these key factors:
- Control: How much infrastructure control do you need?
- Speed: How quickly do you need to deploy?
- Cost: What is your budget flexibility?
Use Case Scenarios
Let’s look at a few common use cases and how they map to the right service model:
Key Takeaways
- IaaS is best when you need full control over the infrastructure, such as custom network topologies or compliance requirements.
- PaaS is ideal for rapid development and deployment, especially for startups or MVPs.
- SaaS is perfect for teams that want to avoid infrastructure management and focus on outcomes.
Decision Matrix
Here’s a quick decision matrix to help you choose:
Pro-Tip: Use the decision matrix to align your business needs with the most suitable service model. Need control? Go IaaS. Need speed? PaaS. Want simplicity? SaaS.
Practical Examples
Startup Scaling Fast
For startups looking to scale quickly, PaaS is often the best choice. It abstracts infrastructure management, letting you focus on building features, not servers.
Enterprise Control
Enterprises with compliance or security needs often choose IaaS for granular control over data, network, and access policies.
Quick SaaS Rollout
For internal tools or non-critical applications, SaaS is the go-to. It offers minimal setup and maximum convenience.
Key Takeaways
- IaaS is best for teams needing full control over infrastructure.
- PaaS suits rapid development and deployment needs.
- SaaS is ideal for out-of-the-box solutions with minimal management.
Real-World Scenarios: When to Use Which Model
In the world of cloud computing, understanding when to use IaaS, PaaS, or SaaS is just as important as knowing what they are. Let’s walk through real-world scenarios where each model shines.
💡 Pro Tip: The right service model can save time, reduce cost, and scale your project efficiently.
Case Study 1: Startup Scaling Fast
Scenario: A new SaaS startup wants to launch quickly without managing infrastructure.
Decision: Choose PaaS for rapid deployment and scalability.
Outcome: The team deploys in days, not months, and scales effortlessly with traffic.
🚀 Startup
Model: PaaS
Why: Speed of deployment, managed services, and auto-scaling.
Tools: Google App Engine, Heroku, AWS Elastic Beanstalk
🏢 Enterprise
Model: IaaS
Why: Full control over infrastructure, compliance, and security.
Tools: AWS EC2, Azure VMs, Google Compute Engine
🛠️ Internal Tool
Model: SaaS
Why: Quick setup, no maintenance, pay-as-you-go.
Tools: Slack, Google Workspace, Salesforce
Case Study 2: Enterprise Control
Scenario: A financial institution needs to maintain strict compliance and data governance.
Decision: Choose IaaS for full control over infrastructure and data.
Outcome: The company maintains its own security stack and meets regulatory standards.
Case Study 3: Quick SaaS Rollout
Scenario: A marketing team wants to deploy a new tool for internal collaboration.
Decision: Choose SaaS for immediate access and no infrastructure overhead.
Outcome: The tool is live within hours, with no setup or maintenance required.
Visual Decision Tree: Which Model to Choose?
Code Example: Infrastructure Provisioning (IaaS)
# Example Terraform configuration for IaaS (AWS EC2)
provider "aws" { region = "us-west-2" }
resource "aws_instance" "example" { ami = "ami-0c0b74d5a2b7c1d8e" instance_type = "t3.micro" }
Code Example: Platform Abstraction (PaaS)
# Example Python Flask App for PaaS Deployment
from flask import Flask
app = Flask(__name__)
@app.route('/') def home(): return "Welcome to the PaaS-powered app!"
if __name__ == '__main__': app.run(debug=True)
Key Takeaways
- IaaS is best for teams needing full control over infrastructure.
- PaaS suits rapid development and deployment needs.
- SaaS is ideal for out-of-the-box solutions with minimal management.
Hybrid and Multi-Cloud Strategies: Beyond the Basics
In today’s enterprise IT landscape, a single cloud provider rarely meets all organizational needs. This section explores hybrid and multi-cloud strategies—advanced approaches that allow organizations to combine the best of multiple environments for optimal performance, security, and cost-efficiency.
Hybrid Cloud
Hybrid cloud combines on-premises infrastructure, private cloud services, and public cloud services, allowing data and applications to be shared or moved between environments.
- Best for: Organizations needing flexibility and scalability while maintaining control over sensitive data.
- Use Case: Disaster recovery, data backup, and compliance-sensitive workloads.
Multi-Cloud
Multi-cloud uses multiple public cloud services to reduce vendor lock-in, improve redundancy, and leverage specialized services from different providers.
- Best for: Avoiding single-vendor dependency and optimizing for specific cloud strengths.
- Use Case: Running analytics on AWS, hosting apps on Azure, and using GCP for machine learning.
Visualizing Cloud Strategy Architectures
Infrastructure Code: Hybrid Cloud Orchestration
Below is a simplified example of how you might orchestrate a hybrid cloud using Terraform to deploy resources across AWS and on-prem via VMware.
# Hybrid Cloud Orchestration Example provider "aws" { region = "us-west-2" } resource "aws_instance" "web" { ami = "ami-0123456789abcdef0" instance_type = "t3.micro" } # On-prem VMware VM (simulated) resource "vsphere_virtual_machine" "local_vm" { name = "onprem-vm" resource_pool_id = "resgroup-123" num_cpus = 2 memory = 4096 guest_id = "ubuntu64Guest" }
Key Takeaways
- Hybrid Cloud blends private and public infrastructure for flexibility and control.
- Multi-Cloud avoids vendor lock-in and leverages best-in-class services.
- Use Docker and container orchestration tools to manage multi-cloud deployments.
Cost Considerations and Pricing Models in the Cloud
Understanding cloud cost models is not just about saving money—it's about strategic resource planning. In this section, we'll break down the core pricing models (IaaS, PaaS, SaaS), visualize how they stack up, and explore how to make cost-efficient decisions in the cloud.
Cloud Pricing Models: IaaS vs PaaS vs SaaS
Each cloud service model comes with its own pricing structure. Here's how they compare:
IaaS (Infrastructure as a Service)
You pay for compute, storage, and networking resources. Examples: AWS EC2, Azure VMs.
- High control, high cost responsibility
- Ideal for custom infrastructure needs
PaaS (Platform as a Service)
You pay for a platform to build and deploy apps. Examples: Google App Engine, Heroku.
- Managed platform, less control
- Cost scales with usage (e.g., API calls, DB usage)
SaaS (Software as a Service)
You pay for ready-to-use software. Examples: Salesforce, Office 365.
- Lowest management overhead
- Fixed or tiered subscription pricing
Visualizing Cost Structures
Let’s compare the cost structures of IaaS, PaaS, and SaaS using a bar chart:
Cost Responsibility
- IaaS: User manages OS, middleware, runtime, apps, and data
- PaaS: Provider manages infrastructure and platform
- SaaS: Provider manages everything except data
Control vs Cost
- More control = higher cost
- Less control = lower cost + faster deployment
graph TD
A["Cloud Pricing Models"];
A --> B["IaaS"];
A --> C["PaaS"];
A --> D["SaaS"];
B --> E["User-Controlled"];
C --> F["Platform-Controlled"];
D --> G["Provider-Controlled"];
style A fill:#e0e0e0,stroke:#333;
style B fill:#f8b7bd,stroke:#c00;
style C fill:#f8e6a0,stroke:#c8a000;
style D fill:#a0e6a0,stroke:#0a0;
Cost Optimization Strategies
Here are key strategies to reduce cloud costs:
- Right-size resources: Use tools like auto-scaling to match usage.
- Use reserved instances: Commit to long-term usage for discounts.
- Monitor and alert: Use cost dashboards and anomaly detection.
- Automate cleanup: Terminate unused or stale resources.
Real-World Pricing Example
Let’s model a simple cost estimation for a web app using IaaS and PaaS:
gantt
title Sample Cloud Cost Estimation (Monthly)
dateFormat YYYY-MM-DD
section IaaS
EC2 Instances :active, des1, 2025-04-01, 30d
section PaaS
App Engine :active, des2, 2025-04-01, 30d
section SaaS
Office 365 :active, des3, 2025-04-01, 30d
Key Takeaways
- IaaS offers maximum control but requires more cost management.
- PaaS abstracts infrastructure, reducing operational overhead.
- SaaS is subscription-based and fully managed by the provider.
- Use cost monitoring tools and auto-scaling to optimize cloud spend.
Security and Compliance in Cloud Environments
In cloud environments, security and compliance are not just add-ons—they are foundational. As we move workloads to the cloud, understanding the shared responsibility model, encryption, identity management, and compliance standards becomes critical. This section breaks down the core concepts of cloud security and how to implement them effectively.
Key Security Layers in the Cloud
- Identity and Access Management (IAM): Use role-based access control to limit who can access what. Learn more about configuring user roles for secure access.
- Encryption: Data at rest and in transit must be encrypted. Use tools like AWS KMS or Azure Key Vault.
- Compliance Standards: Ensure your cloud setup meets standards like GDPR, HIPAA, or SOC 2.
Shared Responsibility Model
The cloud provider handles infrastructure security (hardware, network, physical data centers), while the customer is responsible for data, applications, and access management. This model is key to understanding how to secure your cloud environment.
Implementing Security in Code
Here’s a sample of how to implement basic access control in a Python-based cloud function using IAM policies:
# Example: Restricting access via IAM policy in AWS { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-secure-bucket/*", "Condition": { "StringEquals": { "s3:prefix": "secure-folder" } } } ] }
For a deeper dive into access control, see how to implement access control in cloud environments.
Key Takeaways
- Security in the cloud is a shared model between provider and customer.
- Use IAM to enforce least-privilege access.
- Encrypt data at rest and in transit using tools like AWS KMS or Azure Key Vault.
- Ensure compliance with standards like GDPR, ISO/IEC 27001, and HIPAA.
- Learn more about implementing secure access control in your applications.
Migration Strategies: Lifting, Shifting, and Modernizing
As cloud adoption accelerates, organizations are faced with a critical decision: how to migrate their existing systems to the cloud. The strategy they choose can significantly impact performance, cost, and long-term maintainability. In this section, we'll explore the three dominant migration strategies—rehosting (lift-and-shift), replatforming (shifting), and refactoring (modernizing)—and how to choose the right path for your system.
Lift-and-Shift (Rehosting)
What it is: Moving an application to the cloud with minimal to no changes.
When to use: When speed is critical and the system is stable.
Pros: Fast, low risk.
Cons: Misses cloud-native benefits.
Replatforming (Shifting)
What it is: Making cloud-specific optimizations without full refactoring.
When to use: When you want to gain some cloud benefits without major rewrites.
Pros: Balances cost and performance.
Cons: Requires some rework but not full redesign.
Modernizing (Refactoring)
What it is: Redesigning the application to be cloud-native from the ground up.
When to use: When you want full scalability and maintainability.
Pros: Full optimization, future-proofing.
Cons: Time-intensive, high cost.
Migration Strategy Comparison
flowchart TD; A["Legacy System"] --> B["Cloud Migration"]; B --> C1["Rehosting (Lift-and-Shift)"]; B --> C2["Replatforming (Shifting)"]; B --> C3["Refactoring (Modernizing)"]; C1 --> D1["Minimal Change"]; C2 --> D2["Some Optimization"]; C3 --> D3["Full Redesign"]; style D1 fill:#e6f7ff,stroke:#1890ff; style D2 fill:#f6ffed,stroke:#52c41a; style D3 fill:#fff0f6,stroke:#eb2f96
Code Example: Rehosting a Legacy Application
Below is a simplified example of how you might rehost a monolithic application to the cloud with minimal changes:
server: image: "nginx:latest" ports: - "80:80" volumes: - "/opt/legacy-app:/usr/src/app" command: "sh -c 'cd /usr/src/app && npm start'"
Step-by-Step Migration Flow
Key Takeaways
- Rehosting is the fastest path but offers minimal cloud benefits.
- Replatforming balances cost and performance by optimizing for the cloud.
- Refactoring is the most time-intensive but offers full cloud-native capabilities.
- Learn more about how to dockerize Python Flask for modern deployments.
- Explore how to build concurrent applications for scalable systems.
Hands-On Exercise: Matching Business Needs to Cloud Models
In this interactive exercise, you'll match real-world business scenarios to the most appropriate cloud service model: IaaS, PaaS, or SaaS. This will help you understand how to align infrastructure decisions with business goals.
Exercise: Match the Use Case to the Right Cloud Model
Drag and drop the use cases to the correct cloud model:
Use Case 1
A startup wants to deploy a custom web application without managing servers.
Use Case 2
A company wants to run its own database but doesn't want to manage hardware.
Use Case 3
A business wants to use a fully managed CRM solution without any backend management.
Policy Code Example
Here's a sample policy configuration for a cloud service access control:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::my-bucket/*" } ] }
Matching Exercise
Match the following use cases to the correct cloud model:
- Use Case A: A company wants to deploy a custom web application without managing servers.
- Use Case B: A company wants to run its own database but doesn't want to manage hardware.
- Use Case C: A business wants to use a fully managed CRM solution without any backend management.
Model Matching
Match the use cases to the correct model:
- Use Case A → PaaS
- Use Case B → IaaS
- Use Case C → SaaS
Key Takeaways
- Use Case A matches PaaS because the company wants to deploy a custom app without managing servers.
- Use Case B matches IaaS since the company manages its own database but not the hardware.
- Use Case C matches SaaS because the business avoids backend management entirely.
Pro-Tip
When choosing a cloud model, always align it with your business needs. IaaS gives you control over the OS and runtime, PaaS abstracts infrastructure, and SaaS delivers full application-level services.
Click to Reveal: Solution
- Use Case A → PaaS
- Use Case B → IaaS
- Use Case C → SaaS
Visual Summary: Cloud Service Models
Key Takeaways
- IaaS gives control of the infrastructure, but not the OS or applications.
- PaaS abstracts infrastructure and allows custom app deployment.
- SaaS delivers ready-to-use applications with no backend management.
- Learn more about how to dockerize Python Flask for modern deployments.
- Explore how to build concurrent applications for scalable systems.
Frequently Asked Questions
What is the difference between IaaS, PaaS, and SaaS?
IaaS provides virtualized computing resources over the internet, PaaS offers a platform for developing and deploying applications, and SaaS delivers software applications on demand.
Which cloud service model is best for startups?
Startups often prefer PaaS or SaaS for faster deployment and lower upfront costs, while IaaS suits those needing full control over infrastructure.
Is SaaS cheaper than IaaS or PaaS?
SaaS often has lower upfront costs but may become expensive over time. IaaS and PaaS offer more control but require higher management and setup costs.
Can I use multiple cloud service models at once?
Yes, many organizations use a hybrid or multi-cloud approach, combining IaaS for infrastructure, PaaS for development, and SaaS for ready-to-use applications.
What are examples of IaaS, PaaS, and SaaS providers?
Examples include: IaaS (AWS EC2, Microsoft Azure VMs), PaaS (Google App Engine, Heroku), and SaaS (Google Workspace, Salesforce).