Sail

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.

See also