diff --git a/modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-helm-chart-deployment.adoc b/modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-helm-chart-deployment.adoc index a8316b6a2c..dabd89ce9c 100644 --- a/modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-helm-chart-deployment.adoc +++ b/modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-helm-chart-deployment.adoc @@ -1,7 +1,7 @@ :_mod-docs-content-type: PROCEDURE [id="configure-high-availability-in-a-rhdh-helm-chart-deployment_{context}"] -= Configure high availability in a {product} Helm chart deployment += Configure with the Helm chart [role="_abstract"] Configure high availability for Helm deployments by setting the `replicas` value to greater than 1 in the Helm configuration file. diff --git a/modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-operator-deployment.adoc b/modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-operator-deployment.adoc index 8efb3ab712..65d3dadf5c 100644 --- a/modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-operator-deployment.adoc +++ b/modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-operator-deployment.adoc @@ -1,7 +1,7 @@ :_mod-docs-content-type: PROCEDURE [id="configure-high-availability-in-a-rhdh-operator-deployment_{context}"] -= Configure high availability in a {product} Operator deployment += Configure with the Operator [role="_abstract"] Configure high availability for Operator deployments by setting the `replicas` field to a value greater than 1 in the custom resource. diff --git a/modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-by-using-the-operator.adoc b/modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-by-using-the-operator.adoc index 4831c6607a..f8ad0c63e3 100644 --- a/modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-by-using-the-operator.adoc +++ b/modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-by-using-the-operator.adoc @@ -1,7 +1,7 @@ :_mod-docs-content-type: PROCEDURE [id="create-a-pvc-for-the-dynamic-plugin-cache-by-using-the-operator_{context}"] -= Create a PVC for the dynamic plugin cache by using the Operator += Create PVC with Operator [role="_abstract"] Create a persistent volume claim for the dynamic plugin cache in Operator deployments by replacing the default `dynamic-plugins-root` volume. diff --git a/modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-using-the-helm-chart.adoc b/modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-using-the-helm-chart.adoc index bedc5457cb..ed7aca9750 100644 --- a/modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-using-the-helm-chart.adoc +++ b/modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-using-the-helm-chart.adoc @@ -1,7 +1,7 @@ :_mod-docs-content-type: PROCEDURE [id="create-a-pvc-for-the-dynamic-plugin-cache-using-the-helm-chart_{context}"] -= Create a PVC for the dynamic plugin cache using the Helm Chart += Create PVC with Helm Chart [role="_abstract"] Create a persistent volume claim for the dynamic plugin cache in Helm deployments to persist the cache across pod restarts. diff --git a/modules/configure_configuring-rhdh/proc-enable-the-rhdh-plugin-assets-cache.adoc b/modules/configure_configuring-rhdh/proc-enable-the-rhdh-plugin-assets-cache.adoc index f6accb3f2b..c7b63565ca 100644 --- a/modules/configure_configuring-rhdh/proc-enable-the-rhdh-plugin-assets-cache.adoc +++ b/modules/configure_configuring-rhdh/proc-enable-the-rhdh-plugin-assets-cache.adoc @@ -1,7 +1,7 @@ :_mod-docs-content-type: PROCEDURE [id="enable-the-rhdh-plugin-assets-cache_{context}"] -= Enable the {product} plugin assets cache += Enable the plugin assets cache [role="_abstract"] Use a Redis cache store to improve {product-short} performance and reliability by caching plugin assets. diff --git a/modules/discover_about-rhdh/con-high-availability-with-database-and-cache-layers.adoc b/modules/discover_about-rhdh/con-high-availability-with-database-and-cache-layers.adoc index 03e76e73e5..43170b6f47 100644 --- a/modules/discover_about-rhdh/con-high-availability-with-database-and-cache-layers.adoc +++ b/modules/discover_about-rhdh/con-high-availability-with-database-and-cache-layers.adoc @@ -1,13 +1,13 @@ :_mod-docs-content-type: CONCEPT [id="high-availability-with-database-and-cache-layers_{context}"] -= High availability with database and cache layers += Plan production scaling using high availability architecture [role="_abstract"] Achieving high availability in {product} requires implementing redundancy and failover for both the backend service and its data dependencies. This is accomplished through horizontal scaling, database replication, and shared caching to ensure continuous operation during component failures. -== Backend scalability +== Deploy multiple stateless instances {product-very-short} backend uses a stateless design to support horizontal scaling. PostgreSQL stores persistent data and the database manages sessions, allowing multiple backend instances to serve any request simultaneously. To improve performance, you can configure an optional logical cache by using Redis. @@ -18,7 +18,7 @@ Configure a load balancer:: Use platform-provided load balancing, such as OpenSh Enable health checks:: Configure the load balancer to probe backend health and remove failed instances from rotation. Disable session affinity (sticky sessions):: Database-backed sessions allow any instance to serve any request. -== Database high availability +== Implement database HA {product-very-short} operations rely on PostgreSQL for persistence. A database outage renders the deployment non-functional until the database is restored. For production deployments, you must configure PostgreSQL with high availability (primary-replica replication) to minimize downtime. [IMPORTANT] @@ -26,7 +26,7 @@ Disable session affinity (sticky sessions):: Database-backed sessions allow any If you use catalog providers exclusively, the database acts as an indexed cache. You do not require disaster recovery backups because you can repopulate catalog data from external sources of truth, such as Git repositories, CI/CD platforms, and monitoring tools. ==== -== Cache high availability (optional) +== Implement cache HA Configuring Redis as a shared logical cache improves production performance by sharing cached data across multiple backend instances. A shared cache makes sure that all instances access the same processed data, such as rendered TechDocs. diff --git a/titles/product_product/category-maps/optimize/con-configure-high-availability-to-maintain-performance.adoc b/titles/product_product/category-maps/optimize/con-configure-high-availability-to-maintain-performance.adoc index b1421f2e0f..8ff6736105 100644 --- a/titles/product_product/category-maps/optimize/con-configure-high-availability-to-maintain-performance.adoc +++ b/titles/product_product/category-maps/optimize/con-configure-high-availability-to-maintain-performance.adoc @@ -3,4 +3,22 @@ = Configure high availability to maintain performance [role="_abstract"] -TODO: Replace this placeholder with an overview of Configure high availability to maintain performance. +Configure high availability to ensure continuous service accessibility by eliminating single points of failure through redundancy and failover mechanisms. + +{product} supports HA deployments on the following platforms: + +* {ocp-brand-name} +* {aks-name} +* {eks-name} +* {gke-brand-name} + +The HA deployments enable more resilient and reliable service availability across supported environments. + +In a single instance deployment, a failure makes the entire service unavailable. Software crashes, hardware issues, or other disruptions can interrupt development workflows and access to key resources. + +With HA enabled, you can scale the number of backend replicas to introduce redundancy. This setup ensures that if one pod or component fails, others continue to serve requests without disruption. The built-in load balancer manages ingress traffic and distributes the load across the available pods. Meanwhile, the {product-very-short} backend manages concurrent requests and resolves resource-level conflicts effectively. + +As an administrator, you can configure high availability by adjusting replica values in your configuration file: + +* If you installed using the Operator, configure the replica values in your `{product-custom-resource-type}` custom resource. +* If you used the Helm chart, set the replica values in the Helm configuration. diff --git a/titles/product_product/category-maps/optimize/con-configure-the-dynamic-plugins-cache.adoc b/titles/product_product/category-maps/optimize/con-configure-the-dynamic-plugins-cache.adoc index cc7b32c5dd..b34dde50e7 100644 --- a/titles/product_product/category-maps/optimize/con-configure-the-dynamic-plugins-cache.adoc +++ b/titles/product_product/category-maps/optimize/con-configure-the-dynamic-plugins-cache.adoc @@ -3,4 +3,14 @@ = Configure the dynamic plugins cache [role="_abstract"] -TODO: Replace this placeholder with an overview of Configure the dynamic plugins cache. +The dynamic plugins cache reduces platform boot time by storing already-installed plugins and skipping redundant downloads when the configuration does not change. + +When you enable dynamic plugins cache: + +* The system calculates a checksum of each plugin's YAML configuration (excluding `pluginConfig`). +* The system stores the checksum in a file named `dynamic-plugin-config.hash` within the plugin's directory. +* During boot, if a plugin's package reference matches the earlier installation and the checksum does not change, the system skips the download. +* The system automatically removes plugins that you disabled since the earlier boot. + +[NOTE] +To enable the dynamic plugins cache in {product-very-short}, the plugins directory `dynamic-plugins-root` must be a persistent volume. diff --git a/titles/product_product/category-maps/optimize/con-plan-production-scaling-using-high-availability-architecture.adoc b/titles/product_product/category-maps/optimize/con-plan-production-scaling-using-high-availability-architecture.adoc index 81ed7bb052..145551578b 100644 --- a/titles/product_product/category-maps/optimize/con-plan-production-scaling-using-high-availability-architecture.adoc +++ b/titles/product_product/category-maps/optimize/con-plan-production-scaling-using-high-availability-architecture.adoc @@ -3,4 +3,6 @@ = Plan production scaling using high availability architecture [role="_abstract"] -TODO: Replace this placeholder with an overview of Plan production scaling using high availability architecture. +Achieving high availability in Red Hat Developer Hub requires implementing redundancy and failover for both the backend service and its data dependencies. This is accomplished through horizontal scaling, database replication, and shared caching to ensure continuous operation during component failures. + +include::con-deploy-multiple-stateless-instances.adoc[leveloffset=+1] diff --git a/titles/product_product/category-maps/optimize/nav-configure-high-availability-to-maintain-performance.adoc b/titles/product_product/category-maps/optimize/nav-configure-high-availability-to-maintain-performance.adoc index 288ef479b0..f653e2b41f 100644 --- a/titles/product_product/category-maps/optimize/nav-configure-high-availability-to-maintain-performance.adoc +++ b/titles/product_product/category-maps/optimize/nav-configure-high-availability-to-maintain-performance.adoc @@ -5,3 +5,7 @@ :context: configure-high-availability-to-maintain-performance include::con-configure-high-availability-to-maintain-performance.adoc[leveloffset=+1] + +include::modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-operator-deployment.adoc[leveloffset=+1,navtitle="Configure with the Operator"] + +include::modules/configure_configuring-rhdh/proc-configure-high-availability-in-a-rhdh-helm-chart-deployment.adoc[leveloffset=+1,navtitle="Configure with the Helm chart"] diff --git a/titles/product_product/category-maps/optimize/nav-configure-the-dynamic-plugins-cache.adoc b/titles/product_product/category-maps/optimize/nav-configure-the-dynamic-plugins-cache.adoc index 3f68e4ef8e..4d09f59c40 100644 --- a/titles/product_product/category-maps/optimize/nav-configure-the-dynamic-plugins-cache.adoc +++ b/titles/product_product/category-maps/optimize/nav-configure-the-dynamic-plugins-cache.adoc @@ -6,4 +6,8 @@ include::con-configure-the-dynamic-plugins-cache.adoc[leveloffset=+1] -// TODO: include Create a persistent volume claim +include::modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-by-using-the-operator.adoc[leveloffset=+1,navtitle="Create PVC with Operator"] + +include::modules/configure_configuring-rhdh/proc-create-a-pvc-for-the-dynamic-plugin-cache-using-the-helm-chart.adoc[leveloffset=+1,navtitle="Create PVC with Helm Chart"] + +include::modules/configure_configuring-rhdh/proc-enable-the-rhdh-plugin-assets-cache.adoc[leveloffset=+1,navtitle="Enable the plugin assets cache"] diff --git a/titles/product_product/category-maps/optimize/nav-plan-production-scaling-using-high-availability-architecture.adoc b/titles/product_product/category-maps/optimize/nav-plan-production-scaling-using-high-availability-architecture.adoc index 0874308672..9b6fcdfb8b 100644 --- a/titles/product_product/category-maps/optimize/nav-plan-production-scaling-using-high-availability-architecture.adoc +++ b/titles/product_product/category-maps/optimize/nav-plan-production-scaling-using-high-availability-architecture.adoc @@ -5,3 +5,5 @@ :context: plan-production-scaling-using-high-availability-architecture include::con-plan-production-scaling-using-high-availability-architecture.adoc[leveloffset=+1] + +include::modules/discover_about-rhdh/con-high-availability-with-database-and-cache-layers.adoc[leveloffset=+1]