microservices-demo README

The project's README from github.com/GoogleCloudPlatform/microservices-demo. As one markdown file: README.md.

Continuous Integration

Online Boutique is a cloud-first microservices demo application. The application is a web-based e-commerce app where users can browse items, add them to the cart, and purchase them.

Google uses this application to demonstrate how developers can modernize enterprise applications using Google Cloud products, including: Google Kubernetes Engine (GKE), Cloud Service Mesh (CSM), gRPC, Cloud Operations, Spanner, Memorystore, AlloyDB, and Gemini. This application works on any Kubernetes cluster.

If you’re using this demo, please ★Star this repository to show your interest!

Note to Googlers: Please fill out the form at go/microservices-demo.

Architecture

Online Boutique is composed of 11 microservices written in different languages that talk to each other over gRPC.

Architecture of
microservices

Find Protocol Buffers Descriptions at the ./protos directory.

Service Language Description
frontend Go Exposes an HTTP server to serve the website. Does not require signup/login and generates session IDs for all users automatically.
cartservice C# Stores the items in the user's shopping cart in Redis and retrieves it.
productcatalogservice Go Provides the list of products from a JSON file and ability to search products and get individual products.
currencyservice Node.js Converts one money amount to another currency. Uses real values fetched from European Central Bank. It's the highest QPS service.
paymentservice Node.js Charges the given credit card info (mock) with the given amount and returns a transaction ID.
shippingservice Go Gives shipping cost estimates based on the shopping cart. Ships items to the given address (mock)
emailservice Python Sends users an order confirmation email (mock).
checkoutservice Go Retrieves user cart, prepares order and orchestrates the payment, shipping and the email notification.
recommendationservice Python Recommends other products based on what's given in the cart.
adservice Java Provides text ads based on given context words.
loadgenerator Python/Locust Continuously sends requests imitating realistic user shopping flows to the frontend.

Screenshots

Home Page Checkout Screen
Screenshot of store homepage Screenshot of checkout screen

Quickstart (GKE)

  1. Ensure you have the following requirements:

  2. Clone the latest major version.

    git clone --depth 1 --branch v0 https://github.com/GoogleCloudPlatform/microservices-demo.git
    cd microservices-demo/
    

    The --depth 1 argument skips downloading git history.

  3. Set the Google Cloud project and region and ensure the Google Kubernetes Engine API is enabled.

    export PROJECT_ID=<PROJECT_ID>
    export REGION=us-central1
    gcloud services enable container.googleapis.com \
      --project=${PROJECT_ID}
    

    Substitute <PROJECT_ID> with the ID of your Google Cloud project.

  4. Create a GKE cluster and get the credentials for it.

    gcloud container clusters create-auto online-boutique \
      --project=${PROJECT_ID} --region=${REGION} \
      --labels dev-tutorial=online-boutique
    

    Creating the cluster may take a few minutes.

  5. Deploy Online Boutique to the cluster.

    kubectl apply -f ./release/kubernetes-manifests.yaml
    
  6. Wait for the pods to be ready.

    kubectl get pods
    

    After a few minutes, you should see the Pods in a Running state:

    NAME                                     READY   STATUS    RESTARTS   AGE
    adservice-76bdd69666-ckc5j               1/1     Running   0          2m58s
    cartservice-66d497c6b7-dp5jr             1/1     Running   0          2m59s
    checkoutservice-666c784bd6-4jd22         1/1     Running   0          3m1s
    currencyservice-5d5d496984-4jmd7         1/1     Running   0          2m59s
    emailservice-667457d9d6-75jcq            1/1     Running   0          3m2s
    frontend-6b8d69b9fb-wjqdg                1/1     Running   0          3m1s
    loadgenerator-665b5cd444-gwqdq           1/1     Running   0          3m
    paymentservice-68596d6dd6-bf6bv          1/1     Running   0          3m
    productcatalogservice-557d474574-888kr   1/1     Running   0          3m
    recommendationservice-69c56b74d4-7z8r5   1/1     Running   0          3m1s
    redis-cart-5f59546cdd-5jnqf              1/1     Running   0          2m58s
    shippingservice-6ccc89f8fd-v686r         1/1     Running   0          2m58s
    
  7. Access the web frontend in a browser using the frontend's external IP.

    kubectl get service frontend-external | awk '{print $4}'
    

    Visit http://EXTERNAL_IP in a web browser to access your instance of Online Boutique.

  8. Congrats! You've deployed the default Online Boutique. To deploy a different variation of Online Boutique (e.g., with Google Cloud Operations tracing, Istio, etc.), see Deploy Online Boutique variations with Kustomize.

  9. Once you are done with it, delete the GKE cluster.

    gcloud container clusters delete online-boutique \
      --project=${PROJECT_ID} --region=${REGION}
    

    Deleting the cluster may take a few minutes.

Additional deployment options

Documentation

Demos featuring Online Boutique

microservices-demo (GoogleCloudPlatform/microservices-demo)

Searching Database…

这是什么?Online Boutique 是一个以云为先的示例电商网页应用,由 11 个采用不同编程语言编写的微服务组成,由 Google 开发,用于演示 Kubernetes、gRPC、Istio 以及其他 Google Cloud 技术。
这是正式产品还是只是演示?这是一个演示/参考应用,而不是正式产品:它的目的仅在于展示如何在 Google Cloud 上对企业应用进行现代化改造和部署,各服务之间通过 gRPC 通信。
我该怎么把它跑起来?快速入门以 GKE 为目标:设置你的 Google Cloud 项目,启用 GKE API,使用 gcloud 创建集群,获取凭证,然后运行 'kubectl apply' 部署清单文件,并等待 Pod 状态变为 Running。
部署前我需要准备什么?你需要一个 Google Cloud 项目,以及安装了 gcloud、git 和 kubectl 的终端环境;它也可以运行在 Minikube 或 Kind 等非 GKE 集群上。
除了 GKE,我还能在别处运行吗?可以。它适用于任何 Kubernetes 集群。开发指南中介绍了如何在 Minikube 或 Kind 等非 GKE 集群上本地运行,此外还有可选的 Istio/Terraform 变体。
这个应用由哪些服务组成,各自做什么?共有十一个服务:frontend(Go)负责提供网站页面;cartservice(C#)使用 Redis 存储购物车;productcatalogservice(Go)列出商品;currencyservice(Node.js)进行货币换算;paymentservice(Node.js)模拟信用卡扣款;shippingservice(Go)估算并模拟运费;emailservice(Python)发送订单确认邮件;checkoutservice(Go)协调结账流程;recommendationservice(Python)推荐商品;adservice(Java)提供上下文广告;loadgenerator(Python/Locust)模拟流量。
我能用服务网格或 Terraform 部署其他变体吗?可以。该仓库包含单独的部署说明:使用 Terraform 部署、使用 Istio/Cloud Service Mesh 部署,以及通过基于 Kustomize 的变体系统部署由 Gemini 驱动的 AI 购物助手。
为什么要用这么多编程语言?每个微服务都刻意使用不同的语言编写(Go、C#、Node.js、Python、Java),以逼真地展示通过 gRPC 通信的多语言微服务,这在现实的企业场景中十分常见。
What are similar projects?encore, nacos, apisix, terraformer, eShop, dapr, opa, agents-cli
Size
37.4 MB
Stars
21.1K
Age
8y
Commits · 90 Days