"Michael Zhang Web Services"
Find a file
2024-11-25 19:30:41 -06:00
crates/server wip 2024-11-25 19:30:41 -06:00
.gitignore wip 2024-11-25 19:30:41 -06:00
Cargo.lock wip 2024-11-25 19:30:41 -06:00
Cargo.toml wip 2024-11-25 19:30:41 -06:00
README.md wip 2024-11-25 19:30:41 -06:00
rustfmt.toml wip 2024-11-25 19:30:41 -06:00

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.