EN | RU
Enterprise Service Bus platform for distributed systems integration based on Event-Driven Architecture (EDA). Provides reliable asynchronous message routing, transformation, and enrichment between decoupled systems using Apache Kafka as the event backbone. Implements Enterprise Integration Patterns (EIP) with guaranteed delivery, error handling, and observability.
Language: Go 1.26.1
Module: github.com/async-human/esb
| Component | Port | Description |
|---|---|---|
| PostgreSQL | 5432 | Relational database for metadata and configuration |
| Kafka (KRaft) | 9092 | Event streaming broker |
| Kafka UI | 8080 | Web UI for Kafka cluster management |
| Elasticsearch | 9200 | Log storage and full-text search |
| Kibana | 5601 | Log visualization (Elasticsearch UI) |
| Jaeger | 16686 | Distributed tracing UI and OTLP endpoint |
| Prometheus | 9090 | Metrics collection and storage |
| Grafana | 3000 | Dashboards and visualization |
| OpenTelemetry Collector | 4317 / 4318 | OTLP receiver (gRPC / HTTP), telemetry pipeline |
| Service | Port | Swagger UI |
|---|---|---|
| inbound-connector | 8081 | http://localhost:8081/docs |
| management-api | 8082 | http://localhost:8082/docs |
| outbound-connector | 8083 | http://localhost:8083/docs |
| router-worker | 8084 | http://localhost:8084/docs |
Observability stack: OpenTelemetry SDK → OTLP Collector → Jaeger (traces), Elasticsearch (logs), Prometheus (metrics).
The deployment/ directory contains Docker Compose configurations for infrastructure and services. Each service has its own subdirectory with .env.example, docker-compose.yml, and Dockerfile.
Infrastructure core components are defined under deployment/core/ with modular compose files per component. K8s and Terraform configurations are present under deployment/core/k8s/ and deployment/core/terraform/.
Service configuration via .env files in deployment/<service>/. Global environment variables defined in deployment/.env. Network: bridge driver (esb_network).
- Go 1.26+
- go-task
- Docker & Docker Compose
task infra:up # Start all infrastructure containers
task infra:down # Stop and remove containers
task run SERVICE=<name> # Run a service locally with env from deployment/<service>/.envtask api:generate SERVICE=<name> # Generate Go code from OpenAPI spec (reads from shared/api/<name>/v1/)
task api:gen-inbound # Shorthand: generate API for inbound-connectorSwagger UI for running services: http://localhost:<port>/docs (e.g. http://localhost:8081/docs for inbound-connector).
task test:load # Run load testing with k6 (default: scripts/load-test.js)
task test:load SCRIPT=<path> # Run a custom k6 script (e.g., SCRIPT=scripts/stress-test.js)