feat: add NATS + Dapr infrastructure for event-driven architecture
- infra/compose/nats.yml: NATS server with JetStream, persistence volume, healthcheck - infra/compose/dapr.yml: Dapr placement service for sidecar coordination - infra/dapr/: Dapr global config, pubsub component (NATS), statestore (Redis) - infra/compose/scraper.yml: add Dapr sidecar container + depends_on nats/dapr - docs/add-dapr-service.md: guide for integrating Dapr into new services - docs/add-new-app.md: add Dapr sidecar step - ARCHITECTURE.md: add NATS/Dapr to infra table + service mesh diagram - infra/README.md: update layout and deployment order - deploy-docker.yml: add nats.yml + dapr.yml to ALL_COMPOSE_FILES Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
d546a1acf9
commit
ea168b4b20
@@ -5,17 +5,21 @@ Aplikasi dipisah sebagai submodule agar frontend, API, dan service pendukung bis
|
||||
|
||||
## Services
|
||||
|
||||
| Service | Path | Notes |
|
||||
| :------ | :------------- | :------------------ |
|
||||
| Scraper | `apps/scraper` | Web scraper service |
|
||||
| Service | Path | Notes |
|
||||
| :------ | :------------- | :----------------------------- |
|
||||
| Scraper | `apps/scraper` | Web scraper service + Dapr SDK |
|
||||
| NATS | — | Message broker + JetStream |
|
||||
| Dapr | — | Sidecar runtime (per service) |
|
||||
|
||||
## Infrastructure
|
||||
|
||||
File compose berada di `infra/compose/`:
|
||||
|
||||
- `traefik.yml`: reverse proxy Traefik untuk semua layanan.
|
||||
- `shared.yml`: Redis.
|
||||
- `scraper.yml`: manifest deploy per service (image GHCR bertag SHA).
|
||||
- `shared.yml`: Redis (cache + Dapr state store).
|
||||
- `nats.yml`: NATS message broker dengan JetStream persistence.
|
||||
- `dapr.yml`: Dapr placement service untuk koordinasi sidecar.
|
||||
- `scraper.yml`: manifest deploy per service (app + Dapr sidecar).
|
||||
|
||||
Dockerfile per service berada di `infra/docker/`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user