Architecture
Understanding Sail's architecture and design principles.
Overview
Sail consists of three main components working together:
βββββββββββββββββββ
β Web UI β React Admin Interface
β (React 18) β
ββββββββββ¬βββββββββ
β REST API
β
βββββββββββββββββββ
β Sail API β Management & gRPC
β (ASP.NET Core) β
ββββββββββ¬βββββββββ
β
β
βββββββββββββββββββ Change βββββββββββββββββββ
β MongoDB ββββStreamsββββββ Sail Compass β
βββββββββββββββββββ ββββββββββ¬βββββββββ
β gRPC
β
βββββββββββββββββββ
β Sail Proxy β
β (YARP Gateway) β
βββββββββββββββββββ
Components
Sail Management API
Control plane providing REST API and gRPC services for configuration management.
- β’ Routes and cluster configuration
- β’ Certificate management
- β’ Policy configuration (CORS, rate limiting, auth)
MongoDB Storage
Persistent storage with Change Streams for real-time updates.
- β’ Stores all configuration
- β’ Emits change events
- β’ Enables instant synchronization
Sail Compass
Configuration watcher embedded in Sail.Proxy.
- β’ Watches MongoDB Change Streams
- β’ Updates YARP configuration in real-time
- β’ Manages dynamic policies
Sail Proxy
Data plane handling actual client requests.
- β’ Built on YARP reverse proxy
- β’ TLS termination and routing
- β’ Authentication, rate limiting, CORS
Web UI
React-based admin interface.
- β’ Visual configuration management
- β’ Real-time status monitoring
- β’ Policy editors
Design Principles
Zero-Downtime Configuration
All changes take effect immediately via MongoDB Change Streams without restarting the gateway.
Separation of Concerns
Control plane (management) and data plane (proxy) are completely separate, enabling independent scaling.
Cloud-Native Ready
Stateless proxy instances can scale horizontally, sharing configuration via MongoDB.