diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-08-04 16:40:44 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-09-13 16:15:59 +0200 |
| commit | fdc3200ef4718eb98bd8a713f956222a9bf85ac9 (patch) | |
| tree | 4fa8e5998bd4ee59397b26222846c554b73abe4e /site/docs/advanced-guides/architecture.md | |
| parent | 8a94318aad4b4fa188ac49e887d564867a00111e (diff) | |
docs: Add initial version of Docusaurus based docs
This change updates the repository with a new Docusaurus-based
documentation website. This allows us to create our documentation using
Markdown, MDX and React. This will serve as the main entry point for
users visiting https://opendc.org. The actual OpenDC application will be
moved to https://app.opendc.org.
Diffstat (limited to 'site/docs/advanced-guides/architecture.md')
| -rw-r--r-- | site/docs/advanced-guides/architecture.md | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/site/docs/advanced-guides/architecture.md b/site/docs/advanced-guides/architecture.md new file mode 100644 index 00000000..2a65a6c6 --- /dev/null +++ b/site/docs/advanced-guides/architecture.md @@ -0,0 +1,26 @@ +--- +sidebar_position: 2 +--- + +# Architecture + +OpenDC consists of four components: a Kotlin simulator, a SQL database, a Quarkus-based +[API](https://github.com/atlarge-research/opendc/tree/master/opendc-web/opendc-web-api), and a +React.js [frontend](https://github.com/atlarge-research/opendc/tree/master/opendc-web/opendc-web-api). + + + +On the frontend, users can construct a topology by specifying a datacenter's rooms, racks and machines, and create +scenarios to see how a workload trace runs on that topology. The frontend communicates with the web server via a REST +API over HTTP. + +The (Swagger/OpenAPI compliant) API spec specifies what requests the frontend can make to the web server. To view this +specification, go to the [Swagger Editor](https://editor.swagger.io/) and paste in +our [API spec](https://api.opendc.org/q/openapi). + +The web server receives API requests and processes them in the database. When the frontend requests to run a new +scenario, the web server adds it to the `scenarios` collection in the database and sets its `state` as `PENDING`. + +The simulator monitors the database for `PENDING` scenarios, and simulates them as they are submitted. The results of +the simulations are processed and aggregated in memory. Afterwards, the aggregated summary is written to the database, +which the frontend can then again retrieve via the web server. |
