{"id":555,"date":"2026-04-14T12:08:18","date_gmt":"2026-04-14T12:08:18","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/google-cloud-immersive-stream-for-xr-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-ai-and-ml\/"},"modified":"2026-04-14T12:08:18","modified_gmt":"2026-04-14T12:08:18","slug":"google-cloud-immersive-stream-for-xr-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-ai-and-ml","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/google-cloud-immersive-stream-for-xr-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-ai-and-ml\/","title":{"rendered":"Google Cloud Immersive Stream for XR Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for AI and ML"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>AI and ML<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>Immersive Stream for XR is a Google Cloud managed service that streams interactive, high-fidelity 3D and extended reality (XR) experiences from cloud GPUs to end-user devices over the network\u2014so users can run visually demanding XR content without owning powerful local hardware.<\/p>\n\n\n\n<p>In simple terms: you render your XR\/3D application in the cloud and stream it to a phone, tablet, or desktop browser so users can interact with it like it\u2019s running locally.<\/p>\n\n\n\n<p>In technical terms: Immersive Stream for XR runs your real-time rendering workload on GPU-backed infrastructure in Google Cloud and delivers the rendered frames and user inputs through a streaming session to a thin client (often a web client). The user\u2019s device becomes primarily an input and display endpoint while the cloud handles heavy compute and graphics rendering. Exact protocols, client SDKs, and packaging requirements can vary by version\u2014verify in the official documentation for the most current details.<\/p>\n\n\n\n<p><strong>What problem it solves:<\/strong> delivering photorealistic, interactive 3D\/XR experiences at scale without requiring customers to download large native apps or buy expensive devices\u2014while giving teams centralized control over updates, security, and performance.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Immersive Stream for XR?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Official purpose<\/h3>\n\n\n\n<p>Immersive Stream for XR is designed to <strong>stream immersive 3D and XR content from Google Cloud<\/strong> to end-user devices, enabling interactive experiences such as product visualization, virtual showrooms, training simulations, and digital twins\u2014without requiring high-end local GPUs.<\/p>\n\n\n\n<blockquote>\n<p>If the service name, onboarding flow, or public availability has changed since you\u2019re reading this, verify the current status on the official product page and documentation:\n&#8211; Product page: https:\/\/cloud.google.com\/immersive-stream\/xr<br\/>\n&#8211; Documentation hub (verify exact path): https:\/\/cloud.google.com\/immersive-stream\/xr\/docs<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities (high-level, non-speculative)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cloud GPU rendering<\/strong> for real-time, interactive 3D\/XR workloads.<\/li>\n<li><strong>Streaming delivery to remote clients<\/strong> (commonly web-based clients).<\/li>\n<li><strong>Centralized publishing and updates<\/strong> so you can roll out new builds without distributing a new native app.<\/li>\n<li><strong>Session-based usage<\/strong> suitable for bursts of traffic (campaigns, launches) or steady enterprise usage.<\/li>\n<li><strong>Integration with Google Cloud services<\/strong> for identity, security, logging, storage, analytics, and ML.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (conceptual model)<\/h3>\n\n\n\n<p>Exact naming in the console\/API may differ; confirm in official docs. Most deployments map to these concepts:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>XR Application Build<\/strong>: Your packaged real-time 3D application (for example, an engine-based build). Packaging format and supported engines\/OS are service-specific\u2014verify in docs.<\/li>\n<li><strong>Assets Storage<\/strong>: Commonly Cloud Storage is used to store build artifacts and\/or supporting content.<\/li>\n<li><strong>Streaming Runtime (Managed)<\/strong>: The managed GPU execution environment that runs the build.<\/li>\n<li><strong>Client (Web or App)<\/strong>: A lightweight client that connects to a session, displays frames, and sends user input.<\/li>\n<li><strong>Session \/ Stream<\/strong>: A time-bounded interactive connection between a user and the cloud-rendered instance.<\/li>\n<li><strong>Backend APIs (Optional)<\/strong>: Your own services (Cloud Run\/GKE\/Compute Engine) for personalization, inventory, user profiles, telemetry, or AI features.<\/li>\n<li><strong>Observability<\/strong>: Cloud Logging and Cloud Monitoring for visibility into usage, errors, and performance.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Service type<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed application streaming \/ GPU-rendering streaming service<\/strong> on Google Cloud.<\/li>\n<li>You typically <strong>do not<\/strong> manage GPU VMs directly in the same way as Compute Engine (though you still must manage your application build lifecycle, release process, and surrounding infrastructure).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scope (regional\/global\/project)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The service is <strong>project-scoped<\/strong> (resources and access controlled by Google Cloud IAM within a project).<\/li>\n<li>Runtime execution is typically <strong>regional<\/strong> (you choose where sessions run to optimize latency and meet data residency needs).<\/li>\n<li>Availability is <strong>region-dependent<\/strong> and may require onboarding. Verify the latest supported regions and access requirements in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How it fits into the Google Cloud ecosystem<\/h3>\n\n\n\n<p>Immersive Stream for XR commonly sits at the \u201cexperience delivery\u201d layer and integrates with:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cloud Storage<\/strong> for build artifacts and assets<\/li>\n<li><strong>Cloud Run \/ GKE \/ App Engine<\/strong> for web backends and APIs<\/li>\n<li><strong>Cloud Load Balancing + Cloud CDN<\/strong> for global web delivery of the client and static assets<\/li>\n<li><strong>Cloud Armor<\/strong> for WAF and DDoS protections on the web edge<\/li>\n<li><strong>Identity Platform \/ IAP (Identity-Aware Proxy)<\/strong> or <strong>Cloud Run IAM<\/strong> for authentication patterns<\/li>\n<li><strong>Cloud Logging \/ Cloud Monitoring<\/strong> for operations<\/li>\n<li><strong>Vertex AI<\/strong> (AI and ML) when your XR experience needs recommendations, computer vision, speech, or generative capabilities (Immersive Stream for XR is not itself a model training service, but it often pairs with AI\/ML backends)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Immersive Stream for XR?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Reduce user friction<\/strong>: Stream to a browser to avoid large downloads and device requirements.<\/li>\n<li><strong>Expand reach<\/strong>: Deliver high-fidelity experiences to mid-range devices.<\/li>\n<li><strong>Faster iteration<\/strong>: Update centrally; users get the latest version immediately.<\/li>\n<li><strong>Campaign readiness<\/strong>: Handle spikes for product launches, marketing campaigns, or events.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Offload rendering<\/strong> to cloud GPUs for consistent quality.<\/li>\n<li><strong>Device independence<\/strong>: The client can be lightweight compared to native XR applications.<\/li>\n<li><strong>Centralized performance control<\/strong>: Tune server-side rendering settings rather than relying on device variance.<\/li>\n<li><strong>API-driven integration<\/strong>: Combine XR experience with real-time product catalogs, pricing, availability, or personalization services.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed runtime<\/strong> reduces the toil of building your own streaming stack.<\/li>\n<li><strong>Standard Google Cloud tooling<\/strong> for IAM, logs, metrics, and security policies.<\/li>\n<li><strong>Release engineering<\/strong> aligns with artifact storage, CI\/CD, and environment promotion patterns.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Centralized control<\/strong> over what code runs, how it is updated, and how users authenticate.<\/li>\n<li><strong>IAM-based administration<\/strong> and auditability (Cloud Audit Logs).<\/li>\n<li><strong>Network controls<\/strong> and edge protection patterns (Load Balancer + Cloud Armor) around your web entry points.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Scale-out sessions<\/strong> to handle concurrency (within quotas and capacity constraints).<\/li>\n<li><strong>Latency-aware regional placement<\/strong> to reduce interaction lag.<\/li>\n<li><strong>Global web delivery<\/strong> via Cloud CDN for the client assets.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose it<\/h3>\n\n\n\n<p>Choose Immersive Stream for XR when you need:\n&#8211; Photorealistic interactive 3D\/XR\n&#8211; Broad device reach (especially via web)\n&#8211; Fast iteration and centralized control\n&#8211; A managed approach rather than building an end-to-end GPU streaming platform<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose it<\/h3>\n\n\n\n<p>It\u2019s usually not the best fit when:\n&#8211; Users must run fully offline or with unreliable connectivity\n&#8211; You only need pre-rendered video (a CDN might suffice)\n&#8211; You can meet quality\/performance needs with native mobile rendering at acceptable device requirements\n&#8211; You must fully control the GPU host layer, custom drivers, or highly specialized networking beyond what the managed service exposes\n&#8211; You have strict requirements that the managed service cannot meet (verify supported compliance, regions, and controls)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Immersive Stream for XR used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Retail and e-commerce (3D product visualization, virtual try-ons)<\/li>\n<li>Automotive (vehicle configurators, virtual showrooms)<\/li>\n<li>Manufacturing (digital twins, maintenance visualization)<\/li>\n<li>Architecture\/engineering\/construction (AEC) (interactive walkthroughs)<\/li>\n<li>Healthcare (training simulations\u2014subject to compliance validation)<\/li>\n<li>Education and training (labs, simulations)<\/li>\n<li>Media and entertainment (interactive experiences, branded activations)<\/li>\n<li>Real estate (virtual tours)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>3D\/XR developers and technical artists<\/li>\n<li>Web developers integrating streaming clients into websites<\/li>\n<li>Platform\/DevOps teams building secure, scalable delivery<\/li>\n<li>Security engineers reviewing authentication, data exposure, and edge controls<\/li>\n<li>Architects designing low-latency global delivery patterns<\/li>\n<li>Product teams running campaigns and measuring engagement<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Interactive 3D product configurators<\/li>\n<li>Training simulations<\/li>\n<li>Remote expert assistance (where video + 3D overlay is required)<\/li>\n<li>Digital twin exploration and monitoring dashboards (paired with IoT backends)<\/li>\n<li>Sales enablement tools for field teams (thin client, centralized updates)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Web client + streaming sessions + backend APIs + analytics pipeline<\/li>\n<li>Multi-region web edge + region-local streaming runtimes<\/li>\n<li>Identity-protected portal for enterprise users<\/li>\n<li>Public marketing site with rate limiting and bot protection<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Embedded into a product detail page (\u201cView in 3D\/AR\/VR\u201d)<\/li>\n<li>Standalone microsite for a launch event<\/li>\n<li>Internal enterprise portal for training or design reviews<\/li>\n<li>Partner portals (dealers, resellers) with authenticated access<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Production vs dev\/test usage<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dev\/test<\/strong>: smaller concurrency, shorter sessions, frequent build uploads, heavy debugging logs<\/li>\n<li><strong>Production<\/strong>: stable releases, controlled rollouts, CDN-fronted client assets, strict IAM, monitoring alerts, cost controls, and quota planning<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic patterns where Immersive Stream for XR is commonly applied.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Web-based 3D product configurator<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Users abandon experiences that require downloads or expensive devices.<\/li>\n<li><strong>Why this service fits:<\/strong> Streams high-fidelity rendering to commodity devices via a thin client.<\/li>\n<li><strong>Example:<\/strong> A furniture retailer streams a photoreal living-room scene where users change fabrics and lighting in real time.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Automotive virtual showroom<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Dealership-quality visualization is hard on mobile devices.<\/li>\n<li><strong>Why this service fits:<\/strong> Cloud GPU rendering enables premium visuals with consistent quality.<\/li>\n<li><strong>Example:<\/strong> A car brand offers a browser-based \u201cwalk around the car,\u201d swap trims, and view interior details on a phone.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Sales enablement for field teams<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Sales reps use varied devices; local performance varies.<\/li>\n<li><strong>Why this service fits:<\/strong> Centralizes compute; the device becomes a viewer\/controller.<\/li>\n<li><strong>Example:<\/strong> A B2B equipment manufacturer streams an interactive 3D demo to tablets used by reps.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Interactive training simulation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Training labs require expensive workstations or complex installs.<\/li>\n<li><strong>Why this service fits:<\/strong> No heavy client installation; update simulations centrally.<\/li>\n<li><strong>Example:<\/strong> A safety training module is streamed to trainees\u2019 laptops through a secure portal.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Digital twin exploration (paired with IoT\/analytics)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Digital twins can be too heavy for typical endpoints.<\/li>\n<li><strong>Why this service fits:<\/strong> Offloads 3D rendering; backend services provide real-time telemetry overlays.<\/li>\n<li><strong>Example:<\/strong> A factory streams a 3D plant model; sensor data overlays come from Pub\/Sub + BigQuery.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Architecture walkthrough for clients<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> AEC models are large; clients don\u2019t want specialized software.<\/li>\n<li><strong>Why this service fits:<\/strong> Stream the walkthrough in a browser with consistent performance.<\/li>\n<li><strong>Example:<\/strong> A firm sends a link to a client for an interactive walkthrough of a building design.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Personalized XR experiences driven by AI<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Personalized content selection can be complex and compute-heavy.<\/li>\n<li><strong>Why this service fits:<\/strong> Combine streamed XR with Vertex AI for personalization or generative content.<\/li>\n<li><strong>Example:<\/strong> A fashion brand uses Vertex AI to recommend outfits, while the XR view is streamed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Global product launch microsite<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Traffic spikes and wide device diversity during launches.<\/li>\n<li><strong>Why this service fits:<\/strong> Managed sessions plus Google Cloud edge patterns for scale.<\/li>\n<li><strong>Example:<\/strong> A consumer electronics launch includes an interactive \u201ctear-down\u201d 3D model streamed worldwide.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Partner training portal with strong access controls<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Need to restrict access to certified partners.<\/li>\n<li><strong>Why this service fits:<\/strong> Integrates with Google Cloud IAM \/ enterprise identity patterns.<\/li>\n<li><strong>Example:<\/strong> A distributor portal requires login and streams training modules to partners.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Remote design review sessions<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Large CAD\/3D scenes are hard to share interactively.<\/li>\n<li><strong>Why this service fits:<\/strong> The cloud renders; reviewers connect from lightweight devices.<\/li>\n<li><strong>Example:<\/strong> A design team runs review sessions with stakeholders using browsers.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Museum or education interactive exhibit<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Exhibit devices are limited and must be easy to reset\/maintain.<\/li>\n<li><strong>Why this service fits:<\/strong> Thin client endpoints; centralized updates and controlled runtime.<\/li>\n<li><strong>Example:<\/strong> A museum kiosk streams an interactive ancient city reconstruction.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Customer support visualization<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Explaining complex hardware issues over phone\/video is inefficient.<\/li>\n<li><strong>Why this service fits:<\/strong> Interactive 3D can reduce resolution time without requiring the customer to install heavy tools.<\/li>\n<li><strong>Example:<\/strong> Support agents share a session link; customers interact with a 3D model to identify parts.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<p>Because service capabilities evolve, confirm details against current official docs. The features below focus on stable, generally applicable aspects of Immersive Stream for XR.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Managed cloud rendering and streaming<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Runs your 3D\/XR application on managed GPU infrastructure and streams the output to a client.<\/li>\n<li><strong>Why it matters:<\/strong> Removes the need for end-user GPUs and simplifies distribution.<\/li>\n<li><strong>Practical benefit:<\/strong> Users get a high-end experience on ordinary devices.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Requires reliable network connectivity; latency-sensitive; GPU capacity and regional availability can constrain scale.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Session-based delivery model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Provides interactive sessions\/streams for users.<\/li>\n<li><strong>Why it matters:<\/strong> Sessions map cleanly to usage measurement, concurrency planning, and user journeys.<\/li>\n<li><strong>Practical benefit:<\/strong> You can design time-bounded experiences (e.g., 3\u201310 minute product exploration) and control resource consumption.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Long-running sessions can become expensive; enforce timeouts and idle handling in your app\/client.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Centralized build publishing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Lets you deploy new builds centrally (often via Cloud Storage + service configuration).<\/li>\n<li><strong>Why it matters:<\/strong> You control what is executed and when it updates.<\/li>\n<li><strong>Practical benefit:<\/strong> Instant rollouts and rollbacks without app store approvals.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Build formats and upload flows are service-specific\u2014verify supported packaging and size limits.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Browser-friendly consumption (commonly web integration)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Enables end-user access through a thin client that can be embedded in web experiences (implementation depends on SDK\/client).<\/li>\n<li><strong>Why it matters:<\/strong> Web is the broadest distribution channel.<\/li>\n<li><strong>Practical benefit:<\/strong> Embed XR into existing sites and funnels.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Browser compatibility, autoplay\/audio policies, and device limitations apply. Verify supported browsers\/devices in docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Integration with Google Cloud IAM and audit logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Uses Google Cloud identity and policy controls for admin access and records administrative actions.<\/li>\n<li><strong>Why it matters:<\/strong> Enterprises need traceability and least privilege.<\/li>\n<li><strong>Practical benefit:<\/strong> Controlled access to deployments, configs, and sensitive artifacts.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> End-user authentication is usually implemented in your web app layer (or via service mechanisms)\u2014design it explicitly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Observability via Cloud Logging\/Monitoring (environment-dependent)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Supports operational monitoring and logging through standard Google Cloud tools (exact metrics\/logs depend on service).<\/li>\n<li><strong>Why it matters:<\/strong> You need visibility into errors, session failures, latency, and usage.<\/li>\n<li><strong>Practical benefit:<\/strong> Alerts on session failure rate, capacity pressure, or client errors.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Some app-level telemetry must be instrumented by you.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security and edge protection patterns (via surrounding GCP services)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> While the streaming runtime is managed, you typically secure the entry web app using Cloud Load Balancing, Cloud CDN, Cloud Armor, and strong auth.<\/li>\n<li><strong>Why it matters:<\/strong> Public XR experiences are attractive bot\/abuse targets.<\/li>\n<li><strong>Practical benefit:<\/strong> Rate limiting, geo policies, WAF rules, and DDoS protection at the edge.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> These controls sit around your client\/backend entry points; validate how session initiation is protected.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">API-driven backends for personalization and data<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Lets you integrate with your APIs for user-specific configurations, product catalogs, analytics events, and AI inferences.<\/li>\n<li><strong>Why it matters:<\/strong> Most XR is not \u201cstandalone\u201d; it needs business data.<\/li>\n<li><strong>Practical benefit:<\/strong> Real-time personalization, inventory-aware configurators, saved configurations.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Keep backend latency low; streaming is latency-sensitive.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level architecture<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>User opens a web page (your site) that contains a client capable of initiating an Immersive Stream for XR session.<\/li>\n<li>Your backend (optional but common) authenticates the user and issues a short-lived session token or authorizes session creation.<\/li>\n<li>Immersive Stream for XR starts\/assigns a GPU-rendered instance running your XR app.<\/li>\n<li>The client connects to the streaming session endpoint and begins receiving rendered frames while sending input events.<\/li>\n<li>Telemetry, logs, and analytics are collected for ops and product measurement.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow (conceptual)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane (admin):<\/strong> upload builds, configure deployments, set concurrency limits, manage access.<\/li>\n<li><strong>Data plane (runtime):<\/strong> streaming frames to the user; input events back to the app.<\/li>\n<li><strong>App data plane:<\/strong> calls from XR app to your backend APIs (catalog, auth, personalization).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related services<\/h3>\n\n\n\n<p>Common patterns on Google Cloud:\n&#8211; <strong>Cloud Storage<\/strong> for build artifacts and static assets\n&#8211; <strong>Cloud Run<\/strong> for lightweight APIs (session broker, user profile service)\n&#8211; <strong>Identity Platform<\/strong> or <strong>Cloud Run IAM<\/strong> for authentication\n&#8211; <strong>Cloud Load Balancing + Cloud CDN<\/strong> for global web delivery\n&#8211; <strong>Cloud Armor<\/strong> for WAF\/rate limiting\n&#8211; <strong>Secret Manager<\/strong> for API keys\/tokens used by your backend\n&#8211; <strong>Cloud Logging + Monitoring<\/strong> for observability\n&#8211; <strong>BigQuery<\/strong> for analytics and reporting\n&#8211; <strong>Vertex AI<\/strong> for AI\/ML features (recommendations, generative assistants, vision\/speech)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Billing-enabled Google Cloud project<\/strong><\/li>\n<li><strong>Networking\/edge services<\/strong> for client delivery (recommended)<\/li>\n<li><strong>Artifact storage<\/strong> (commonly Cloud Storage)<\/li>\n<li><strong>Identity<\/strong> (Google Cloud IAM for admins; your chosen method for users)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Admin access<\/strong>: Google Cloud IAM roles and policies.<\/li>\n<li><strong>End-user access<\/strong>: typically your responsibility\u2014protect the website and any \u201csession broker\u201d API you build.<\/li>\n<li><strong>Session initiation<\/strong>: should require authorization and short-lived credentials to reduce abuse risk.<\/li>\n<li><strong>Audit<\/strong>: Cloud Audit Logs for administrative actions; application logs for user flows.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>End users connect over the public internet.<\/li>\n<li>Reduce latency by choosing regions close to users.<\/li>\n<li>Deliver web assets through Cloud CDN.<\/li>\n<li>Protect entry points with Cloud Armor.<\/li>\n<li>For enterprise\/internal scenarios, you may restrict access to corporate networks\/VPN and use identity-aware controls.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Track:<\/li>\n<li>Session creation rate and failure rate<\/li>\n<li>Session duration distribution<\/li>\n<li>Client error rates<\/li>\n<li>Backend API latency (p95\/p99)<\/li>\n<li>Egress traffic (cost and performance)<\/li>\n<li>Governance:<\/li>\n<li>Label resources by environment (dev\/stage\/prod), app version, cost center<\/li>\n<li>Use budgets and alerts<\/li>\n<li>Use least privilege IAM roles and separate projects per environment<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (conceptual)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  U[User Device&lt;br\/&gt;Browser\/Client] --&gt;|HTTPS| W[Web App&lt;br\/&gt;(Static site)]\n  W --&gt;|Start session| B[Session Broker API&lt;br\/&gt;(optional)]\n  B --&gt;|Authorize\/Create session| IS[Immersive Stream for XR&lt;br\/&gt;(Managed GPU streaming)]\n  IS --&gt;|Stream frames + audio| U\n  U --&gt;|Input events| IS\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (recommended pattern)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  U[Users&lt;br\/&gt;Browsers\/Devices] --&gt; CDN[Cloud CDN]\n  CDN --&gt; LB[External HTTPS Load Balancer]\n  LB --&gt; ARM[Cloud Armor&lt;br\/&gt;WAF + Rate limiting]\n\n  ARM --&gt; WEB[Web Frontend&lt;br\/&gt;(Cloud Run or Firebase Hosting)]\n  ARM --&gt; API[Backend API&lt;br\/&gt;(Cloud Run \/ GKE)]\n\n  WEB --&gt;|Session init| API\n  API --&gt;|AuthN\/AuthZ| IDP[Identity Platform \/ SSO&lt;br\/&gt;(or Cloud Run IAM)]\n  API --&gt;|Create\/authorize streaming session| IS[Immersive Stream for XR]\n\n  IS --&gt;|Streaming data plane| U\n\n  API --&gt; SM[Secret Manager]\n  API --&gt; DB[(Cloud SQL \/ Firestore)]\n  API --&gt; BQ[(BigQuery Analytics)]\n  WEB --&gt; LOG[Cloud Logging]\n  API --&gt; LOG\n  IS --&gt; LOG\n  LOG --&gt; MON[Cloud Monitoring&lt;br\/&gt;Dashboards + Alerts]\n\n  ART[(Cloud Storage&lt;br\/&gt;Builds\/Assets)] --&gt; IS\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<p>Because Immersive Stream for XR can require specific enablement\/onboarding, treat prerequisites as two layers: <strong>general Google Cloud setup<\/strong> and <strong>service-specific access<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google Cloud account\/project requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A Google Cloud account with a <strong>billing-enabled<\/strong> project.<\/li>\n<li>Ability to create and manage:<\/li>\n<li>Cloud Storage buckets<\/li>\n<li>Cloud Run services (or another hosting option)<\/li>\n<li>IAM policies and service accounts<\/li>\n<li>Logging\/Monitoring resources<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM roles<\/h3>\n\n\n\n<p>Minimum recommended roles for a lab environment (adjust for least privilege in production):\n&#8211; <code>roles\/owner<\/code> (lab only) or a combination of:\n  &#8211; <code>roles\/resourcemanager.projectIamAdmin<\/code> (IAM administration)\n  &#8211; <code>roles\/serviceusage.serviceUsageAdmin<\/code> (enable APIs)\n  &#8211; <code>roles\/storage.admin<\/code> (Cloud Storage)\n  &#8211; <code>roles\/run.admin<\/code> + <code>roles\/iam.serviceAccountUser<\/code> (Cloud Run deployments)\n  &#8211; Access roles required by Immersive Stream for XR (verify in official docs; roles may be product-specific)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Billing must be enabled.<\/li>\n<li>You should set:<\/li>\n<li>A <strong>budget and alerts<\/strong> (Cloud Billing)<\/li>\n<li>Optional: programmatic quotas\/limits in your app to avoid runaway sessions<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">CLI\/SDK\/tools needed<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cloud.google.com\/sdk\/docs\/install\">Google Cloud SDK (<code>gcloud<\/code>)<\/a><\/li>\n<li><code>gsutil<\/code> (included with Cloud SDK)<\/li>\n<li><code>curl<\/code> (optional)<\/li>\n<li>A code editor<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Immersive Stream for XR availability is <strong>region-dependent<\/strong> and may be limited.<\/li>\n<li>Verify supported regions and quotas in official docs:<\/li>\n<li>https:\/\/cloud.google.com\/immersive-stream\/xr\/docs (verify region\/locations page)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<p>Common limit categories to verify:\n&#8211; Maximum concurrent sessions\/streams\n&#8211; Maximum session duration\n&#8211; Build artifact size limits\n&#8211; Per-project limits\n&#8211; API rate limits\nAlways validate current quotas in:\n&#8211; Google Cloud Console \u2192 IAM &amp; Admin \/ Quotas\n&#8211; Service documentation<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services (typical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud Storage (artifact storage)<\/li>\n<li>Cloud Run (hosting the web client and optional backend)<\/li>\n<li>Cloud Logging\/Monitoring (observability)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<p>Immersive Stream for XR pricing can be <strong>usage-based<\/strong> and may also involve <strong>contracted capacity<\/strong> depending on the offering and your agreement with Google Cloud. Do not assume a single public per-hour price.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Official pricing source (start here)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pricing page (verify current URL): https:\/\/cloud.google.com\/immersive-stream\/xr\/pricing  <\/li>\n<li>Google Cloud Pricing Calculator: https:\/\/cloud.google.com\/products\/calculator<\/li>\n<\/ul>\n\n\n\n<p>If the pricing page does not list public SKUs, pricing may be <strong>quote-based<\/strong>; in that case, use the calculator for surrounding services (CDN, Load Balancing, Cloud Run, Storage, Logging) and request a quote for streaming runtime.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing dimensions (typical cost drivers to confirm)<\/h3>\n\n\n\n<p>Verify the exact billing metrics for Immersive Stream for XR in official pricing docs, but expect these categories:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Streaming runtime usage<\/strong><\/li>\n<li>Often measured by <strong>session minutes<\/strong> or <strong>streaming minutes<\/strong> and\/or <strong>concurrent capacity<\/strong><\/li>\n<li>\n<p>GPU-backed runtime is usually the primary cost driver<\/p>\n<\/li>\n<li>\n<p><strong>Network egress<\/strong><\/p>\n<\/li>\n<li>Streaming sends a continuous flow of data to users; egress can be significant<\/li>\n<li>\n<p>Egress costs vary by destination (region, continent) and whether CDN\/edge changes apply (CDN helps for static assets, but streaming traffic may not be cacheable)<\/p>\n<\/li>\n<li>\n<p><strong>Build storage<\/strong><\/p>\n<\/li>\n<li>\n<p>Cloud Storage for builds\/assets (typically small compared to streaming)<\/p>\n<\/li>\n<li>\n<p><strong>Web and backend hosting<\/strong><\/p>\n<\/li>\n<li>Cloud Run CPU\/memory time<\/li>\n<li>External HTTPS Load Balancer<\/li>\n<li>Cloud CDN (for static web assets)<\/li>\n<li>Cloud Armor (policy charges may apply)<\/li>\n<li>Logging\/Monitoring ingestion and retention<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden or indirect costs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Observability volume<\/strong>: verbose client telemetry can increase log ingestion.<\/li>\n<li><strong>Load testing<\/strong>: synthetic concurrency tests can create many billable stream minutes.<\/li>\n<li><strong>Multi-region deployments<\/strong>: duplicating builds and configs in multiple regions increases operational overhead.<\/li>\n<li><strong>Support\/ops<\/strong>: on-call and incident response for latency-sensitive experiences.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network\/data transfer implications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Streaming experiences are typically <strong>high-throughput and latency-sensitive<\/strong>:<\/li>\n<li>Place runtime regions close to users.<\/li>\n<li>Use CDN for static assets (web client, JS, textures if separately fetched).<\/li>\n<li>Be cautious: the streaming data itself may not benefit from caching.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost (practical guidance)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Design for short sessions<\/strong> (e.g., 2\u20138 minutes) with clear user journeys.<\/li>\n<li><strong>Implement idle timeouts<\/strong> in the client and experience.<\/li>\n<li><strong>Use a session broker<\/strong> to enforce:<\/li>\n<li>authentication<\/li>\n<li>rate limiting per user\/IP<\/li>\n<li>maximum session duration<\/li>\n<li><strong>Progressive experience<\/strong>: start with lower quality, ramp up after user engagement is confirmed (if supported).<\/li>\n<li><strong>Budget controls<\/strong>:<\/li>\n<li>Cloud Billing budgets + alerts<\/li>\n<li>Application-side hard limits on sessions\/day<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (framework, not numbers)<\/h3>\n\n\n\n<p>A low-cost proof of concept typically includes:\n&#8211; A single region deployment\n&#8211; A simple static web client (Cloud Run or Firebase Hosting)\n&#8211; Limited internal testers (small concurrency)\n&#8211; Short sessions\nCompute costs for:\n&#8211; Web hosting (Cloud Run)\n&#8211; Storage (Cloud Storage)\n&#8211; Logs (Cloud Logging)\nAnd request\/confirm:\n&#8211; Immersive Stream for XR streaming runtime pricing based on expected test minutes and concurrency<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations (framework)<\/h3>\n\n\n\n<p>For production, build a cost model around:\n&#8211; Peak concurrent sessions \u00d7 average session length \u00d7 expected days\/month\n&#8211; Egress per session (measure in pilot)\n&#8211; Multi-region capacity and failover\n&#8211; Security edge services (Cloud Armor, LB)\n&#8211; Observability and analytics (BigQuery)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab focuses on a realistic, executable foundation you can use for an Immersive Stream for XR rollout: a <strong>secure session broker + hosted web client<\/strong> on Google Cloud. You will be able to deploy and validate everything end-to-end <strong>except the actual XR stream connection<\/strong> unless your project is already enabled for Immersive Stream for XR and you have the required service configuration details.<\/p>\n\n\n\n<p>Where service-specific identifiers or APIs are required, the lab clearly marks them as <strong>\u201cverify in official docs\u201d<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<p>Deploy a minimal web application and backend on Google Cloud that:\n1. Serves a web page where your Immersive Stream for XR client would load.\n2. Provides a backend \u201csession broker\u201d endpoint that can later request\/authorize streaming sessions.\n3. Enforces authentication for the broker using Cloud Run IAM (Google sign-in).\n4. Stores configuration in environment variables and demonstrates safe patterns (no secrets in frontend).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Create a Google Cloud project and enable required APIs.\n2. Create a Cloud Storage bucket for build artifacts (placeholder for now).\n3. Deploy a Cloud Run backend (session broker).\n4. Deploy a Cloud Run frontend (static site) that calls the broker.\n5. Validate authentication, logs, and connectivity.\n6. Clean up.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> You\u2019ll have a production-shaped skeleton that\u2019s ready to integrate with Immersive Stream for XR session creation once you add the service-specific API calls and identifiers from official docs.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Create and configure your project<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Set variables:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">export PROJECT_ID=\"isxr-lab-$(date +%Y%m%d)-$RANDOM\"\nexport REGION=\"us-central1\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Create the project:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">gcloud projects create \"$PROJECT_ID\"\ngcloud config set project \"$PROJECT_ID\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Link billing (choose your billing account):<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">gcloud billing accounts list\n# Replace BILLING_ACCOUNT_ID with your account\ngcloud billing projects link \"$PROJECT_ID\" --billing-account=\"BILLING_ACCOUNT_ID\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> A billing-enabled project exists and is set as the active project.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Enable required APIs<\/h3>\n\n\n\n<p>Enable the APIs used by this lab:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud services enable \\\n  run.googleapis.com \\\n  cloudbuild.googleapis.com \\\n  artifactregistry.googleapis.com \\\n  storage.googleapis.com \\\n  iam.googleapis.com \\\n  logging.googleapis.com \\\n  monitoring.googleapis.com\n<\/code><\/pre>\n\n\n\n<p>If your project already has access to Immersive Stream for XR, also enable its API <strong>using the exact service name from official docs<\/strong> (the API name can change; do not guess).<br\/>\nTo discover enabled\/available services:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud services list --available | grep -i immersive\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Cloud Run and related services are enabled.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Create a Cloud Storage bucket (artifact placeholder)<\/h3>\n\n\n\n<p>Create a bucket to hold XR builds\/assets (even if you don\u2019t upload anything in this lab):<\/p>\n\n\n\n<pre><code class=\"language-bash\">export BUCKET_NAME=\"${PROJECT_ID}-isxr-artifacts\"\ngsutil mb -l \"$REGION\" \"gs:\/\/${BUCKET_NAME}\"\n<\/code><\/pre>\n\n\n\n<p>Apply basic best-practice settings:<\/p>\n\n\n\n<pre><code class=\"language-bash\"># Uniform bucket-level access\ngsutil uniformbucketlevelaccess set on \"gs:\/\/${BUCKET_NAME}\"\n\n# Optional: enable versioning (useful for rollbacks)\ngsutil versioning set on \"gs:\/\/${BUCKET_NAME}\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> A regional bucket exists and is ready to store build artifacts.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Deploy a session broker backend on Cloud Run<\/h3>\n\n\n\n<p>The broker will:\n&#8211; Require authentication (Cloud Run IAM)\n&#8211; Return a placeholder \u201csession config\u201d object\n&#8211; Provide a clear place to implement Immersive Stream for XR session creation later<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4.1 Create backend source code<\/h4>\n\n\n\n<p>Create a directory:<\/p>\n\n\n\n<pre><code class=\"language-bash\">mkdir -p isxr-broker\ncd isxr-broker\n<\/code><\/pre>\n\n\n\n<p>Create <code>package.json<\/code>:<\/p>\n\n\n\n<pre><code class=\"language-bash\">cat &gt; package.json &lt;&lt;'EOF'\n{\n  \"name\": \"isxr-broker\",\n  \"version\": \"1.0.0\",\n  \"main\": \"server.js\",\n  \"license\": \"Apache-2.0\",\n  \"dependencies\": {\n    \"express\": \"^4.19.2\"\n  }\n}\nEOF\n<\/code><\/pre>\n\n\n\n<p>Create <code>server.js<\/code>:<\/p>\n\n\n\n<pre><code class=\"language-bash\">cat &gt; server.js &lt;&lt;'EOF'\nconst express = require('express');\nconst app = express();\n\napp.use(express.json());\n\n\/\/ Health check\napp.get('\/healthz', (req, res) =&gt; {\n  res.status(200).send('ok');\n});\n\n\/**\n * Session broker endpoint.\n * In production, this should:\n * - verify user identity (Cloud Run IAM already enforces auth at the perimeter)\n * - apply authorization and rate limiting\n * - call Immersive Stream for XR APIs to create\/authorize a session (verify official docs)\n * - return only short-lived session info to the client\n *\/\napp.post('\/session', async (req, res) =&gt; {\n  const userHint = req.get('X-Goog-Authenticated-User-Email') || 'unknown';\n\n  \/\/ These environment variables are placeholders for Immersive Stream for XR integration.\n  \/\/ Verify exact required identifiers and parameters in official docs.\n  const config = {\n    immersiveStream: {\n      projectId: process.env.PROJECT_ID,\n      region: process.env.REGION,\n      experienceId: process.env.ISXR_EXPERIENCE_ID || null,\n      \/\/ endpoint\/token would be created per-session, do not hardcode for production\n    },\n    user: {\n      authenticatedEmail: userHint\n    }\n  };\n\n  res.status(200).json({\n    message: \"Broker is running. Integrate Immersive Stream for XR session creation here (verify official docs).\",\n    config\n  });\n});\n\nconst port = process.env.PORT || 8080;\napp.listen(port, () =&gt; {\n  console.log(`Broker listening on port ${port}`);\n});\nEOF\n<\/code><\/pre>\n\n\n\n<p>Create <code>Dockerfile<\/code>:<\/p>\n\n\n\n<pre><code class=\"language-bash\">cat &gt; Dockerfile &lt;&lt;'EOF'\nFROM node:20-slim\nWORKDIR \/app\nCOPY package.json package-lock.json* .\/\nRUN npm install --omit=dev\nCOPY server.js .\/\nENV PORT=8080\nCMD [\"node\", \"server.js\"]\nEOF\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">4.2 Deploy to Cloud Run (authenticated)<\/h4>\n\n\n\n<pre><code class=\"language-bash\">gcloud run deploy isxr-broker \\\n  --source . \\\n  --region \"$REGION\" \\\n  --no-allow-unauthenticated \\\n  --set-env-vars \"PROJECT_ID=$PROJECT_ID,REGION=$REGION\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> A Cloud Run service named <code>isxr-broker<\/code> is deployed and requires authentication.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Deploy a frontend web app on Cloud Run<\/h3>\n\n\n\n<p>This frontend is a static page that:\n&#8211; Displays a \u201cConnect\u201d button\n&#8211; Calls the broker <code>\/session<\/code> endpoint using <code>fetch<\/code>\n&#8211; Prints the returned JSON<\/p>\n\n\n\n<p>This demonstrates the secure pattern: <strong>frontend calls your broker<\/strong>, broker later calls Immersive Stream for XR.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5.1 Create frontend source<\/h4>\n\n\n\n<p>Go back to a new directory:<\/p>\n\n\n\n<pre><code class=\"language-bash\">cd ..\nmkdir -p isxr-web\ncd isxr-web\n<\/code><\/pre>\n\n\n\n<p>Create <code>index.html<\/code>:<\/p>\n\n\n\n<pre><code class=\"language-bash\">cat &gt; index.html &lt;&lt;'EOF'\n&lt;!doctype html&gt;\n&lt;html&gt;\n&lt;head&gt;\n  &lt;meta charset=\"utf-8\" \/&gt;\n  &lt;meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" \/&gt;\n  &lt;title&gt;Immersive Stream for XR - Lab Skeleton&lt;\/title&gt;\n  &lt;style&gt;\n    body { font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; margin: 2rem; }\n    button { padding: 0.7rem 1rem; font-size: 1rem; }\n    pre { background: #f6f8fa; padding: 1rem; overflow: auto; }\n    .note { color: #333; max-width: 70ch; }\n  &lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;h2&gt;Immersive Stream for XR (Google Cloud) - Web Skeleton&lt;\/h2&gt;\n  &lt;p class=\"note\"&gt;\n    This page is a minimal foundation for an Immersive Stream for XR integration.\n    It calls a secure session broker (Cloud Run) which will later create\/authorize XR streaming sessions.\n  &lt;\/p&gt;\n\n  &lt;button id=\"btn\"&gt;Request session config&lt;\/button&gt;\n  &lt;pre id=\"out\"&gt;(output will appear here)&lt;\/pre&gt;\n\n  &lt;script&gt;\n    const out = document.getElementById('out');\n    document.getElementById('btn').addEventListener('click', async () =&gt; {\n      out.textContent = \"Calling broker...\";\n      try {\n        \/\/ Broker URL is injected at build\/deploy time as a placeholder string replacement.\n        const brokerUrl = \"__BROKER_URL__\";\n        const resp = await fetch(brokerUrl + \"\/session\", { method: \"POST\" });\n        const txt = await resp.text();\n        out.textContent = txt;\n      } catch (e) {\n        out.textContent = \"Error: \" + (e &amp;&amp; e.message ? e.message : String(e));\n      }\n    });\n  &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\nEOF\n<\/code><\/pre>\n\n\n\n<p>Create a tiny NGINX container:<\/p>\n\n\n\n<pre><code class=\"language-bash\">cat &gt; Dockerfile &lt;&lt;'EOF'\nFROM nginx:1.27-alpine\nCOPY index.html \/usr\/share\/nginx\/html\/index.html\nEOF\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">5.2 Inject broker URL and deploy<\/h4>\n\n\n\n<p>Get the broker URL:<\/p>\n\n\n\n<pre><code class=\"language-bash\">export BROKER_URL=\"$(gcloud run services describe isxr-broker --region \"$REGION\" --format='value(status.url)')\"\necho \"$BROKER_URL\"\n<\/code><\/pre>\n\n\n\n<p>Replace placeholder in <code>index.html<\/code>:<\/p>\n\n\n\n<pre><code class=\"language-bash\">sed -i.bak \"s|__BROKER_URL__|$BROKER_URL|g\" index.html\n<\/code><\/pre>\n\n\n\n<p>Deploy the web service. For simplicity, this frontend can be public, while the broker is protected:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud run deploy isxr-web \\\n  --source . \\\n  --region \"$REGION\" \\\n  --allow-unauthenticated\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> A public URL serves a page with a button that calls the protected broker endpoint.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Grant yourself permission to invoke the broker<\/h3>\n\n\n\n<p>Because the broker requires authentication, you must have the <code>run.invoker<\/code> role on that service.<\/p>\n\n\n\n<p>Grant it to your user:<\/p>\n\n\n\n<pre><code class=\"language-bash\">export USER_EMAIL=\"$(gcloud config get-value account)\"\ngcloud run services add-iam-policy-binding isxr-broker \\\n  --region \"$REGION\" \\\n  --member=\"user:${USER_EMAIL}\" \\\n  --role=\"roles\/run.invoker\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> When your browser is logged in as that user, it can invoke the broker.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open the <code>isxr-web<\/code> URL:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">gcloud run services describe isxr-web --region \"$REGION\" --format='value(status.url)'\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Click <strong>Request session config<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p>What you should see:\n&#8211; A response body that includes:\n  &#8211; A message indicating the broker is running\n  &#8211; A JSON config with your project and region<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Verify broker authentication behavior:\n&#8211; Open the broker URL directly in a browser (or <code>curl<\/code> without auth) and confirm it rejects unauthenticated requests.<\/li>\n<\/ol>\n\n\n\n<p>Broker URL:<\/p>\n\n\n\n<pre><code class=\"language-bash\">echo \"$BROKER_URL\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>Check logs:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">gcloud logging read \\\n  'resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"isxr-broker\"' \\\n  --limit=20 --format=\"value(textPayload)\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> You can see request logs confirming broker invocation.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p><strong>Issue: <code>403 Forbidden<\/code> when calling broker from the frontend<\/strong>\n&#8211; Cause: Broker requires authentication; the frontend\u2019s browser request is not authenticated for that service.\n&#8211; Fix options:\n  1. Keep broker private and call it only from authenticated environments (enterprise portal patterns).\n  2. Use an identity-aware approach for end users:\n     &#8211; Put the broker behind an external HTTPS load balancer + IAP (Identity-Aware Proxy), or\n     &#8211; Implement end-user auth in the frontend (Identity Platform) and exchange tokens at the broker.\n&#8211; Note: The right approach depends on your product\u2019s audience. Verify official Google Cloud guidance for Cloud Run + IAP patterns.<\/p>\n\n\n\n<p><strong>Issue: Browser CORS errors<\/strong>\n&#8211; Cause: If you later call cross-origin endpoints, CORS must be configured.\n&#8211; Fix: Add CORS headers at the broker for your web origin (be strict in production).<\/p>\n\n\n\n<p><strong>Issue: High latency \/ poor responsiveness (future streaming integration)<\/strong>\n&#8211; Common causes:\n  &#8211; Region too far from users\n  &#8211; Mobile network variability\n  &#8211; Backend API latency interfering with experience logic\n&#8211; Fix: choose closer regions, reduce payloads, prefetch data, and instrument p95\/p99 latency.<\/p>\n\n\n\n<p><strong>Issue: Immersive Stream for XR API not visible<\/strong>\n&#8211; Cause: Service may require onboarding\/enablement.\n&#8211; Fix: Follow the official onboarding steps on the product\/docs page and confirm your project is eligible.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing charges, delete resources:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud run services delete isxr-web --region \"$REGION\" --quiet\ngcloud run services delete isxr-broker --region \"$REGION\" --quiet\ngsutil rm -r \"gs:\/\/${BUCKET_NAME}\"\n<\/code><\/pre>\n\n\n\n<p>Optionally delete the whole project:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud projects delete \"$PROJECT_ID\" --quiet\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Use a session broker<\/strong> pattern:<\/li>\n<li>Frontend never directly holds long-lived credentials.<\/li>\n<li>Broker enforces authZ, rate limits, and per-user quotas.<\/li>\n<li><strong>Separate projects by environment<\/strong> (dev\/stage\/prod) to reduce blast radius.<\/li>\n<li><strong>Deploy close to users<\/strong> to minimize latency.<\/li>\n<li><strong>Use CDN for static assets<\/strong> (web client, scripts, textures) even if the streaming traffic itself is not cacheable.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Least privilege<\/strong> for admins and CI\/CD service accounts.<\/li>\n<li>Use <strong>separate service accounts<\/strong> for:<\/li>\n<li>build\/deploy pipelines<\/li>\n<li>runtime backends<\/li>\n<li>artifact upload automation<\/li>\n<li>Prefer <strong>short-lived credentials<\/strong> and token exchange patterns.<\/li>\n<li>Turn on <strong>Cloud Audit Logs<\/strong> and review them regularly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enforce:<\/li>\n<li>maximum session durations<\/li>\n<li>idle disconnect<\/li>\n<li>per-user\/per-IP limits<\/li>\n<li>Use budgets and alerts in Cloud Billing.<\/li>\n<li>Instrument and measure:<\/li>\n<li>average session length<\/li>\n<li>conversion rates (to justify spend)<\/li>\n<li>Run performance tests to estimate egress per minute (often a major cost driver).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep backend API latency low; do not block rendering on slow API calls.<\/li>\n<li>Optimize asset loading:<\/li>\n<li>compress textures where feasible<\/li>\n<li>minimize round trips<\/li>\n<li>Reduce client-side overhead:<\/li>\n<li>keep the web wrapper lightweight<\/li>\n<li>avoid heavy third-party scripts on the XR page<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Provide clear fallbacks:<\/li>\n<li>graceful message if capacity unavailable<\/li>\n<li>\u201ctry again\u201d with backoff<\/li>\n<li>Use multi-region web serving even if streaming runtime is single-region (depends on your SLA and user base).<\/li>\n<li>Keep builds versioned and rollback-ready.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create dashboards for:<\/li>\n<li>session starts\/failures<\/li>\n<li>error rates<\/li>\n<li>backend latency<\/li>\n<li>egress and billing trends<\/li>\n<li>Alert on:<\/li>\n<li>elevated session failures<\/li>\n<li>quota approaching limits<\/li>\n<li>sudden cost spikes<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use labels such as:<\/li>\n<li><code>env=dev|stage|prod<\/code><\/li>\n<li><code>app=isxr-demo<\/code><\/li>\n<li><code>team=xr-platform<\/code><\/li>\n<li><code>cost_center=...<\/code><\/li>\n<li>Standardize naming:<\/li>\n<li><code>isxr-web-prod<\/code>, <code>isxr-broker-prod<\/code>, <code>isxr-artifacts-prod<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Admin plane:<\/strong> Google Cloud IAM controls who can upload builds, configure experiences, and view operational data.<\/li>\n<li><strong>User plane:<\/strong> Implement explicit authentication and authorization for end users:<\/li>\n<li>Public marketing experiences still need abuse controls.<\/li>\n<li>Enterprise experiences should require SSO\/IdP integration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud encrypts data at rest by default (Cloud Storage, logs).<\/li>\n<li>Use TLS for all in-transit communications (default for Cloud Run\/Load Balancing).<\/li>\n<li>If customer-managed encryption keys (CMEK) are required, verify whether Immersive Stream for XR supports CMEK for relevant artifacts\/resources (do not assume).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Your public exposure usually comes from:<\/li>\n<li>the web frontend<\/li>\n<li>the session broker API<\/li>\n<li>Protect with:<\/li>\n<li>Cloud Armor (WAF, rate limiting)<\/li>\n<li>strict auth on broker<\/li>\n<li>allowlists for internal deployments (where applicable)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Do not embed secrets in frontend JS.<\/li>\n<li>Use Secret Manager for backend secrets.<\/li>\n<li>Prefer short-lived tokens and server-side session creation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable and retain:<\/li>\n<li>Cloud Audit Logs (admin actions)<\/li>\n<li>Cloud Run logs (broker\/web)<\/li>\n<li>any service-specific logs exposed by Immersive Stream for XR (verify)<\/li>\n<li>Treat logs as sensitive; avoid logging PII.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For regulated industries:<\/li>\n<li>confirm supported regions and data handling<\/li>\n<li>validate whether streamed content includes sensitive data<\/li>\n<li>ensure appropriate access controls and retention policies<\/li>\n<li>If you need HIPAA\/PCI\/etc., verify eligibility in official compliance documentation; do not assume.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Making the broker endpoint public without auth\/rate limits<\/li>\n<li>Long-lived session tokens<\/li>\n<li>No abuse protection (bots create sessions and drive costs)<\/li>\n<li>Overly broad IAM roles (Owner in production)<\/li>\n<li>Logging secrets or user identifiers unnecessarily<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Broker requires auth; implement user-level authZ.<\/li>\n<li>Use Cloud Armor and rate limits on public entry points.<\/li>\n<li>Apply budgets and session caps to prevent financial abuse.<\/li>\n<li>Keep a clear separation between:<\/li>\n<li>public web<\/li>\n<li>broker<\/li>\n<li>streaming session initiation<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<p>Always verify current limitations in official docs, but plan for these common realities:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Latency sensitivity:<\/strong> XR interaction quality depends heavily on network latency and jitter.<\/li>\n<li><strong>Network dependency:<\/strong> Poor connections cause degraded experience.<\/li>\n<li><strong>Region availability:<\/strong> Not all regions may support the service.<\/li>\n<li><strong>Capacity planning:<\/strong> Concurrency can be constrained by quotas and available capacity.<\/li>\n<li><strong>Browser\/device compatibility:<\/strong> Some devices\/browsers may not be supported; autoplay policies can affect audio.<\/li>\n<li><strong>Cost surprises:<\/strong> Uncontrolled session creation can lead to large streaming-minute and egress charges.<\/li>\n<li><strong>Session lifecycle complexity:<\/strong> You need robust handling for reconnects, timeouts, and idle disconnects.<\/li>\n<li><strong>Observability gaps:<\/strong> Some critical app-level metrics (scene load time, user actions) must be instrumented by you.<\/li>\n<li><strong>Build pipeline constraints:<\/strong> Packaging formats, size limits, and supported runtimes may constrain your engine\/build choices (verify supported engines\/OS versions).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>Immersive Stream for XR is specialized for managed interactive 3D\/XR streaming. Consider alternatives depending on whether your need is streaming, remote desktops, or GPU rendering APIs.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Immersive Stream for XR (Google Cloud)<\/strong><\/td>\n<td>Streaming interactive 3D\/XR experiences to thin clients<\/td>\n<td>Managed GPU streaming for immersive experiences; integrates with Google Cloud security\/ops<\/td>\n<td>Access\/region constraints; latency sensitivity; pricing may be quote-based<\/td>\n<td>When you need cloud-rendered interactive 3D\/XR delivered to users without high-end devices<\/td>\n<\/tr>\n<tr>\n<td><strong>Google Cloud GPU VMs (Compute Engine) + self-managed streaming<\/strong><\/td>\n<td>Custom streaming stacks, full control<\/td>\n<td>Maximum control over OS\/drivers\/protocol; flexible<\/td>\n<td>Significant engineering\/ops; scaling and security harder<\/td>\n<td>When you need complete control or unsupported configurations<\/td>\n<\/tr>\n<tr>\n<td><strong>Virtual workstations (e.g., managed VDI patterns on Google Cloud)<\/strong><\/td>\n<td>Remote 3D apps for internal users<\/td>\n<td>Familiar enterprise remote desktop model<\/td>\n<td>Not optimized for public web XR; heavier client experience<\/td>\n<td>When you need remote desktops for design tools rather than consumer XR streaming<\/td>\n<\/tr>\n<tr>\n<td><strong>AWS AppStream 2.0<\/strong><\/td>\n<td>Application streaming (general)<\/td>\n<td>Managed app streaming<\/td>\n<td>Not specifically XR-focused; may not match XR interaction needs<\/td>\n<td>When you need general app streaming and your workload fits its model<\/td>\n<\/tr>\n<tr>\n<td><strong>Azure Remote Rendering<\/strong><\/td>\n<td>Rendering very large models remotely (specific workloads)<\/td>\n<td>Specialized rendering service<\/td>\n<td>Different scope than interactive XR app streaming<\/td>\n<td>When your main need is remote rendering of huge models rather than full interactive app streaming<\/td>\n<\/tr>\n<tr>\n<td><strong>NVIDIA CloudXR (self-managed\/partner)<\/strong><\/td>\n<td>XR streaming technology stack<\/td>\n<td>Purpose-built XR streaming tech<\/td>\n<td>Often self-managed; infra\/ops burden<\/td>\n<td>When you need NVIDIA\u2019s XR streaming stack and can operate it<\/td>\n<\/tr>\n<tr>\n<td><strong>On-device rendering (native mobile\/PC)<\/strong><\/td>\n<td>Offline or low-latency local apps<\/td>\n<td>No streaming cost; best latency<\/td>\n<td>Requires capable devices; install friction<\/td>\n<td>When your user base has the hardware and you want offline\/local performance<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: Global automotive configurator + AI personalization<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A global automotive brand wants a premium configurator that works on mobile browsers worldwide, with personalization and regional pricing.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Static web app served via Cloud CDN + HTTPS Load Balancer<\/li>\n<li>Cloud Armor for WAF\/rate limiting<\/li>\n<li>Cloud Run session broker + product API<\/li>\n<li>Immersive Stream for XR in multiple regions for low latency<\/li>\n<li>BigQuery for analytics<\/li>\n<li>Vertex AI for recommendation (trim packages, accessories) and a conversational assistant<\/li>\n<li><strong>Why Immersive Stream for XR:<\/strong> Delivers high-fidelity real-time rendering without forcing customers to download an app or own high-end devices.<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>Higher engagement time and conversion<\/li>\n<li>Faster release cycles for new models<\/li>\n<li>Consistent visuals across devices<\/li>\n<li>Centralized control over experiences<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: Virtual showroom MVP for a DTC brand<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A direct-to-consumer brand needs a \u201cvirtual showroom\u201d to stand out, but customers use average phones.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Single-region Immersive Stream for XR deployment near the primary market<\/li>\n<li>Firebase Hosting (or Cloud Run) for the site<\/li>\n<li>A minimal Cloud Run broker enforcing session duration limits<\/li>\n<li>Basic analytics exported to BigQuery<\/li>\n<li><strong>Why Immersive Stream for XR:<\/strong> Small team avoids building their own GPU streaming platform and can iterate quickly.<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>Launch MVP quickly<\/li>\n<li>Gather usage metrics before expanding regions<\/li>\n<li>Control costs by limiting session time and concurrency<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<p>1) <strong>Is Immersive Stream for XR part of Google Cloud?<\/strong><br\/>\nYes. It is a Google Cloud service for streaming immersive 3D\/XR experiences from cloud GPUs to clients.<\/p>\n\n\n\n<p>2) <strong>Is Immersive Stream for XR an AI\/ML service?<\/strong><br\/>\nIt\u2019s primarily a streaming\/rendering delivery service. It often pairs with AI and ML backends on Google Cloud (like Vertex AI) for personalization, assistants, vision, or speech features.<\/p>\n\n\n\n<p>3) <strong>Do users need a high-end device or headset?<\/strong><br\/>\nTypically the goal is to reduce device requirements by rendering in the cloud. Exact client device requirements depend on supported browsers\/devices and your content complexity\u2014verify in official docs.<\/p>\n\n\n\n<p>4) <strong>Can I embed it into a website?<\/strong><br\/>\nThat is a common pattern. The exact embedding approach depends on the provided client\/SDK and your session initiation flow.<\/p>\n\n\n\n<p>5) <strong>Do I need to manage GPU VMs myself?<\/strong><br\/>\nImmersive Stream for XR is managed, so you generally manage builds and configuration rather than provisioning GPU instances directly.<\/p>\n\n\n\n<p>6) <strong>What\u2019s the biggest technical risk?<\/strong><br\/>\nNetwork variability and latency. Interactive XR is sensitive to jitter and packet loss; regional placement and client optimization matter.<\/p>\n\n\n\n<p>7) <strong>How do I secure session creation?<\/strong><br\/>\nUse a session broker that requires authentication, applies authorization and rate limits, and issues short-lived session credentials.<\/p>\n\n\n\n<p>8) <strong>Can I restrict access to enterprise users only?<\/strong><br\/>\nYes. Use enterprise identity (SSO) patterns and ensure the session broker enforces authorization. Consider IAP patterns where applicable.<\/p>\n\n\n\n<p>9) <strong>How do I estimate costs?<\/strong><br\/>\nStart with a pilot to measure average session length and network egress per session. Use the pricing page\/quote for streaming runtime and the Google Cloud Pricing Calculator for surrounding services.<\/p>\n\n\n\n<p>10) <strong>Will Cloud CDN reduce streaming costs?<\/strong><br\/>\nCDN helps with static assets (HTML\/JS\/images). Streaming traffic is typically not cacheable in the same way; validate what can be cached and what cannot.<\/p>\n\n\n\n<p>11) <strong>How do I handle traffic spikes?<\/strong><br\/>\nPlan quotas\/capacity, enforce rate limits, and design user journeys to keep sessions efficient. Also pre-warm or stage capacity if the service supports it (verify).<\/p>\n\n\n\n<p>12) <strong>Can the XR app call my backend APIs?<\/strong><br\/>\nYes, typically your app can call your APIs (Cloud Run\/GKE\/etc.). Keep latency low and protect APIs with auth.<\/p>\n\n\n\n<p>13) <strong>What regions should I use?<\/strong><br\/>\nPick regions close to your users and compliant with residency needs, subject to the service\u2019s supported locations.<\/p>\n\n\n\n<p>14) <strong>How do I monitor user experience quality?<\/strong><br\/>\nCombine platform logs\/metrics with app-level telemetry: session start time, time-to-interactive, disconnect reasons, and client network stats (as available).<\/p>\n\n\n\n<p>15) <strong>What\u2019s a common production mistake?<\/strong><br\/>\nLeaving session creation open to the public without strong controls\u2014this can lead to abuse and unexpected costs.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Immersive Stream for XR<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official product page<\/td>\n<td>Immersive Stream for XR (Google Cloud) \u2014 https:\/\/cloud.google.com\/immersive-stream\/xr<\/td>\n<td>Best starting point for current positioning, availability, and entry points<\/td>\n<\/tr>\n<tr>\n<td>Official documentation<\/td>\n<td>Immersive Stream for XR docs \u2014 https:\/\/cloud.google.com\/immersive-stream\/xr\/docs<\/td>\n<td>Authoritative setup, configuration, SDK\/client, and operational guidance (verify latest paths)<\/td>\n<\/tr>\n<tr>\n<td>Official pricing page<\/td>\n<td>Immersive Stream for XR pricing \u2014 https:\/\/cloud.google.com\/immersive-stream\/xr\/pricing<\/td>\n<td>Confirms pricing model and billing dimensions (may be quote-based)<\/td>\n<\/tr>\n<tr>\n<td>Pricing calculator<\/td>\n<td>Google Cloud Pricing Calculator \u2014 https:\/\/cloud.google.com\/products\/calculator<\/td>\n<td>Estimate surrounding infrastructure costs (CDN, Run, LB, Storage, Logging)<\/td>\n<\/tr>\n<tr>\n<td>Architecture guidance<\/td>\n<td>Google Cloud Architecture Center \u2014 https:\/\/cloud.google.com\/architecture<\/td>\n<td>Patterns for security, global delivery, and scalable web backends that commonly wrap XR streaming<\/td>\n<\/tr>\n<tr>\n<td>Identity guidance<\/td>\n<td>Identity Platform docs \u2014 https:\/\/cloud.google.com\/identity-platform\/docs<\/td>\n<td>Build end-user authentication for your XR portal<\/td>\n<\/tr>\n<tr>\n<td>Cloud Run docs<\/td>\n<td>Cloud Run \u2014 https:\/\/cloud.google.com\/run\/docs<\/td>\n<td>Build a secure session broker and backends<\/td>\n<\/tr>\n<tr>\n<td>Cloud Armor docs<\/td>\n<td>Cloud Armor \u2014 https:\/\/cloud.google.com\/armor\/docs<\/td>\n<td>WAF\/rate limiting patterns to protect public XR experiences<\/td>\n<\/tr>\n<tr>\n<td>Observability<\/td>\n<td>Cloud Logging \u2014 https:\/\/cloud.google.com\/logging\/docs and Cloud Monitoring \u2014 https:\/\/cloud.google.com\/monitoring\/docs<\/td>\n<td>Operational monitoring and troubleshooting<\/td>\n<\/tr>\n<tr>\n<td>Video resources<\/td>\n<td>Google Cloud Tech YouTube \u2014 https:\/\/www.youtube.com\/@googlecloudtech<\/td>\n<td>Look for Immersive Stream for XR talks\/demos (verify availability)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps engineers, architects, platform teams<\/td>\n<td>Cloud architecture, DevOps, CI\/CD, operations practices around Google Cloud workloads<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Developers, DevOps, release engineers<\/td>\n<td>SCM, CI\/CD, automation fundamentals applicable to build\/release pipelines<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud ops teams, SREs<\/td>\n<td>Cloud operations, monitoring, reliability patterns<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, ops engineers, architects<\/td>\n<td>SRE principles, incident response, monitoring\/SLIs\/SLOs<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops + ML\/automation practitioners<\/td>\n<td>AIOps concepts, automation, monitoring intelligence<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>Cloud\/DevOps training content (verify offerings)<\/td>\n<td>Beginners to intermediate practitioners<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training (verify course catalog)<\/td>\n<td>DevOps engineers, platform teams<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Freelance DevOps help\/training resources (verify services)<\/td>\n<td>Teams needing short-term expertise<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support and training resources (verify services)<\/td>\n<td>Ops teams and engineers<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting (verify exact offerings)<\/td>\n<td>Architecture, DevOps pipelines, operations<\/td>\n<td>Build CI\/CD for XR app artifacts; design secure web delivery + broker<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps and cloud consulting\/training (verify)<\/td>\n<td>Delivery automation, reliability, security reviews<\/td>\n<td>Implement Cloud Run broker, IAM posture, logging\/monitoring and cost controls<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting (verify)<\/td>\n<td>Platform engineering, automation<\/td>\n<td>Edge security (Cloud Armor), multi-env setup, observability rollout<\/td>\n<td>https:\/\/www.devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud fundamentals: projects, IAM, billing, regions<\/li>\n<li>Networking basics: latency, egress costs, TLS, load balancing<\/li>\n<li>Cloud Run or Kubernetes basics (for session broker and APIs)<\/li>\n<li>Storage fundamentals (Cloud Storage, artifact versioning)<\/li>\n<li>Web fundamentals: authentication flows, CORS, browser constraints<\/li>\n<li>Basic 3D\/XR pipeline knowledge (assets, builds, performance constraints)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Advanced edge security: Cloud Armor rules, bot mitigation patterns<\/li>\n<li>Observability engineering: SLOs, SLIs, tracing (where applicable)<\/li>\n<li>Data analytics: BigQuery event pipelines for session analytics<\/li>\n<li>Vertex AI integration (AI and ML): personalization, assistants, content tagging<\/li>\n<li>Multi-region architecture and disaster recovery planning<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud solution architect (immersive experiences)<\/li>\n<li>XR platform engineer<\/li>\n<li>DevOps\/SRE supporting latency-sensitive workloads<\/li>\n<li>Security engineer (edge protection, identity, audit)<\/li>\n<li>Full-stack developer integrating web + streaming clients<\/li>\n<li>Product analytics engineer for engagement and conversion metrics<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>There is no widely known, service-specific certification dedicated to Immersive Stream for XR. Typical relevant Google Cloud certifications include:\n&#8211; Associate Cloud Engineer\n&#8211; Professional Cloud Architect\n&#8211; Professional Cloud DevOps Engineer\n&#8211; Professional Cloud Security Engineer<br\/>\nVerify current certification catalog: https:\/\/cloud.google.com\/learn\/certification<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build a session broker with:<\/li>\n<li>per-user quotas<\/li>\n<li>signed session tokens<\/li>\n<li>audit logging to BigQuery<\/li>\n<li>Add Identity Platform login to a web portal and enforce role-based access<\/li>\n<li>Create dashboards:<\/li>\n<li>session duration histograms<\/li>\n<li>failure rate alerts<\/li>\n<li>cost anomaly alerts<\/li>\n<li>Add Vertex AI-powered personalization to select which XR scene\/config to load<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>XR (Extended Reality):<\/strong> Umbrella term covering AR, VR, and mixed reality experiences.<\/li>\n<li><strong>Session broker:<\/strong> A backend service that authenticates\/authorizes users and initiates streaming sessions safely.<\/li>\n<li><strong>Concurrency:<\/strong> Number of simultaneous active streaming sessions.<\/li>\n<li><strong>Egress:<\/strong> Outbound network traffic from Google Cloud to users; often a major cost driver for streaming.<\/li>\n<li><strong>Latency:<\/strong> Time delay between user input and visible response; critical for interactive XR.<\/li>\n<li><strong>WAF (Web Application Firewall):<\/strong> Security layer that filters\/blocks malicious web traffic (Cloud Armor provides WAF capabilities).<\/li>\n<li><strong>IAM (Identity and Access Management):<\/strong> Google Cloud system for permissions and access control.<\/li>\n<li><strong>Cloud CDN:<\/strong> Google Cloud content delivery network for caching and accelerating static content delivery.<\/li>\n<li><strong>Artifact:<\/strong> A build output (binary\/package) you deploy to run in the streaming runtime.<\/li>\n<li><strong>Observability:<\/strong> Practices\/tools for understanding system behavior via logs, metrics, and traces.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>Immersive Stream for XR on Google Cloud is a managed service for streaming interactive, high-fidelity 3D\/XR experiences rendered on cloud GPUs to user devices\u2014often via web-based delivery\u2014so users don\u2019t need high-end local hardware.<\/p>\n\n\n\n<p>It matters when you need premium visuals, broad reach, and centralized control over updates, while still integrating cleanly with Google Cloud security, operations, and AI and ML services like Vertex AI.<\/p>\n\n\n\n<p>Cost and security success come down to a few fundamentals: control session creation with a broker, enforce authentication and rate limits, measure session minutes and egress early, and build dashboards\/alerts to prevent abuse and surprise bills.<\/p>\n\n\n\n<p>Use Immersive Stream for XR when streaming is the right distribution model for immersive experiences; avoid it when offline use, ultra-low latency guarantees, or full host-level customization is required.<\/p>\n\n\n\n<p><strong>Next step:<\/strong> read the official Immersive Stream for XR documentation, confirm service availability for your region\/project, and extend the lab\u2019s session broker to create real streaming sessions using the official APIs and client integration guidance: https:\/\/cloud.google.com\/immersive-stream\/xr\/docs<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AI and ML<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53,51],"tags":[],"class_list":["post-555","post","type-post","status-publish","format-standard","hentry","category-ai-and-ml","category-google-cloud"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=555"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/555\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}