Blueboat was originally named rusty-workers and used the Isolate model for workload isolation, similar to Cloudflare Workers. Later I changed to use process-based isolation because it seems that a shared-process multi-tenant system is overly complex for self-hosting users like myself to operate (automatically applying security patches within hours, sophisticated scheduling strategy to prevent ill-behaving applications from crashing the process, auditing each dependency for memory safety issues, etc.).
Blueboat is not yet optimized for global-scale operation but it is definitely the goal. Things not implemented include: custom TLS termination (which enables 0ms cold start), HTTP routing, and a single dashboard to operate the entire system.
Currently, the user needs to set up their own infrastructure for deploying Blueboat globally:
- Cross-region replicated S3-compatible storage for distributing code and config.
- Kafka instance at each region for log collection and task scheduling.
- A way to route traffic to a nearby location (usually DNS / Anycast).
- Log aggregator (I use ClickHouse for this).