<aside> 💡 como funcionará a comunicação entre os serviços

</aside>

flowchart LR

app/front --> app/back
app/back --> postgres[("PostgreSQL")]
work-yaml -.->|long polling| postgres[("PostgreSQL")]
work-yaml --> s3[Object Store/S3]
service -.-> s3

%% links
click service "<https://github.com/cljazz/moclojer-service>" _blank
click app/front "<https://github.com/cljazz/moclojer-app/tree/main/src/front>" _blank
click app/back "<https://github.com/cljazz/moclojer-app/tree/main/src/back>" _blank
click work-yaml "<https://github.com/cljazz/moclojer-work-yaml>" _blank

app/front e app/back

Dashboard (nossa interface de usuário), terá os recursos:

Object Store/S3

As configurações (yaml's) serão salvas em um bucket S3 com a seguinte estrutura de diretórios:

orgs/<ORG-NAME>/<MOCK-NAME>.yml
users/<USER-NAME>/<MOCK-NAME>.yml

work-yaml

Consumer que gerará o arquivo moclojer.yml, o trabalho desse serviço será consolidar todos os .yml (organizações e usuários) em único arquivo. Consumirá o PostgreSQL via long polling (acredito que seja a pior maneira, mas a mais rápida de começar) todos os mocks ativos e escrever o arquivo yaml no S3.

service

molcojer service que lê o arquivo moclojer.yml baixado assim que o serviço é iniciado, uma thread em segundo plano é mantido em execução baixando o arquivo a cada X tempo (hoje é 1 minuto).

No futuro, teremos uma fila para notificar o moclojer-service para fazer o download do arquivo, que será enviado pelo work-yaml assim que ele terminar de gerar o arquivo moclojer.yml no S3