# ────────────────────────────────────────────────────────────────────────────── # Services layer: user-get, product-catalog, cart-service # # user-get — depends_on auth-check (нужно что auth маршрут доступен) # product-catalog — depends_on rate-limiter # cart-service — depends_on ОБОИХ: user-get + product-catalog # (cart нужны оба сервиса — деплой только когда оба готовы) # ────────────────────────────────────────────────────────────────────────────── # ─── user-get ───────────────────────────────────────────────────────────────── resource "fission_package" "user_get" { name = "ecom-user-get-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/python-user" depends_on = [fission_http_trigger.auth_check] } resource "fission_function" "user_get" { name = "ecom-user-get" environment = fission_environment.python.name package_name = fission_package.user_get.name entrypoint = "main.main" } resource "fission_http_trigger" "user_get" { name = "ecom-user-get-route" function = fission_function.user_get.name url = "/ecom/users" methods = ["GET"] } # ─── product-catalog ────────────────────────────────────────────────────────── resource "fission_package" "product_catalog" { name = "ecom-product-catalog-pkg" environment = fission_environment.ruby.name source_dir = "${path.module}/code/ruby-product" depends_on = [fission_http_trigger.rate_limiter] } resource "fission_function" "product_catalog" { name = "ecom-product-catalog" environment = fission_environment.ruby.name package_name = fission_package.product_catalog.name entrypoint = "handler" } resource "fission_http_trigger" "product_catalog" { name = "ecom-product-catalog-route" function = fission_function.product_catalog.name url = "/ecom/products" methods = ["GET"] } # ─── cart-service ───────────────────────────────────────────────────────────── # user-get и product-catalog деплоятся ПАРАЛЛЕЛЬНО, # cart ждёт пока ОБА готовы resource "fission_package" "cart_service" { name = "ecom-cart-service-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/python-cart" depends_on = [ fission_http_trigger.user_get, fission_http_trigger.product_catalog, ] } resource "fission_function" "cart_service" { name = "ecom-cart-service" environment = fission_environment.python.name package_name = fission_package.cart_service.name entrypoint = "main.main" } resource "fission_http_trigger" "cart_service" { name = "ecom-cart-service-route" function = fission_function.cart_service.name url = "/ecom/cart" methods = ["GET", "POST", "DELETE"] }