Skip to content

Latest commit

 

History

History
131 lines (115 loc) · 6.97 KB

architecture.md

File metadata and controls

131 lines (115 loc) · 6.97 KB

Architecture

Deployed State

              +-------------------------OmegaGraf Host--------------------------+  +--------+
              |                                                         +-------+--+        ++
              |    #---------------------Host Network-------------------+--#    |  |        ||
              |                                                         |       |  |        ||
              | +---------------------------Docker----------------------+-----+ |  |  User  ||
              | |                                                       |     | |  |        ||
+---------+   | |  #-------+-----------OmegaGraf Network-----------+----+--#  | |  |        ||
|         ++  | |          |                   |                   |    |     | |  |        ||
|         ||  | |  +-------+-------+   +-------+-------+   +-------+----v--+  | |  ++-------+|
|         ++--+-+->|   Telegraf    |<--|  Prometheus   |-->|    Grafana    |  | |   +--------+
| vCenter ||  | |  +---------------+   +--------+------+   +---------------+  | |
|         ||  | |  |    Config     |   | Config | Data |   |     Data      |  | |
|         ||  | |  +-------+-------+   +----+---+---+--+   +-------+-------+  | |
|         ||  | |          |                |       |              |          | |
++--------+|  | +----------+----------------+-------+--------------+----------+ |
 +---------+  |            |                |       |              |            |
              | +----------v----------------v-------v--------------v----------+ |
              | |                         Filesystem                          | |
              | +-------------------------------------------------------------+ |
              +-----------------------------------------------------------------+

File Layout

OmegaGraf packages all parts of the application in the dotnet release. This emphasizes the "portable" nature of our application.

+--------------------+ +----------------+ +----------------------------+
|                    | |                | |          API (/)           |
|                    | |                | +----------------------------+
|                    | |  Application   | +----------------------------+
|                    | |                | |      Docs (/api-docs)      |
|                    | |                | +----------------------------+
|                    | +----------------+  ----------------------------
|                    | +----------------+ +----------------------------+
|                    | |                | |     Web Interface (/)      |
|                    | |                | +----------------------------+
|     OmegaGraf      | | Static Hosting | +----------------------------+
|                    | |                | |  Swagger UI (/swagger-ui)  |
|                    | |                | +----------------------------+
|                    | +----------------+  ----------------------------
|                    | +----------------+ +----------------------------+
|                    | |                | |         Dashboards         |
|                    | |                | +----------------------------+
|                    | |      Data      | +----------------------------+
|                    | |                | |       Configuration        |
|                    | |                | +----------------------------+
+--------------------+ +----------------+  ----------------------------

Input Handling

OmegaGraf removes control over sensitive aspects of configuration from the user.

Input Convention

OmegaGraf's general convention is to take data from the host (via environment or parameters), and bind that data to a model which is stored and accessible for the rest of the application lifecycle.

For all inputs, inbound data is also bound to a model. On an as-needed basis, data is merged from the aforementioned models. Merged data will be placed into a new model, or passed as parameters depending on context.

             +----------------OmegaGraf----------------+
+----------+ | +----------+  +---------+  +----------+ | +---------+
|          | | |          |  |         |  |          | | |         |
|          +-+->   Bind   +-->  Merge  <--+   Bind   <-+-+  Input  |
|          | | |          |  |         |  |          | | |         |
|   Host   | | +----------+  +----+----+  +----------+ | +---------+
|          | |               +----v----+               |
|          | |               |         |               |
|          <-+---------------+ Action  |               |
|          | |               |         |               |
+----------+ |               +---------+               |
             +-----------------------------------------+

A simplified example can be observed in the following diagram.

             +----------------OmegaGraf----------------+
+----------+ | +----------+  +---------+  +----------+ | +---------+
|          | | |          |  |         |  |          | | |         |
|          +-+-> HostData +-->  ConfF  <--+  ConfIn  <-+-+ foo/bar |
|          | | |          |  |         |  |          | | |         |
| root is: | | +----------+  +----+----+  +----------+ | +---------+
|  /var/1  | |               +----v----+               |
|          | |               |         |               |
|          <-+/var/1/foo/bar-+  Write  |               |
|          | |               |         |               |
+----------+ |               +---------+               |
             +-----------------------------------------+

Container Requests

Requests will use one or more input pipelines (see above) for a container deployment.

              +---------------------+
              |         API         |
              +---------------------+
                         |
                         v
              +---------------------+
 +------------|  Container Module   |------------+
 |  Binding   +---------------------+   Binding  |
 |                                               |
++-----------------------------------------------++
|                Data Merge Layer                 |<-+
++-----------------------------------------------++  |
 |                                               |   |
 |  +-------------------+ +-------------------+  |   |
 +->|   Build Models    | |   Config Models   |<-+   |
    +-------------------+ +-------------------+      |
              |                     |                |
              v                     v                |
    +-------------------+ +-------------------+      |
    |   Docker Client   | |        I/O        |      |
    +-------------------+ +-------------------+      |
              |                     |                |
              v                     v                |
    +--------------------+--------------------+      |
    |       Docker       |     Filesystem     |      |
    +--------------------+--------------------+      |
    |                  Host                   |------+
    +-----------------------------------------+