microservices-demo
microservices-demo copied to clipboard
Decouple product list management from `frontend`
Describe request or inquiry
- Today, modifying Online Boutique's list of products requires an update to the
frontend
. - See previous change to list of products here.
- This is because the
frontend
hosts the images for all products (see/src/frontend/static/img/products
folder). - Ideally, we would not have to update the
frontend
. - That is, product list management should be decoupled from
frontend
— in true microservice spirit. - Potential solutions:
- have the
productcatalogservice
publicly host product images, - introduce a new microservices for publicly hosting product images,
- have the
productcatalogservice
upload images to a public-hosting service like Google Cloud Storage (GCS). This approach would be similar to Avocano (another GCP demo application). Avocano uploads product images to GCS buckets and makes the backend share the URLs of those images with the frontend as needed.
- have the
What purpose/environment will this feature serve?
- This is part of a recent effort to make Online Boutique relate more to the ecommerce and retail industry.
- An important takeaway (for users from the ecommerce/retail industry) inside should be: how to decouple product and inventory management from the rest of the app.
- See Google-internal doc here for more info.
Any updates?
Hi @NimJay I went through the issue and looking to contribute here, though need some time for more clarification and understanding Wanted to know if I can take up this as my first issue here or if you have any suggestions lmk :) Thanks!
Hi @Irene-123 (Kirti), thank you for your interest in contributing! :)
I'm realizing that all 3 of the solutions that I proposed in the description would break one of the product requirements (of the default Online Boutique deployment) listed here:
- either by introducing a dependency on a Google Cloud product (breaking the requirement that this app should run on local clusters like kind)
- or by introducing a new external IP address (breaking the requirement that all changes should preserve the simplicity of demos)
Hence, I will close this issue.
CC: @bourgeoisor (tech lead of this repo, who can override my decision here) :)