microservices-demo icon indicating copy to clipboard operation
microservices-demo copied to clipboard

Decouple product list management from `frontend`

Open NimJay opened this issue 1 year ago • 1 comments

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:
    1. have the productcatalogservice publicly host product images,
    2. introduce a new microservices for publicly hosting product images,
    3. 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.

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.

NimJay avatar Mar 07 '23 15:03 NimJay

Any updates?

minherz avatar Aug 28 '23 03:08 minherz

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!

Irene-123 avatar Aug 11 '24 06:08 Irene-123

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) :)

NimJay avatar Aug 12 '24 13:08 NimJay