From f4397eb476620e8ec7461632e4ff6c242a2a15af Mon Sep 17 00:00:00 2001 From: "R. Tyler Croy" Date: Sat, 27 Jul 2019 10:21:28 -0700 Subject: [PATCH] Add a rough system diagram from my notebook The entities represented I believe are the bare minimum number of services necessary to make things roughly work. The idea being that everything effectively orients around the eventbus, and "extensibility" means tuning into or publishing events rather than in-memory anything. Fixes #20 --- Makefile | 5 +++-- system.dot | 29 +++++++++++++++++++++++++++++ system.png | Bin 0 -> 43071 bytes 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 system.dot create mode 100644 system.png diff --git a/Makefile b/Makefile index c57e12d..3932a81 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,6 @@ SUB_DIRS=grammar ################################################################################ ## Phony targets - # Cute hack thanks to: # https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html help: ## Display this help text @@ -39,7 +38,9 @@ prereqs: scripts/prereqs.sh ## Check that this system has the necessary tools to clean: ## Clean all temporary/working files $(foreach dir, $(SUB_DIRS), $(MAKE) -C $(dir) $@) +diagram: system.png system.dot ## Generate the diagrams describing otto + dot -Tpng -o system.png system.dot + ################################################################################ - .PHONY: all build check clean depends lint swagger diff --git a/system.dot b/system.dot new file mode 100644 index 0000000..cdf1d8a --- /dev/null +++ b/system.dot @@ -0,0 +1,29 @@ +digraph { + label="Otto system design"; + + node[shape="box", style="rounded"] + + node[shape="box", style="square"] + orchestrator; frontend; datastore; objectstore; webhooks; agents; + node[shape="parallelogram", style=""] + eventbus; + + webhooks -> eventbus[color="blue", label="write events"]; + eventbus -> frontend[color="red", label="subscribe to live updates"]; + + orchestrator -> datastore[color="blue", label="create runs"]; + orchestrator -> eventbus[color="purple", dir="both", label="read/write events"]; + orchestrator -> agents[color="purple", dir="both", label="create and control agents"]; + + agents -> eventbus[color="blue", label="write events"]; + agents -> datastore[color="blue", label="persist results"]; + agents -> objectstore[color="blue", label="archive artifacts"]; + + datastore -> frontend[color="red", label="read runs"]; + objectstore -> frontend[color="red", label="read artifacts"]; + objectstore -> agents[color="red", label="fetch artifacts/stashes"]; + + //{rank=same; orchestrator agents eventbus} + //{rank=same; message input} +} + diff --git a/system.png b/system.png new file mode 100644 index 0000000000000000000000000000000000000000..1af02543e968b75be40005114914d8418a9d1f37 GIT binary patch literal 43071 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