diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9900ea44097bdf6f05105ead26a1cce449c9ac87..f5d0ff715004ae78700254b199f0480f2ab86124 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -49,7 +49,7 @@ variables:
 ## common steps
 
 cache_lint_test:
-  image: 'europe-north1-docker.pkg.dev/holi-shared/docker-hub-remote/denoland/deno:2.1.9'
+  image: 'europe-north1-docker.pkg.dev/holi-shared/docker-hub-remote/denoland/deno:2.1.10'
   stage: 'test'
   script:
     - deno cache --allow-import --lock=deno.lock app/deps.ts app/dev_deps.ts
diff --git a/Dockerfile b/Dockerfile
index 2a50b997bde4287e0e23bb7f7d4d9393fa46449f..088a6a437530c11ffef1bfa508e6258b7d0f2c71 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM europe-north1-docker.pkg.dev/holi-shared/docker-hub-remote/denoland/deno:2.1.9
+FROM europe-north1-docker.pkg.dev/holi-shared/docker-hub-remote/denoland/deno:2.1.10
 
 # The port that your application listens to.
 EXPOSE 8005
diff --git a/app/server.ts b/app/server.ts
index a34c612a2b6da6081714cc41ca532e64d202d193..0a24736eb0b9832c418d7773c66d650284b9ca95 100644
--- a/app/server.ts
+++ b/app/server.ts
@@ -102,12 +102,20 @@ export const createGraphQLServer = (
 export type GraphQLServer = any
 
 export const startServer = (config: ServerConfig): Promise<void> => {
-  const novuInstance = createNovuInstance(config.novuConfig)
-  const graphQLServer: GraphQLServer = createGraphQLServer(
-    novuInstance,
-    config,
-  )
-  return serve(graphQLServer.handleRequest, {
+  const novu = createNovuInstance(config.novuConfig)
+  const graphQLServer: GraphQLServer = createGraphQLServer(novu, config)
+
+  const handler = (request: Request): Response => {
+    const url = new URL(request.url)
+
+    if (url.pathname === '/health') {
+      return new Response('OK', { status: 200 })
+    }
+
+    return graphQLServer.handleRequest(request)
+  }
+
+  return serve(handler, {
     port: config.port,
     onListen({ port, hostname }) {
       logger.info(
diff --git a/terraform/environments/deployment.tf b/terraform/environments/deployment.tf
index e0389608d7b57ec8b5268f798834f92b105c8822..f497837e4471e4178b48b9f68831cd10a11ffe45 100644
--- a/terraform/environments/deployment.tf
+++ b/terraform/environments/deployment.tf
@@ -73,6 +73,24 @@ resource "google_cloud_run_service" "notifications_api" {
             memory = local.environment == "production" ? "512Mi" : "256Mi"
           }
         }
+        startup_probe {
+          http_get {
+            path = "/health"
+          }
+          initial_delay_seconds = 5
+          failure_threshold     = 3
+          period_seconds        = 5
+          timeout_seconds       = 2
+        }
+        liveness_probe {
+          http_get {
+            path = "/health"
+          }
+          initial_delay_seconds = 10
+          period_seconds        = 30
+          timeout_seconds       = 2
+          failure_threshold     = 3
+        }
       }
       container_concurrency = 0 # 0 means thread safe, no restriction on max concurrency
     }
@@ -85,7 +103,7 @@ resource "google_cloud_run_service" "notifications_api" {
         "run.googleapis.com/vpc-access-connector" = data.terraform_remote_state.holi_infra_state.outputs.vpc_access_connector_name
         # possible values: all-traffic/private-ranges-only(default) https://cloud.google.com/sdk/gcloud/reference/run/services/update#--vpc-egress
         "run.googleapis.com/vpc-access-egress" = "private-ranges-only"
-        "run.googleapis.com/startup-cpu-boost"    = "true"
+        "run.googleapis.com/startup-cpu-boost" = "true"
       }
       # labels set on the revision level
       labels = {