Overview of Elder's architecture, design decisions, and technical implementation.
Elder is a multi-tier infrastructure tracking platform built with Python, Flask, PostgreSQL, and Redis.
┌────────────────────────────────────────────────┐
│ Client Layer │
│ Web UI | CLI Tools | External Integrations │
└────────────┬───────────────────────────────────┘
│
┌────────────┴───────────────────────────────────┐
│ Application Layer │
│ REST API | gRPC API | Connector Service │
└────────────┬───────────────────────────────────┘
│
┌────────────┴───────────────────────────────────┐
│ Data Layer │
│ PostgreSQL | Redis | Prometheus │
└────────────────────────────────────────────────┘
- Flask REST API - Primary API interface
- React Web UI - Interactive web interface
- Connector Service - Multi-cloud data sync
- gRPC API - High-performance API (Enterprise)
- PostgreSQL - Primary data store
- Redis/Valkey - Caching and sessions
- Prometheus - Metrics and monitoring
- Organizations - Hierarchical structures (Company → Dept → Team)
- Entities - Infrastructure resources (compute, network, users)
- Dependencies - Relationships between entities
- Issues - GitHub-style issue tracking
- Identities - Users and service accounts
- Python 3.13+ - Primary language
- Flask 3.0+ - Web framework
- SQLAlchemy - ORM
- PostgreSQL 15+ - Database
- Redis 7+ - Cache
- React 18+ - UI framework
- TypeScript - Type safety
- vis.js - Graph visualization
- Tailwind CSS - Styling
- Docker - Containerization
- Docker Compose - Local development
- Prometheus/Grafana - Monitoring
- Envoy - gRPC-Web proxy
- Rich cloud SDK ecosystem (AWS, GCP, Azure)
- Rapid development with Flask
- Excellent async support
- Strong data processing libraries
- Lightweight and flexible
- Microservices-friendly
- Easy testing
- Fine-grained control
- JSONB support for flexible metadata
- Excellent query optimizer
- Robust ACID compliance
- JSON operations and indexing
- Type-safe ORM
- Supports multiple databases
- Migration management with Alembic
- Good performance
- Resource-based URLs
- Standard HTTP methods
- Stateless API
- Versioned endpoints
- API layer (Flask)
- Business logic (models)
- Data access (SQLAlchemy)
- External sync (Connector)
- Horizontal scaling (stateless API)
- Database read replicas
- Redis caching
- Async operations
- Defense in depth
- RBAC + resource-level permissions
- Input validation everywhere
- Audit logging
- Connection pooling (20 connections)
- Query optimization with indexes
- Batch operations for bulk data
- Read replicas for scaling
- Redis for entity/org data
- HTTP caching with ETags
- Connection pooling
- Connector service uses asyncio
- Background task processing
- Non-blocking I/O
- Local (username/password)
- API Keys (Bearer tokens)
- SAML/OAuth2 (Enterprise)
- LDAP (Enterprise)
- Global Roles: Super Admin, Org Admin, Editor, Viewer
- Resource Roles: Maintainer, Operator, Viewer (per org/entity)
- Hierarchical permissions
- Bcrypt password hashing
- Encrypted secrets storage
- TLS 1.2+ enforcement
- SQL injection prevention (ORM)
- XSS prevention
- CSRF protection
- HTTP request metrics
- Database connection/query metrics
- Connector sync metrics
- Custom business metrics
- Structured JSON logging
- Configurable log levels
- Correlation IDs
- Audit trail
/healthz- Liveness/readyz- Readiness/metrics- Prometheus metrics
Load Balancer
↓
API Pods (2+) ──→ PostgreSQL (primary + replicas)
↓
Redis Cluster
- Multiple API replicas
- Database replication
- Redis Sentinel
- Load balancing
- Complete Architecture Guide - In-depth technical details
- Data Model - Database schema
- API Design - API conventions
- Deployment - Production deployment
- Connector Service - Multi-cloud sync architecture
- gRPC API - gRPC implementation
- Monitoring - Logging and metrics
- Entities: Tested to 100K entities
- API: 1000+ req/sec per instance
- Graph rendering: 1000 nodes @ < 2sec
- Horizontal: Add more API pods
- Vertical: Increase database resources
- Caching: Aggressive cache strategy
- Sharding: Future consideration
- Event-Driven - Kafka for real-time events
- Microservices - Split connector, graph services
- Multi-Region - Geographic distribution
- GraphQL - Alternative API interface
- CQRS - Separate read/write models