Skip to content

Make the workshop subscription-free with two-site labs and presenter Azure demo - #1

Merged
patty-chow merged 2 commits into
mainfrom
workshop/subscription-free-hybrid-20261017
Oct 17, 2026
Merged

patty-chow merged 2 commits into
mainfrom
workshop/subscription-free-hybrid-20261017

Conversation

@patty-chow

Copy link
Copy Markdown
Contributor

Summary

Make the 105-minute ATO workshop subscription-free for attendees while preserving its connection-versus-data lesson.

  • Default attendee scenario runs two independent OSS DocumentDB services, Site A / Site B, with distinct credentials and persisted volumes. It explicitly ignores legacy Azure fields and never seeds Azure.
  • Preserve the original Site A volume and existing .env values; safely add only missing Site B settings. Wait for and seed both local sites with bounded failures.
  • Keep the two MongoDB-driver exercises and non-destructive complete-reference recovery. Target labels and copy confirmation adapt to the configured pair.
  • Add an explicit presenter-only local/Azure override and docs/presenter.md for one existing authorized managed instance. No provisioning is required or performed; old two-cluster provisioning is retained as an optional legacy runbook.
  • Update attendee/instructor/organizer/local docs and the 105-minute schedule. Clearly distinguish the two-site simulation, actual laptop/cloud capstone, application copying, and database replication.
  • Fix interrupted catalog-seed ownership and valid multi-host MongoDB URI parsing without weakening cloud TLS. Make container package metadata readable by the non-root runtime even from restrictive-mode host checkouts.
  • Add Linux CI for offline checks, actual two-server integration, and complete-reference recovery.

Verification

  • macOS Node 24.21: 33 passed, 1 platform-specific skip, 0 failed.
  • Linux Node 24.13 as non-root against the full checkout: 34 passed, 0 skipped, 0 failed.
  • Actual isolated Compose stack using the pinned DocumentDB 0.117 image: both services ready and 216 entries seeded independently in each.
  • Real two-server integration passes: credentials denied cross-site in both directions, independent favorites, partial outcomes, additive round trips, per-database timestamp preservation across retries, migrations, indexes, HTTP target switching, and cloud rejection.
  • Actual HTTP journey: independent initial favorites; 2 copies and an Already-present retry; one favorite copied back; 3 favorites retained and 3 ICS events exported.
  • Actual Site B stop/start: sanitized 503, no silent fallback, explicit switch to Site A still works, recovery succeeds.
  • App restart and starter/reference switching preserve favorites; presenter mode with no Azure URI exposes only local and retains data.
  • Real Chromium: search, Site A-to-B confirmation, Already-present retry result, target switching, desktop layout, and 390px dark-mode no-horizontal-overflow check.
  • Independent review findings corrected: timestamp test now asserts each destination's own first-save time remains stable; legacy cloud runbook links to the presenter path.

Deliberate limits

No Azure resources were created, accessed, or changed. Fresh two-site Codespaces creation, actual presenter Azure round trip, calendar-app import, and a timed classroom rehearsal still require acceptance testing. Two containers in one Codespace are explicitly labeled a simulation, not live hybrid/multicloud or failover.

Compatibility / safety

Existing Site A storage is retained. No normal lab/recovery command deletes volumes or replaces .env. Shared managed Azure clusters are never deleted by the presenter runbook. CI cleanup is scoped to its own ephemeral project.

@patty-chow
patty-chow merged commit e6eae56 into main Oct 17, 2026
1 check passed
@patty-chow
patty-chow deleted the workshop/subscription-free-hybrid-20261017 branch October 19, 2026 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant