---
# System prepended metadata

title: Архитектура
tags: [Архитектура]

---

---
tags: Архитектура
---

# Архитектура

```graphviz
digraph Arch {
    graph [nodesep=0.75]

    A [label="API"]
    B [label="Backend"]
    C [label="Code Runner"]
    D [label="Database"]
    E [label="Code Editor"]
    F [label="Frontend"]
    Q [label="Queue"]

    F -> A
    F -> E [style="dotted"]
    A -> B
    A -> D
    A -> E [style="dotted"]
    B -> D
    B -> C
    B -> Q

    {rank=min; E}
    {rank=same; E; F}
    
    subgraph cluster_API {
        {rank=same; A B}

        style="dotted"
        A B
    }

    subgraph cluster_Editor {
        style=invis
    	node [shape=record]

        E -> Supervisor
	    Supervisor [label="{Supervisor |{ User1 Editor | ... | UserN Editor}}"]
    }
    
}
```

> Курсивом выделены необязательные пункты

## [Frontend](/IVnb6ghGTnKH3Sc0AHAyvg)
* **[Frontend](/IVnb6ghGTnKH3Sc0AHAyvg)** общается только с **[API](/puevSQbdTe-guzWXpIslXg)**
* _**[Frontend](/IVnb6ghGTnKH3Sc0AHAyvg)** редиректит на редактор кода пользователя_

## [API](/puevSQbdTe-guzWXpIslXg)
* **[API](/puevSQbdTe-guzWXpIslXg)** хранит данные о курсах/задачах/учениках/учителях в **[Database](/ZwJ50RnETqGDwTS81UFhVw)**
* **[API](/puevSQbdTe-guzWXpIslXg)** ставит задачи на проверку в **[Backend](/wrVTZHlERk-pRXfgE_BV1w)**
* **[API](/puevSQbdTe-guzWXpIslXg)** и **[Backend](/wrVTZHlERk-pRXfgE_BV1w)** можно сделать одним сервисом
* _**[API](/puevSQbdTe-guzWXpIslXg)** запускает браузерные редакторы кода через **[Code Editor](/i-BLixpdQ9-Pp6wPR8xbHA)**_

## [Backend](/wrVTZHlERk-pRXfgE_BV1w)
* **[Backend](/wrVTZHlERk-pRXfgE_BV1w)** кладет результаты проверки в **[Database](/ZwJ50RnETqGDwTS81UFhVw)**
* **[Backend](/wrVTZHlERk-pRXfgE_BV1w)** использует **[Code Runner](/gCRhFIsdTwK9JBbikXy6aw)**, чтобы запускать код на C++/Java/Pascal/Python в песочнице
* **[Backend](/wrVTZHlERk-pRXfgE_BV1w)** использует **[Queue](/W3hmwEX5QIq3SJXlWB5nkA)** как брокер для задач

## [Code Editor](/i-BLixpdQ9-Pp6wPR8xbHA)
* **[Code Editor](/i-BLixpdQ9-Pp6wPR8xbHA)** Запускает процессы с редакторами кода, которые можно открыть через браузер
