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.