Day 170 Β· Cooking in someone else's kitchen

Customer Environments

You will be able to
  • Compare SaaS, customer-VPC, and on-prem/air-gapped deployment models across data residency, control, and support cost
  • Explain VPCs, private networking, and egress control well enough to plan a deployment into one
  • State what customer-managed keys (CMK) change about your architecture and operations
  • Design a debugging strategy for environments you cannot directly access
  • Produce an environment preflight checklist that catches blockers before install day
Today's ~120 minutes
Spaced-rep warm-up: due cards incl. Day 16910 min
ELI5 + tech read: the three models20 min
Guided: decision matrix + diagnostic bundle40 min
Practice: preflight checklist20 min
Project: assemble the environment kit20 min
Quiz + flashcards10 min

Builds on: Day 150 β€” Cloud fundamentals Β· Day 159 β€” Production security & compliance Β· Day 169 β€” Enterprise integration

The analogy

Cooking in your own kitchen, you know where every knife lives, the oven runs 10 degrees hot, and you can taste the sauce whenever you want. Now cook the same dinner in a stranger's kitchen β€” with the lights half off. Some drawers are locked. The host stands behind you saying "we don't allow open flames on Tuesdays." And you can't taste anything: you ask the host to taste it and describe the flavor back to you.

That is deploying into a customer's environment. Their cloud account or data center is their kitchen: their network rules decide what your app can reach, their compliance rules decide where data may sit, and their keys lock the pantry. The dimmed lights are the loss of observability β€” you often can't SSH in, can't tail logs live, sometimes can't reach the internet at all. The skill is cooking well anyway: package everything you need before you arrive, write down every step so the host can follow it, and build tools that let the host "taste and describe" β€” diagnostics they run and send back β€” because you will not be allowed to taste it yourself.

Why this matters on the job

The deals with the biggest budgets β€” banks, healthcare, government, defense β€” are precisely the ones that will not send their data to your SaaS. "Can you deploy in our VPC?" or "we are air-gapped" is where AI deals in regulated industries live or die, and the engineer who can say "yes, here is our deployment model and here is the support cost difference" is the FDE. It is also where careers get made at 2 a.m.: production is down in an environment you cannot see, and your diagnostic tooling is the only flashlight anyone has.

Guided practice

guided 1

Deployment-model decision matrix

18 min
  1. Create docs/deployment-models.md in the capstone repo. Build a table: rows = SaaS / customer-VPC / on-prem-air-gapped; columns = where data rests, who holds keys, how updates ship, how you debug, LLM access path, relative support cost (1x / 3x / 10x).
  2. Fill every cell for YOUR capstone specifically β€” e.g. the LLM row: SaaS = hosted API; VPC = provider endpoint via their egress allowlist OR cloud-native model service in-region; air-gapped = local open-weights model (Day 103) with the quality delta stated honestly.
  3. Now profile three prospects: a 40-person startup, Meridian Insurance (Day 169), and a defense contractor. Pick a model for each and write ONE sentence of justification per choice.
  4. Add a "what we would have to build" list for the air-gapped column β€” this is your honest engineering bill for saying yes to that deal.
guided 2

Build the diagnostic bundle

22 min

You cannot SSH into Meridian's VPC. Build the flashlight you will hand them instead.

  1. Create tools/diagnostic_bundle.py from the starter. It must be safe to run in a customer environment: it reports env-var PRESENCE, never values, and redacts hostnames in output.
  2. Run it locally against your capstone stack. Read the JSON it prints.
  3. Add two checks the starter lacks: (a) reach the vector DB health endpoint; (b) confirm the configured model name matches an allowlist of expected values.
  4. Test the failure paths: unset an env var and point one URL at a dead port; confirm the bundle REPORTS the failures instead of crashing on them.
  5. Commit it. On Day 172 this script is your first move in two of the three debugging scenarios.
🐍 python β€” editable, runs in your browser
Ctrl/⌘+Enter runs · Tab indents · numpy/pandas/sklearn auto-load on import (torch and network calls need a local run)

On your own

The preflight checklist

20 min

Meridian's install is in two weeks. Write docs/preflight-checklist.md β€” the list their platform team completes BEFORE you show up.

Constraints: every item must be verifiable by the customer without you (phrase as commands or yes/no checks, not "ensure networking works"); cover at minimum egress allowlist entries (enumerate the exact hostnames your capstone calls), DNS, proxy/CA-bundle handling, compute sizing, service-account permissions for SharePoint and the IdP app registration (Day 169), secrets delivery, and who is in the room on install day with what access. Cap it at one page β€” a checklist nobody completes is worse than none.

Hints: read your own docker-compose and .env.example and list every external hostname; the CA-bundle item is the one everyone forgets in TLS-inspecting proxies.

Ship before you stop

Environment kit: models doc + bundle + preflight

Assemble today's three artifacts into a coherent "environment kit" in the capstone repo: docs/deployment-models.md (matrix + three prospect calls + air-gapped bill), tools/diagnostic_bundle.py (extended, failure-tested), and docs/preflight-checklist.md (one page, customer-executable). Add a short section to the README pointing support engineers at the kit: when a customer reports trouble, step 1 is "run the bundle, send the JSON." This kit is graded again inside Day 174's simulation, where the prospect demands VPC deployment.

Rubric β€” check what you completed (0/6)

Common mistakes & misconceptions

  • Promising on-prem at SaaS support cost. Every deployment model to the right of SaaS multiplies versions in the wild and slows every debug loop β€” price and staff it, or lose money on every regulated deal.
  • Discovering egress rules on install day. Deny-by-default networks block your LLM API, your package pulls, and your telemetry; enumerate every outbound hostname in the preflight, not in the war room.
  • Forgetting the TLS-inspecting proxy. Customer proxies re-sign traffic with an internal CA; your Python/httpx stack must be pointed at their CA bundle or every HTTPS call fails with a "certificate verify" error that looks like a bug in your code.
  • Diagnostic tools that print secrets. A bundle that dumps env-var values will be (rightly) refused by the customer's security team β€” report presence and shape, never values.
  • Treating customer-managed keys as a checkbox. CMK means the customer can revoke access to their own data at any moment; your restore, migration, and support procedures must assume that power exists.
  • Debugging by asking the customer to "poke around." Untrained hands in a production environment create new incidents; give them ONE command (the bundle) and navigate the rest yourself on a screen-share.
Knowledge check

Q1. A bank says "your product may not send our data outside our AWS account." Which deployment model is the minimum fit?

Q2. Your app works everywhere except one customer, where every HTTPS call fails with a certificate-verification error. Most likely cause?

Q3. The first design rule of a diagnostic bundle script for customer environments is…

Go deeper β€” curated resources

docsAWS docs β€” What is Amazon VPC? β†—20 mincourseAWS Skill Builder β€” networking fundamentals paths β†—30 minarticleReflections on Palantir β€” what field deployment feels like β†—25 min
If you have a third hour
  • Air-gapped LLM serving β€” Sketch what replacing your hosted model with a local vLLM deployment (Day 155) would change: quality evals to re-run (Day 140), GPU sizing, and how model updates ship as files.
Done means
  • Deployment matrix committed with three justified prospect recommendations
  • Diagnostic bundle handles two induced failures without crashing; output secret-free
  • Preflight checklist fits one page and lists your real egress hostnames
  • Quiz β‰₯ 2/3
How this connects

← Back: Day 150 taught VPCs as YOUR infrastructure; today the same picture belongs to the customer and you are the guest. Day 142's redacted tracing and Day 159's security checklist are why anything is debuggable at all in there.

Forward β†’: Day 172 runs incident scenarios where the diagnostic bundle is your opening move. Day 173 prices the support-cost multipliers you tabulated today, and Day 174's prospect demands VPC deployment in writing.

Unlocks: D172 Production Debugging with Customers