Online Boutique: A Cloud-First Microservices Demo
Online Boutique: A Cloud-Native Microservices Demo for Modern Enterprise Apps
[Continuous Integration badge here]
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.
Repository:https://github.com/GoogleCloudPlatform/microservices-demo
GitHub - GoogleCloudPlatform/microservices-demo: Online Boutique: A Cloud-First Microservices Demo
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 ...
github - googlecloudplatform/microservices-demo
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.
[](https://techloghub.com/open-source/online-boutique?utm_source=techloghub_badge&utm_medium=referral&utm_campaign=readme)
