cloud/bmaas/server: init
This adds the BMaaS server alongside its first functionality: serving an
Agent heartbeat API.
This allows (untrusted) Agents to communicate with the rest of the
system by submitting heartbeats which may include a hardware report.
The BMaaS server will likely grow to implement further functionality as
described in its README.
Change-Id: I1ede02121b3700079cbb11295525f4c167ee1e7d
Reviewed-on: https://review.monogon.dev/c/monogon/+/988
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/cloud/bmaas/server/README.md b/cloud/bmaas/server/README.md
new file mode 100644
index 0000000..b84ae25
--- /dev/null
+++ b/cloud/bmaas/server/README.md
@@ -0,0 +1,27 @@
+BMaaS Server
+===
+
+Background
+---
+
+This server provides an interface to the BMaaS database/state over a gRPC API. Most components of the BMaaS system talk to the database directly whenever possible. Everything else communicates through this server.
+
+Currently this is:
+
+1. Agents running on machines, as they should only be allowed to access/update information about the machine they're running on, and they're generally considered untrusted since they run on end-user available machines.
+
+In the future this server will likely also take care of:
+
+1. A debug web API for developers/administrators to inspect database/BMDB state.
+2. Periodic batch jobs across the entire BMDB, like consistency checks.
+3. Exporting BMDB state into monitoring systems.
+4. Coordinating access to the BMDB systems if the current direct-access-to-database architecture stops scaling.
+
+Running
+---
+
+ bazel run //cloud/bmaas/server/cmd -- -srv_dev_certs -bmdb_eat_my_data
+
+Although that's not very useful in itself currently. Instead, most functionality is currently exercised through automated tests.
+
+TODO(q3k): document complete BMaaS dev deployment (multi-component, single BMDB).
\ No newline at end of file