Favicon of Online Boutique

Online Boutique

Online Boutique: a Google Cloud sample e-commerce app with 11 gRPC microservices for demoing Kubernetes, Istio, and service mesh tooling.

Online Boutique website screenshot
Online Boutique GitHub repository preview

Online Boutique (microservices-demo) is a sample cloud-first web application built by Google Cloud. It simulates an e-commerce site where users browse products, add items to a cart, and check out. The app is split into 11 microservices written in different languages (Go, C#, Node.js, Python, Java) that communicate over gRPC. It's aimed at developers, platform engineers, and SREs who want a realistic, multi-language workload to test Kubernetes clusters, service mesh configurations, or observability tooling without writing their own app first.

Because the services span multiple languages and communicate over gRPC with defined Protocol Buffer contracts, the repo also works as a reference for polyglot microservice architecture and inter-service API design. It runs on any Kubernetes cluster, not just GKE, though the primary quickstart path targets Google Cloud.

Key features

  • 11 microservices: frontend, cart, product catalog, currency, payment, shipping, email, checkout, recommendation, ad, and load generator services, each independently deployable.
  • Polyglot stack: services written in Go, C#, Node.js, Python, and Java, showing how gRPC ties heterogeneous languages together.
  • gRPC + Protocol Buffers: all inter-service calls use gRPC, with .proto definitions in the /protos directory.
  • Kubernetes manifests included: a ready-to-apply kubernetes-manifests.yaml deploys the full stack in one command.
  • Kustomize variations: deploy alternate configurations such as Istio/Cloud Service Mesh integration, a Gemini-powered shopping assistant, or Cloud Operations tracing.
  • Terraform support: infrastructure-as-code option for provisioning the demo on Google Cloud.
  • Load generator: a Locust-based service continuously simulates realistic shopping traffic against the frontend.
  • Non-GKE deployment docs: guidance for running the app on Minikube, Kind, and other clusters for local development.

Ideal use cases

  • Testing or demoing Kubernetes cluster setups, autoscaling, or GKE Autopilot behavior with a realistic multi-service workload.
  • Evaluating service mesh products (Istio, Cloud Service Mesh) against a non-trivial app with real gRPC traffic patterns.
  • Trying out observability and tracing tools (Cloud Operations, distributed tracing, Prometheus/Grafana stacks) against multiple languages and services.
  • Learning how gRPC and Protocol Buffers work across services written in different languages.
  • Training or workshops on cloud-native application modernization, container security hardening, or platform engineering tooling (Score, Humanitec, Helm, GitOps).

It's not a good fit if you need a production-ready e-commerce backend, real payment processing, or a starting template for your own business logic. The payment service is mocked, there's no user authentication/signup, and the app is explicitly built as a demo/reference, not a maintained product foundation.

Installation

Quickstart on GKE requires a Google Cloud project and a shell with gcloud, git, and kubectl installed.

  1. Clone the repo:
git clone --depth 1 --branch v0 https://github.com/GoogleCloudPlatform/microservices-demo.git
cd microservices-demo/
  1. Set your project and region, and enable the GKE API:
export PROJECT_ID=<PROJECT_ID>
export REGION=us-central1
gcloud services enable container.googleapis.com --project=${PROJECT_ID}
  1. Create a GKE cluster:
gcloud container clusters create-auto online-boutique \
  --project=${PROJECT_ID} --region=${REGION} \
  --labels dev-tutorial=online-boutique
  1. Deploy the app:
kubectl apply -f ./release/kubernetes-manifests.yaml
  1. Check pod status until all show Running:
kubectl get pods
  1. Get the frontend's external IP and visit it in a browser:
kubectl get service frontend-external | awk '{print $4}'
  1. When finished, delete the cluster to avoid ongoing charges:
gcloud container clusters delete online-boutique \
  --project=${PROJECT_ID} --region=${REGION}

For other setups, the repo also documents Terraform-based deployment, Istio/Cloud Service Mesh integration via Kustomize, non-GKE clusters like Minikube and Kind, and a local development guide.

Frequently asked questions

Share:

Stars
21.1K
Forks
10.6K
Last commit
5 days ago
Repository age
8 years
License
Apache-2.0
Self-hosted
No
Activity score
85/100
View Repository
Ad
Favicon

 

  
 

Similar to Online Boutique

Favicon

 

  
 
Favicon

 

  
 
Favicon