| ← Back to README | Configuration → |
Modern software systems are increasingly composed of multiple independent services that need to work together. However, setting up and managing these systems presents several challenges:
Pactown addresses these challenges by:
┌─────────────────────────────────────────────────────────────────────┐
│ Pactown Ecosystem │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ saas.pactown.yaml │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Orchestrator │ │
│ │ • Reads configuration │ │
│ │ • Resolves dependencies │ │
│ │ • Manages lifecycle │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Dependency Resolver │ │
│ │ • Topological sort │ │
│ │ • Circular detection │ │
│ │ • Environment injection │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Sandbox Manager │ │
│ │ • Creates isolated sandboxes │ │
│ │ • Manages processes │ │
│ │ • Handles cleanup │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │Service1│ │Service2│ │Service3│ │Service4│ │Service5│ │
│ │ :8001 │ │ :8002 │ │ :8003 │ │ :8004 │ │ :8005 │ │
│ │markpact│ │markpact│ │markpact│ │markpact│ │markpact│ │
│ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Pactown Registry │
├─────────────────────────────────────────────────────────────────────┤
│ • Stores markpact artifacts │
│ • Version management │
│ • Namespace isolation │
│ • REST API for publish/pull │
└─────────────────────────────────────────────────────────────────────┘
The central configuration file that defines:
Manages the complete lifecycle:
Ensures correct startup order:
Isolates each service:
Shares artifacts across projects:
Services communicate via:
Example:
services:
api:
port: 8001
health_check: /health
web:
port: 8002
depends_on:
- name: api
env_var: API_URL # Injected as API_URL=http://localhost:8001
Build complete platforms with:
Deploy polyglot microservices:
Standardize team environments:
Quick experimentation:
| Traditional | Pactown |
|---|---|
| Docker Compose + separate docs | Single source of truth |
| Manual dependency management | Automatic resolution |
| Complex setup scripts | pactown up |
| Documentation gets stale | Docs = code |
| Per-language tooling | Unified orchestration |