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 0000000..1af0254 Binary files /dev/null and b/system.png differ