Browse Source

Merge pull request #24056 from abpframework/skoc/article

Article: 5 Things You Should Care About When You Deploy Your Solution to a Clustered Environment
pull/24073/head
Alper Ebiçoğlu 3 months ago
committed by GitHub
parent
commit
7baba1ad5d
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 88
      docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/POST.md
  2. BIN
      docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/all.png
  3. BIN
      docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/background.png
  4. BIN
      docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/cover-image.png
  5. BIN
      docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/database.png
  6. 27
      docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/dev-to.md
  7. BIN
      docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/logging.png
  8. BIN
      docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/shared.png
  9. BIN
      docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/stateless.png

88
docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/POST.md

@ -0,0 +1,88 @@
# 5 Things You Should Keep in Mind When Deploying to a Clustered Environment
Let’s be honest — moving from a single server to a cluster sounds simple on paper.
You just add a few more machines, right?
In practice, it’s the moment when small architectural mistakes start to grow legs.
Below are a few things that experienced engineers usually double-check before pressing that “Deploy” button.
---
## 1️⃣ Managing State the Right Way
Each request in a cluster might hit a different machine.
If your application keeps user sessions or cache in memory, that data probably won’t exist on the next node.
That’s why many teams decide to push state out of the app itself.
![Stateless vs Stateful](stateless.png)
**A few real-world tips:**
- Keep sessions in **Redis** or something similar instead of local memory.
- Design endpoints so they don’t rely on earlier requests.
- Don’t assume the same server will handle two requests in a row — it rarely does.
---
## 2️⃣ Shared Files and Where to Put Them
Uploading files to local disk? That’s going to hurt in a cluster.
Other nodes can’t reach those files, and you’ll spend hours wondering why images disappear.
![Shared Storage](shared.png)
**Better habits:**
- Push uploads to **S3**, **Azure Blob**, or **Google Cloud Storage**.
- Send logs to a shared location instead of writing to local files.
- Keep environment configs in a central place so each node starts with the same settings.
---
## 3️⃣ Database Connections Aren’t Free
Every node opens its own database connections.
Ten nodes with twenty connections each — that’s already two hundred open sessions.
The database might not love that.
![Database Connections](database.png)
**What helps:**
- Put a cap on your connection pools.
- Avoid keeping transactions open for too long.
- Tune indexes and queries before scaling horizontally.
---
## 4️⃣ Logging and Observability Matter More Than You Think
When something breaks in a distributed system, it’s never obvious which server was responsible.
That’s why observability isn’t optional anymore.
![Observability](logging.png)
**Consider this:**
- Stream logs to **ELK**, **Datadog**, or **Grafana Loki**.
- Add a **trace ID** to every incoming request and propagate it across services.
- Watch key metrics with **Prometheus** and visualize them in Grafana dashboards.
---
## 5️⃣ Background Jobs and Message Queues
If more than one node runs the same job, you might process the same data twice — or delete something by mistake.
You don’t want that kind of excitement in production.
![Background Jobs](background.png)
**A few precautions:**
- Use a **distributed lock** or **leader election** system.
- Make jobs **idempotent**, so running them twice doesn’t break data.
- Centralize queue consumers or use a proper task scheduler.
---
## Wrapping Up
Deploying to a cluster isn’t only about scaling up — it’s about staying stable when you do.
Systems that handle state, logging, and background work correctly tend to age gracefully.
Everything else eventually learns the hard way.
> A cluster doesn’t fix design flaws — it magnifies them.

BIN
docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/all.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

BIN
docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/background.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/cover-image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 KiB

BIN
docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/database.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

27
docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/dev-to.md

@ -0,0 +1,27 @@
# 5 Things You Should Keep in Mind When Deploying to a Clustered Environment
Let’s be honest — moving from a single server to a cluster sounds simple on paper.
You just add a few more machines, right?
In practice, it’s the moment when small architectural mistakes start to grow legs.
Below are a few things that experienced engineers usually double-check before pressing that “Deploy” button.
---
## 1️⃣ Managing State the Right Way
---
## 2️⃣ Shared Files and Where to Put Them
---
## 3️⃣ Database Connections Aren’t Free
---
## 4️⃣ Logging and Observability Matter More Than You Think
---
## 5️⃣ Background Jobs and Message Queues
---
![all](all.png)
👉 Read the full guide here: [5 Things You Should Keep in Mind When Deploying to a Clustered Environment](https://abp.io/community/articles/)

BIN
docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/logging.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/shared.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
docs/en/Community-Articles/2025-10-17-5-Things-Deploy-Clustered-Environment/stateless.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Loading…
Cancel
Save