isA Cloud is the isA platform's cloud-native infrastructure center, providing:
isa_common Python Library (native async clients)
- Direct async connections to 8 infrastructure backends
- No intermediate gRPC layer β clients connect to native ports
- Source in
isA_common/isa_common/
Infrastructure Deployment (Kubernetes)
- PostgreSQL, Redis, Neo4j, MinIO, NATS, Mosquitto, Loki, Grafana, Qdrant
- Consul (service discovery), APISIX (API gateway)
GitOps Configuration
- Kubernetes deployment configs (Kustomize)
- ArgoCD application definitions
- Multi-environment management (dev/staging/production)
CI/CD Pipeline
- GitHub Actions automated builds
- Image push to ECR
- Automated deployment config updates
These services have source code in their own repos; isA_Cloud contains only their Kubernetes deployment configs:
- isA_user β 27 user microservices (account, auth, session, organization...)
- isA_Agent β AI agent service
- isA_MCP β Model Control Protocol service
- isA_Model β AI model service
- isa-data β Data service
- web-service β Web service
External Traffic
β
βΌ
βββββββββββββββββ
β Apache APISIX β API Gateway (Port: 9080)
β (Gateway) β - Dynamic routing (auto-sync Consul)
βββββββββ¬ββββββββ - Auth/rate-limit/CORS
β
βΌ
βββββββββββββββββ
β Consul β Service Discovery
β (42 services) β - Health checks
βββββββββ¬ββββββββ - KV storage
β
ββββββββββββββββββββββββΌβββββββββββββββββββββββ
β β β
βΌ βΌ βΌ
ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ
β Infrastructureβ β isa_common β β Business β
β (this repo β β Python SDK β β Services β
β deploys) β β (this repo) β β (other repos)β
ββββββββββββββββ€ βββββββββββββββββ€ ββββββββββββββββ€
β PostgreSQL βββββββ AsyncPostgres β β isA_user β
β Redis βββββββ AsyncRedis β β ββ auth β
β Neo4j βββββββ AsyncNeo4j β β ββ account β
β MinIO βββββββ AsyncMinIO β β ββ ... (27) β
β NATS βββββββ AsyncNATS β β β
β Mosquitto βββββββ AsyncMQTT β β isA_Agent β
β Loki β β AsyncDuckDB β β isA_MCP β
β Grafana β β AsyncQdrant β β isA_Model β
β Qdrant β β ConsulRegistryβ β isa-data β
ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ
Native Ports Direct
(5432,6379,7687, Connection
4222,9000,1883, (no gRPC
6333,3100) layer)
1. Developer commits code
ββ isA_Cloud: modify isa_common library or deployment configs
ββ External repo: modify business service code
β
βΌ
2. CI Pipeline (GitHub Actions)
ββ Lint & Test (pytest for Python, security scans)
ββ Build Docker images
ββ Push to ECR
ββ External repos trigger repository_dispatch β isA_Cloud
β
βΌ
3. Update GitOps config (automatic)
ββ CD workflow updates deployment.yaml with new image tag
ββ Git commit & push
β
βΌ
4. ArgoCD auto-sync (within 30 seconds)
ββ Detects Git changes
ββ Applies to Kubernetes
β
βΌ
5. Kubernetes rolling update
ββ Creates new Pods β health check β Consul registration
ββ APISIX route sync (CronJob every 5 minutes)
isA_Cloud/
βββ isA_common/ # Python infrastructure library
β βββ isa_common/
β β βββ __init__.py # Exports (v0.3.1)
β β βββ async_base_client.py # Abstract base for all clients
β β βββ async_client_config.py
β β βββ async_redis_client.py
β β βββ async_postgres_client.py
β β βββ async_nats_client.py
β β βββ async_neo4j_client.py
β β βββ async_minio_client.py
β β βββ async_qdrant_client.py
β β βββ async_duckdb_client.py
β β βββ async_mqtt_client.py
β β βββ consul_client.py # Service discovery
β β βββ events/ # Event-driven billing architecture
β βββ tests/ # pytest test suite
β βββ pyproject.toml
β
βββ deployments/
β βββ kubernetes/ # Kustomize configs
β β βββ local/ # KIND cluster
β β βββ staging/ # Staging K8s
β β βββ production/ # Production K8s (HA)
β βββ argocd/ # ArgoCD app-of-apps
β βββ terraform/ # AWS IaC (staging)
β βββ charts/isa-service/ # Generic Helm chart
β
βββ .github/workflows/ # CI/CD pipelines
βββ tests/ # Integration test scripts
β βββ contracts/ # Logic contracts (8 services)
β βββ test_auth_via_apisix.sh
β βββ ...
β
βββ docs/ # Documentation
Native async clients connecting directly to backend services on their native ports:
| Client | Backend | Port | Methods | Status |
|---|---|---|---|---|
| AsyncRedisClient | Redis | 6379 | 53 | Complete |
| AsyncPostgresClient | PostgreSQL | 5432 | 19 | Complete |
| AsyncNATSClient | NATS | 4222 | 33 | Complete |
| AsyncNeo4jClient | Neo4j | 7687 | 37 | Partial |
| AsyncMinIOClient | MinIO | 9000 | 35 | Complete |
| AsyncQdrantClient | Qdrant | 6333 | 25 | Complete |
| AsyncDuckDBClient | DuckDB | embedded | 27 | Complete |
| AsyncMQTTClient | Mosquitto | 1883 | 29 | Complete |
Additional local-mode clients: AsyncSQLiteClient, AsyncLocalStorageClient, AsyncChromaClient, AsyncMemoryClient
Usage:
from isa_common import AsyncRedisClient, AsyncPostgresClient, AsyncNATSClient
# Direct connection to Redis on native port
async with AsyncRedisClient(host="localhost", port=6379) as redis:
await redis.set("session:user_123", session_data, ttl=3600)
session = await redis.get("session:user_123")
# Direct connection to PostgreSQL
async with AsyncPostgresClient(host="localhost", port=5432, database="mydb") as pg:
rows = await pg.query("SELECT * FROM users WHERE org_id = $1", "org_123")
# Direct connection to NATS with JetStream
async with AsyncNATSClient(host="localhost", port=4222) as nats:
await nats.publish("orders.created", {"order_id": "123"})
messages = await nats.pull_messages("USAGE_EVENTS", "billing-consumer")- Unified traffic entry (Port: 9080)
- Dynamic routing (auto-sync from Consul)
- Auth (JWT/Key Auth), rate limiting, CORS
- Admin API:
http://localhost:9180
- Service registration/discovery, health checks, KV config
- 42 registered services (33 business + 9 infrastructure)
- UI:
http://localhost:8500
- Git β Kubernetes auto-sync, declarative deployments
- Multi-environment: dev (auto-sync), staging (auto-sync), production (manual sync)
| Tool | Version | Install |
|---|---|---|
| Docker | 20.10+ | Docker Desktop |
| kubectl | 1.28+ | brew install kubectl |
| kind | 0.20+ | brew install kind |
| Python | 3.12+ | brew install python |
docker compose up -d # Start all 11 infrastructure services
docker compose ps # Check status
make health # Quick health checkmake install # Or: cd isA_common && pip install -e ".[dev]"make test # All tests
make test-unit # Unit tests only (no infra needed)
make test-service s=redis # Single service tests
make test-smoke # Billing pipeline smoke testscd deployments/kubernetes/scripts
./kind-setup.sh # Create KIND cluster
./kind-deploy.sh # Deploy all services
./check-services.sh # Check status
# Access services
open http://localhost:9080 # APISIX Gateway
open http://localhost:8500 # Consul UI
open http://localhost:3000 # Grafana| Service | Port | Purpose |
|---|---|---|
| APISIX | 9080, 9180 | API Gateway |
| Consul | 8500, 8600 | Service Discovery |
| PostgreSQL | 5432 | Relational Database |
| Redis | 6379 | Cache/Sessions |
| Neo4j | 7474, 7687 | Graph Database |
| MinIO | 9000, 9001 | Object Storage |
| NATS | 4222, 8222 | Message Queue |
| Mosquitto | 1883 | MQTT Broker |
| Loki | 3100 | Log Aggregation |
| Grafana | 3000 | Visualization |
| Qdrant | 6333 | Vector Database |
| Environment | Cluster | Namespace | Branch |
|---|---|---|---|
| dev | KIND local | isa-cloud-dev | develop |
| staging | KIND/EKS | isa-cloud-staging | main |
| production | EKS/GKE | isa-cloud-production | production |
See Production Deployment Guide for EKS/GKE setup.
- CI/CD Pipeline β GitHub Actions + ArgoCD workflow
- Consul Guide β Service discovery operations
- APISIX Route Sync β Auto route sync
- Production Deploy β EKS/GKE + HPA
- NATS Consumer Lag β Billing event delays
feat: New feature
fix: Bug fix
docs: Documentation
refactor: Refactoring
test: Tests
chore: Build/tooling
MIT License
Made with care by the isA Team