Thuta Learning
ProjectsDevOps & Toolsintermediate

Project: The Platform Selection Lab

What you'll walk away with

  • Explain the core ideas behind Project: The Platform Selection Lab
  • Read the diagram/table and identify how these platform categories differ
  • Explain how you would choose the right platform category for a real project

Build the mental model

This project is the first checkpoint for everything the Advanced chapter built: the platform decision guide, the major-cloud comparison, the modern-platform comparison, and the BaaS comparison. Instead of adding facts about any single provider, it asks you to combine what you already compared and apply it under realistic constraints.

  • Platform decision guide - the need-flag framework for choosing a category
  • Major-cloud comparison - AWS vs Google Cloud vs Azure tradeoffs
  • Modern-platform comparison - Vercel/Netlify/Railway/Render/Cloudflare tier
  • BaaS comparison - Supabase vs Firebase style tradeoffs
  • Multi-cloud and vendor lock-in - what happens when you depend on one vendor
WorkloadFramework it tests
Marketing siteModern-platform comparison's static-hosting/CDN tier
SaaS productBaaS comparison + major-cloud comparison
Background-worker backendPlatform decision guide's long-running-process filter
AI app (spiky usage)Decision guide's cost-shape reasoning + vendor lock-in lesson

The goal is a platform CATEGORY for each workload, not a specific vendor mandate. You are practicing the reasoning the decision guide teaches, not memorizing a product name. A correct answer names the category and states which need-flags drove the choice.

Justify, don't just name

Naming the right category without stating which need-flags drove it doesn't demonstrate the skill; the one-line justification is the actual deliverable.

text
WORKLOAD TO PLATFORM CATEGORY MAP
---------------------------------
1. Marketing / portfolio site
   -> Static hosting / CDN platform (Jamstack)

2. Full-stack SaaS (accounts + database)
   -> BaaS-backed or full-stack PaaS platform

3. Long-running Node.js backend + background workers
   -> Container/VM-based PaaS (persistent compute)

4. AI app calling external API (spiky, unpredictable usage)
   -> Serverless functions / scale-to-zero platform

Connect it to a real scenario

Marketing site

Confirm there is no server-side logic and no user data -- that points straight at static hosting and a CDN.

SaaS product

Notice accounts plus a database together -- that's the BaaS-or-full-stack-PaaS shape from the BaaS comparison lesson.

Background-worker backend

The long-running-process answer is yes here, which overrides everything else and rules out static hosting and serverless functions immediately.

AI app

Traffic is unpredictable around external API calls, which points at serverless or scale-to-zero compute so you're not paying for idle capacity between spikes.

Run and compare

Run selectPlatformCategory against all four workloads, compare its output to your own reasoning, and check the AI app's pick against the vendor-lock-in lesson's concerns.

Try the working example

javascript
function selectPlatformCategory(workload) {
  if (workload.needsLongRunningProcess) {
    return {
      workload: workload.name,
      category: "Container/VM-based PaaS (persistent compute)",
      justification:
        "Background workers and long-lived connections need a process that keeps running, which rules out request/response serverless functions and static hosting alike."
    };
  }

  if (workload.isStatic && !workload.needsDatabase && !workload.needsAuth) {
    return {
      workload: workload.name,
      category: "Static hosting / CDN platform (Jamstack)",
      justification:
        "No server-side logic or user data to store, so pre-built assets served from the edge are the cheapest and fastest fit."
    };
  }

  if (workload.trafficPattern === "unpredictable") {
    return {
      workload: workload.name,
      category: "Serverless functions / scale-to-zero platform",
      justification:
        "Usage spikes unpredictably around calls to an external API, so paying only for active invocations beats reserving capacity for a steady load that never arrives."
    };
  }

  return {
    workload: workload.name,
    category: "BaaS-backed or full-stack PaaS platform",
    justification:
      "Steady traffic plus accounts and a database is the core full-stack shape a BaaS or a managed PaaS handles well without hand-rolled infrastructure."
  };
}

const workloads = [
  {
    name: "Marketing / portfolio site",
    isStatic: true,
    needsDatabase: false,
    needsAuth: false,
    needsLongRunningProcess: false,
    trafficPattern: "steady"
  },
  {
    name: "Full-stack SaaS product (accounts + database)",
    isStatic: false,
    needsDatabase: true,
    needsAuth: true,
    needsLongRunningProcess: false,
    trafficPattern: "steady"
  },
  {
    name: "Long-running Node.js backend with background workers",
    isStatic: false,
    needsDatabase: true,
    needsAuth: false,
    needsLongRunningProcess: true,
    trafficPattern: "steady"
  },
  {
    name: "AI-powered app calling an external AI API (spiky usage)",
    isStatic: false,
    needsDatabase: false,
    needsAuth: true,
    needsLongRunningProcess: false,
    trafficPattern: "unpredictable"
  }
];

workloads.map(selectPlatformCategory).forEach((result) => {
  console.log(`${result.workload}\n  -> ${result.category}\n  (${result.justification})\n`);
});
You should see
Running selectPlatformCategory against the four workloads prints: the marketing site maps to 'Static hosting / CDN platform (Jamstack)'; the SaaS product maps to 'BaaS-backed or full-stack PaaS platform'; the background-worker backend maps to 'Container/VM-based PaaS (persistent compute)'; and the AI app maps to 'Serverless functions / scale-to-zero platform' -- each printed with its one-line justification.

5-minute try-it

Add a fifth workload of your own -- for example, a data-pipeline job that runs on a schedule once a night -- and extend selectPlatformCategory's need-flags if the existing four aren't enough to categorize it correctly. Justify your category choice in one sentence, the same way the function does.

One important caution

Picking a specific vendor before actually listing out the workload's need-flags, which skips the reasoning step this project is built to practice.

Treating traffic pattern as the only factor and ignoring a hard filter like needing a long-running process, which can override every other consideration.

Google Cloud - IaaS vs PaaS vs SaaSCloud Providers & Platforms

Easy traps

  • Picking a specific vendor before actually listing out the workload's need-flags, which skips the reasoning step this project is built to practice.
  • Treating traffic pattern as the only factor and ignoring a hard filter like needing a long-running process, which can override every other consideration.
  • This course teaches the provider/platform landscape at comparison level only -- for hands-on depth on AWS, Docker, CI/CD, Firebase, or deployment fundamentals, continue to the AWS Fundamentals, Docker, CI/CD, Firebase, or Cloud & Deployment tutorials.

Exercise

Add a fifth workload of your own -- for example, a data-pipeline job that runs on a schedule once a night -- and extend selectPlatformCategory's need-flags if the existing four aren't enough to categorize it correctly. Justify your category choice in one sentence, the same way the function does.

You'll know it worked when: Running selectPlatformCategory against the four workloads prints: the marketing site maps to 'Static hosting / CDN platform (Jamstack)'; the SaaS product maps to 'BaaS-backed or full-stack PaaS platform'; the background-worker backend maps to 'Container/VM-based PaaS (persistent compute)'; and the AI app maps to 'Serverless functions / scale-to-zero platform' -- each printed with its one-line justification.