"Michael Zhang Web Services"
crates/server | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.md | ||
rustfmt.toml |
Michael Zhang Web Services (MZWS)
Welcome to MZWS!
Design Principles
- Onboarding should be simple. Download a binary / run a script, then add more servers / storage / as necessary. Configuration should be incremental, in that a basic setup will work and more features can be added with more configuration.
Requirements for setup
- Just a single machine: host services locally
- With an internal IP: serve to that IP
- With a public IP: automatic ACME certificates
- With more nodes: automatic consensus across the cluster
- With more storage: automatic CRUSH for S3
Features
Services:
- Object storage
- Managed static websites
- Managed DB
Features:
- Manage collections of services
- ^Programmatically
Technical docs
Raft docs
- A node initially has no raft startup
Overall state consists of:
- A list of nodes, along with their UUIDs
- Which nodes are exit nodes, i.e hooked up to which public ports
- The exit nodes will receive requests and forward them to others
- TODO: For now, just a single load balancer. In the future, have others?
- Which nodes are available to run Docker services, and which services are running on which hosts
Assumptions
- All nodes can reach each other directly. This is either via public internet or a private net like Tailscale. Bastion systems are not supported.