Online Boutique: A Cloud-First Microservices Demo
GitHub Repo
MIT
July 28, 2026 at 08:22 AM
0 views

Online Boutique: A Cloud-First Microservices Demo

@GoogleCloudPlatformProject Author

Online Boutique: A Cloud-Native Microservices Demo for Modern Enterprise Apps

[Continuous Integration badge here] Continuous Integration

Online Boutique is a cloud-first microservices demo application that showcases how a modern, web-based e-commerce platform can be built, deployed, and operated on a cloud-native stack. It’s designed as a practical, hands-on example for developers and operators who want to understand how to modernize enterprise applications using Google Cloud products and best-practice patterns. The project demonstrates a complete shopping experience—from product discovery to checkout—while highlighting the orchestration, observability, and scalability required for real-world workloads. If you’re exploring this demo, consider star-rising this repository to signal your interest and engagement.

Introduction: A Cloud-First E-Commerce Playground

Online Boutique serves as a practical sandbox where developers can experiment with modern cloud-native techniques. It is engineered to run on any Kubernetes cluster, giving teams a repeatable, scalable environment for learning, prototyping, and demonstration. The diagrammed architecture, the choice of programming languages, and the suite of cloud-native services reflect a holistic approach to building distributed systems that are maintainable, observable, and resilient under load.

Architecture: A Clear View of Microservices and Communication

At its heart, Online Boutique is composed of 11 microservices that work in concert to deliver a seamless shopping experience. The services interoperate via gRPC, a high-performance, language-agnostic remote procedure call framework that enables efficient, low-latency communication across services. The services share a common contract described by Protocol Buffers, with the proto definitions located in the ./protos directory. This design emphasizes clean service boundaries, clear ownership, and easy evolution of APIs over time.

  • Architecture diagram
  • Architecture of microservices: /docs/img/architecture-diagram.png

The 11 Microservices and Their Roles

Each service is implemented in a different language, illustrating the polyglot nature of modern cloud-native systems and showing how teams can contribute modules in their preferred ecosystems while still participating in a cohesive platform.

  • frontend (Go)

  • Exposes an HTTP server to serve the website. It provides the user-facing storefront, manages sessions, and creates session IDs for users automatically without requiring sign-in.

  • cartservice (C#)

  • Stores the items in a user’s shopping cart in Redis and retrieves them for the checkout flow. It acts as the in-session cart repository.

  • productcatalogservice (Go)

  • Serves the product catalog from a JSON repository, supports product searches, and retrieves individual product details for display and selection.

  • currencyservice (Node.js)

  • Converts monetary amounts from one currency to another using live values from the European Central Bank. It’s designed for high throughput, handling the highest QPS among the services.

  • paymentservice (Node.js)

  • Simulates charging a credit card and returns a mock transaction ID. This service demonstrates the payment orchestration without touching real payment networks in a development environment.

  • shippingservice (Go)

  • Estimates shipping costs based on the cart contents and the destination address (mock). It completes the logistics loop by providing shipping details for the order.

  • emailservice (Python)

  • Sends a confirmation email to the user after an order is placed (mock). It demonstrates external communications and notification workflows.

  • checkoutservice (Go)

  • Orchestrates the entire checkout flow: retrieving the user cart, preparing the order, coordinating payment and shipping, and triggering the email notification.

  • recommendationservice (Python)

  • Provides product recommendations based on the items in the cart, enhancing the shopping experience and increasing potential conversions.

  • adservice (Java)

  • Supplies text ads tailored to the current context words, adding monetization and marketing logic to the storefront.

  • loadgenerator (Python/Locust)

  • Continuously issues requests to simulate realistic user shopping flows against the frontend, helping to validate performance and resiliency under load.

Architecture in Practice: How the Pieces Fit Together

  • gRPC as the Communication Backbone

  • The microservices talk to each other over gRPC, leveraging Protocol Buffers for compact, fast-defined interfaces. This approach minimizes serialization overhead, reduces network chatter, and provides strong typing across service boundaries.

  • Data Stores and State Management

  • Redis powers the cartservice for fast, in-memory cart state.

  • Other services rely on their own storage and caching strategies, reflecting a typical microservices pattern where each service owns its data model and storage backend.

  • Observability, Tracing, and Cloud Operations

  • The architecture is designed with observability in mind. Cloud Operations (formerly Stackdriver) features—logging, monitoring, and traces—play a key role in understanding system behavior, diagnosing issues, and ensuring reliability.

  • Multilingual Microservices

  • With services implemented in Go, C#, Node.js, Python, and Java, Online Boutique demonstrates how a heterogeneous stack can be composed into a single cohesive application. This diversity mirrors real-world environments where teams specialize in different languages and runtimes.

  • Protos and Typed Interfaces

  • The Protocol Buffers definitions in the ./protos directory illustrate a disciplined contract-first approach to service APIs, enabling safe, evolvable changes across teams and languages.

Screenshots: Visualize the Experience

  • Home Page

  • A storefront interface that invites exploration of products, search, and seamless navigation. The home screen showcases catalog previews, promotions, and a path to the cart and checkout.

  • Checkout Screen

  • The checkout flow consolidates cart contents, shipping options, payment details, and order confirmation into a smooth, guided experience.

  • Visual references:

  • Architecture diagram: /docs/img/architecture-diagram.png

  • Screenshot 1: /docs/img/online-boutique-frontend-1.png

  • Screenshot 2: /docs/img/online-boutique-frontend-2.png

These visuals provide a concrete view of both the system’s structure and the user-facing storefront.

Quickstart: Deploying on Google Kubernetes Engine (GKE)

If you want to experiment with Online Boutique on GKE, here is a concise, practical setup guide. The steps assume a Google Cloud project is available and a shell environment with gcloud, git, and kubectl.

  • Prerequisites

  • A Google Cloud project

  • A shell environment with gcloud, git, and kubectl

  • Step 1: Clone the repository

  • Command:

    • git clone --depth 1 --branch v0 https://github.com/GoogleCloudPlatform/microservices-demo.git
    • cd microservices-demo/
  • Note: The --depth 1 option skips downloading full git history for a quicker start.

  • Step 2: Configure your project and region; enable the Kubernetes API

  • Commands (substitute your project ID as PROJECT_ID and your region as REGION):

    • export PROJECT_ID=
    • export REGION=us-central1
    • gcloud services enable container.googleapis.com --project=${PROJECT_ID}
  • Step 3: Create the GKE cluster and fetch credentials

  • Command:

    • gcloud container clusters create-auto online-boutique --project=${PROJECT_ID} --region=${REGION}
  • Reminder: Cluster creation may take several minutes.

  • Step 4: Deploy Online Boutique to the cluster

  • Command:

    • kubectl apply -f ./release/kubernetes-manifests.yaml
  • Step 5: Wait for pods to be ready

  • Command:

    • kubectl get pods
  • You should see your various services listed in a Running state after a short while, e.g., adservice, cartservice, checkoutservice, currencyservice, emailservice, frontend, loadgenerator, paymentservice, productcatalogservice, recommendationservice, redis-cart, shippingservice.

  • Step 6: Access the web frontend

  • Retrieve the frontend’s external IP:

    • kubectl get service frontend-external | awk '{print $4}'
  • Open a browser and navigate to http://EXTERNAL_IP to view your instance of Online Boutique.

  • Step 7: Explore variations and features

  • To deploy variations of Online Boutique (e.g., with Cloud Operations tracing or a service mesh such as Istio), refer to the variation instructions in the repository (see Deploy Online Boutique variations with Kustomize).

  • Step 8: Cleanup

  • When you’re done, delete the cluster:

    • gcloud container clusters delete online-boutique --project=${PROJECT_ID} --region=${REGION}
  • Note: Deleting the cluster can take a few minutes.

Additional Deployment Options: Beyond the Quickstart

  • Terraform

  • See the Terraform instructions to deploy Online Boutique using Terraform. This approach helps manage infrastructure as code, enabling repeatable, auditable deployments across environments.

  • Istio / Cloud Service Mesh

  • Instructions are available to deploy Online Boutique alongside an Istio-backed service mesh, enabling advanced traffic management, security policies, and observability features.

  • Non-GKE Clusters

  • If you’re using Minikube, Kind, or other Kubernetes platforms, the Development guide provides steps to adapt and run Online Boutique in non-GKE clusters.

  • Gemini AI Assistant

  • There are instructions to deploy a Gemini-powered AI assistant that can suggest products based on a customer’s image. This demonstrates how AI can be integrated into the shopping experience.

  • Kustomize-Based Variations

  • The kustomize directory contains instructions for customizing deployments with additional features and variations, such as different service meshes or observability configurations.

  • Additional considerations

  • The architecture supports expanding with new services or data stores, and it is designed to be adaptable for experiments with new cloud-native patterns and tools.

Documentation and Learning Resources

  • Development Guide

  • A dedicated Development Guide is available to help you run and develop the app locally, troubleshoot issues, and understand the code paths across services.

  • Demos and Use Cases

  • The Online Boutique project has inspired a series of demos and articles on cloud security, performance, deployment patterns, and integration with various Google Cloud products and third-party tools. Examples include security hardening with Docker Hardened Images, comparisons of Alpine vs. distroless runtimes, multi-cloud and multi-region deployment strategies, and how to integrate Memorystore Redis or Spanner with the demo.

Storytelling Through Demos: What You Can Learn

  • Observability and Cloud Operations

  • By instrumenting the services with Cloud Operations, you can observe traces, metrics, and logs that illuminate how requests flow through the system. This is essential for diagnosing latency spikes, bottlenecks, or failures in a distributed environment.

  • Service Mesh and Traffic Management

  • Integrating a service mesh (such as Istio or Cloud Service Mesh) provides fine-grained control over traffic routing, failure handling, and secure inter-service communication. It’s a practical way to explore blue/green deployments, fault injection, and telemetry.

  • Data Ownership and Polyglot Ecosystems

  • Each microservice owning its own data stores and implementing in separate languages mirrors the realities of large organizations with specialized teams. It also demonstrates how to coordinate API evolution across diverse tech stacks.

  • AI-Driven Personalization

  • The recommendation and AI-assisted shopping experiences offer a practical glimpse into how AI models can be integrated into commerce workflows, tailoring suggestions to users and driving engagement.

  • Performance and Load Testing

  • The loadgenerator demonstrates how realistic traffic can be modeled and exercised, which is critical for understanding capacity, scaling limits, and the impact of new features on response times.

Conclusion: A Living Benchmark for Modern Cloud-Native Apps

Online Boutique is more than a static demo—it’s a living benchmark and a hands-on laboratory for cloud-native practices. It blends multiple programming languages, a microservices-oriented architecture, and cloud-native infrastructure into a coherent, testable, and extensible platform. By stepping through the architecture diagram, inspecting individual services, and running the Quickstart on GKE, developers and operators gain practical insight into:

  • Building scalable, resilient, and observable distributed systems
  • Managing service boundaries and API contracts with gRPC and Protocol Buffers
  • Utilizing cloud-native services like Redis, Spanner, Memorystore, and AlloyDB alongside Kubernetes
  • Deploying and operating across varying environments (GKE, non-GKE clusters) and deployment models (Terraform, Kustomize, Istio)
  • Pairing e-commerce functionality with AI-assisted personalization and dynamic ads

If you’re interested in deeper explorations, the repository’s documentation and linked demos provide a broad spectrum of topics—from security hardening to performance optimization and advanced deployment patterns. Whether you’re a student, a developer, a platform engineer, or an architect, Online Boutique serves as a practical, hands-on canvas for learning, experimentation, and demonstration of cloud-native principles in action.

Images embedded from the Input

  • Architecture diagram: /docs/img/architecture-diagram.png
  • Home Page screenshot: /docs/img/online-boutique-frontend-1.png
  • Checkout Screen screenshot: /docs/img/online-boutique-frontend-2.png

Note: This blog post pulls together the essence of the Online Boutique project as described in the repository input. It presents a narrative that emphasizes architecture, services, deployment patterns, and practical steps for getting started, while highlighting the visual references that illustrate the system’s structure and the user experience.

Enjoying this project?

Discover more amazing open-source projects on TechLogHub. We curate the best developer tools and projects.

Project
online-boutique
Created
July 28
Last Updated
July 28, 2026 at 08:22 AM

Maintain Online Boutique: A Cloud-First Microservices Demo? Add the badge to your README

Show that the project is featured on TechLogHub and send readers to this write-up.

Featured on TechLogHub
[![Featured on TechLogHub](https://techloghub.com/badge-neutral.svg)](https://techloghub.com/open-source/online-boutique?utm_source=techloghub_badge&utm_medium=referral&utm_campaign=readme)

Find more projects like this

One email a week: new and trending developer tools, fresh comparisons, and what shipped. Unsubscribe in one click.