Skip to content

Vertigo Architecture Summary

ng-druid edited this page Aug 29, 2022 · 9 revisions

We have rolled our own highly available, inexpensive, low latency, scalable data store supported by the industries leading cloud solutions and programming languages. Our datastore operates with low impact on the environment only using the most performant programming languages and vendors dedicated to web sustainability.

tech stack: Git, Github, AWS, OpenSearch, ApiGateway, Lambda, Go

Storage Model A

  1. Client sends JSON or Media file to the server.
  2. Server commits JSON or Media file to Github repository.
  3. [Optional] Server indexes file and/or extracted metadata inside AWS opensearch.
flowchart LR
subgraph Client;
json[JSON]
png[PNG]
end;
subgraph Server;
json-->lambda[Lambda]
png-->lambda[Lambda]
end;
subgraph Github;
lambda-->repository[Repository]
end;
subgraph AWS;
lambda-->opensearch[Open Search]
end;
Loading

Responsibilities

  • File Compliance/Validation
  • Operation Authorization/Governance
  • Audit Logging
  • File Metadata Management
  • Search Indexing
  • Notifications

Access Model A-A

Devices can request the current version of files through a Github pages website.

flowchart LR
subgraph Client;
device[Device]
end;
subgraph Github;
device<-->pages[Pages Site]
end;
Loading

Access Model A-B

Devices can circumvent cache and/or request any version of a file inside Github repository.

flowchart LR
subgraph Client;
device
end;
subgraph Server;
device<-->lambda[Lambda]
end;
subgraph Github;
lambda<-->repository[Repository]
end;
Loading

Search Model A-A

Device queries open search directly and open search responds with results of search.

flowchart LR
subgraph Client;
device
end;
subgraph AWS;
device<-->opensearch[Open Search]
end;
Loading

Search Model A-B

Device queries open search indirectly through lambda.

flowchart LR
subgraph Client;
device
end;
subgraph Server;
device<-->lambda[Lambda]
end;
subgraph AWS;
lambda<-->opensearch[Open search]
end;
Loading

Notification Model A-A

Subscribed devices are notified of actions carried out without polling.

flowchart LR
subgraph Client;
device
end;
subgraph Server;
lambda[Lambda]-->device
end;
Loading

Enhanced Sustainability Model A-A

Github repo can be easily connected with azure static web apps, cloudflare, aws s3, etc. and distributed closer to end users via CDNs.