Skip to content

Commit

Permalink
Updating from base (#1)
Browse files Browse the repository at this point in the history
* setup: maonamassa first interaction

* Desenvolvido relacionamentos e containers

* Add files via upload

* Delete Modelo C4 para documentação de arquiteturas.pdf

* Delete Modelo C4 para documentação de arquiteturas.pdf

* Add files via upload

* Inicia a transição de plantuml para structurizr

* Criação de tema cms

* Adiciona cms.dsl com tema

* Adiciona arquivos gerados pelo structurizr (CMS)

* Ajusta imagens após atualizar temas (cms)

* Move diagramas de terceiros e atualiza levels utilizando structurizr

* Correção do nome do diretório

* Modifica diretórios e adiciona novos diagramas utilizando structurizr

* Adiciona imagens dos relacionamentos e atualiza diagrama da imersão fc

* Aprimora structurizr com auto recarregamento.

* Nova versão de intenções unificando hidden e show

* Adiciona novos padrões para ignorar e corrige instrução no README

* Correções menores

* Ajusta relacionamentos para nova versão structurizr

* Ajusta cms para nova versão structurizr

* Ajusta maonamassa  para nova versão structurizr

* Ajusta niveis  para nova versão structurizr

* Ajusta imersão full cycle  para nova versão structurizr

* Modifica niveis para desenho horizontal melhorando exibição em slides

* Atualiza versão dos slides (wip)

* Adiciona novo tema com vários ícones

* Atualiza tema e cria exemplo utilizando iconografia

* Ultima versão de exemplo de ícones

* Adiciona Open Telemetry aos ícones

* Adiciona Jaeger aos ícones

* Adiciona OpenSearch aos ícones

* Adiciona mais exemplos em ícones

* Adiciona mais algumas coisas em ícones

* Atualiza imagens dos ícones

* Adiciona AWS Prometheus aos ícones

* Adiciona Grafana aos ícones

* Adiciona mais ícones

* Adiciona Victoria Metrics aos ícones

* Atualiza ícone do Victoria Metrics

* Atualiza ícones

* Atualiza ícones

* Atualiza ícones

* Atualiza ícones

* Adiciona script para exportar diagramas (necessário para prõximo passo)

* Adiciona comandos para exportar os diagramas

* Prototype action to autogenerate md files (#1)

* Change diagram generation strategy (cassiobotaro#3)

* Change diagram generation strategy

* Diagramas gerados automaticamente para o repositório

---------

Co-authored-by: cassiobotaro <cassiobotaro@users.noreply.github.com>

* NIT (cassiobotaro#4)

* Corrige mensagem do CI (cassiobotaro#5)

---------

Co-authored-by: Ronald Rodrigues Farias <ronald-farias@outlook.com>
Co-authored-by: Felipe <lipe0503@gmail.com>
Co-authored-by: Cássio Botaro <cassiobotaro@gmail.com>
Co-authored-by: cassiobotaro <cassiobotaro@users.noreply.github.com>
  • Loading branch information
5 people authored May 13, 2024
1 parent 1089d9e commit c280fab
Show file tree
Hide file tree
Showing 105 changed files with 3,707 additions and 22 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: main
on: push
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
container:
image: structurizr/cli:latest
steps:
- name: Install git
run: apt-get update && apt-get install -y git
- name: Mark directory as safe for git
run: git config --global --add safe.directory /__w/modeloC4/modeloC4
- uses: actions/checkout@v4
- name: Generate diagrams
run: |
bash scripts/gerar-diagramas.sh
- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Diagramas gerados automaticamente"
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
out
out
.structurizr
*/export-diagrams.js
*.mmd
Binary file added Apresentação C4.pdf
Binary file not shown.
Binary file removed Modelo C4 para documentação de arquiteturas.pdf
Binary file not shown.
61 changes: 58 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,70 @@
# Modelo C4 para documentação de arquiteturas

**Update:** Uma atualização foi feita no repositório e os modelos foram reescritos utilizando a ferramenta [Structurizr Lite](https://structurizr.com/help/lite).

Este repositório contém todos os diagramas contidos na apresentação do modelo C4.

[PlantUML](https://plantuml.com/) foi utilizado em conjunto com [C4-PlantUML](https://github.com/plantuml-stdlib/C4-PlantUML) para gerar os diagramas.


## Gerando os diagramas

### Structurizr lite

Escrevi uma função para facilitar a utilização do comando:

```bash
# structurizr
function structurizr() {
readonly file=${1:?"The workspace filename must be specified."}
if [[ "$file" == *.* ]]; then
echo "The workspace filename should not contains a file extension."
return 1
fi
if [[ ! -f "./structurizr.properties" ]]; then
echo "structurizr.autoRefreshInterval=2000" > structurizr.properties
fi
docker run --rm -it \
-p 8080:8080 \
-u $(id -u ${USER}):$(id -g ${USER}) \
-v "$PWD":/usr/local/structurizr/ \
-e STRUCTURIZR_WORKSPACE_FILENAME=$file \
structurizr/lite
}
```

Ela será invocada da seguinte maneira:

```bash
structurizr nome_do_arquivo_sem_extensão
```

Para exportar os arquivos em png ou svg, mantenha a instância do structurizr rodando e utilize a seguinte função descrita abaixo.

```sh
function export_c4(){
readonly format=${1:?"The format must be specified."}
[ ! -f export-diagram.js ] && wget https://github.com/cassiobotaro/modeloC4/raw/main/export-diagram.js
text=$(docker run -i --init --cap-add=SYS_ADMIN --net=host --name=exporter ghcr.io/puppeteer/puppeteer:latest node -e "$(cat export-diagrams.js)" "" "http://localhost:8080" "$format")
files=($(echo "$text" | grep -o "\S*\.$format"))
for file in "${files[@]}"
do
docker cp exporter:/home/pptruser/"$file" .
done
docker rm exporter
}
```

Ela será invocada da seguinte maneira:

```bash
export_c4 png
```

### PlantUML

O [VS Code](https://code.visualstudio.com/) possui um plugin para PlantUML que pode ser encontrado na marketplace: [PlantUML for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml).

Caso queira rodar localmente será necessário instalar o [Graphviz](https://www.graphviz.org/). No sistema operacional ubuntu o comando é:
Caso queira rodar localmente será necessário instalar o [Graphviz](https://www.graphviz.org/). No sistema operacional Ubuntu o comando é:

sudo apt-get install graphviz openjdk-17-jre

Expand All @@ -19,4 +74,4 @@ Abra os arquivos de extensão `.puml` ou copie seu conteúdo para o editor ou na

Caso esteja utilizando a versão online, clique no botão `Render` para gerar a imagem.

Se estiver rodando localmente, aperte `ALT + D` para ter uma pré visualização, ou `CTRL + SHIFT + P` e selecione a opção de exportar a imagem ou pré visualização.
Se estiver rodando localmente, aperte `ALT + D` para ter uma pré visualização, ou `CTRL + SHIFT + P` e selecione a opção de exportar a imagem ou pré visualização.
Binary file added cms/Containers-key.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added cms/Containers.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added cms/SystemContext-key.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added cms/SystemContext.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added cms/aws.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 42 additions & 0 deletions cms/cms.dsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
workspace "CMS" {
model {
reader = person "Leitor" "Pessoa que consome as notícias do site."
writer = person "Editor" "Pessoa que escreve conteúdo para o site."

cms = softwaresystem "CMS" "Sistema de gerenciamento de conteúdo."{
portal = container "Portal de Notícias" "Site que fornece as notícias e conteúdos. Possui área acessível somente para editores." "Python and Django" "django"
db = container "Banco de Dados" "Armazena notícias e informações sobre usuários." "Postgresql" "db"
storage = container "Armazenamento de imagens" "Armazena imagens que serão utilizadas nas notícias e no conteúdo do portal." "Bucket S3" "storage, aws"
mobile = container "Aplicativo móvel" "Aplicativo que permite o acesso ao conteúdo e às notícias do portal." "Android/iOS" "mobile"
queue = container "Fila de processamento em segundo plano" "Recebe eventos de criação de imagem para serem consumidos pelo processador." "RabbitMQ" "queue"
worker = container "Processador de Imagens" "Processa imagens otimizando-as e gerando thumbnails." "Python" "worker"
}

reader -> portal "Consome notícias e conteúdo em"
reader -> mobile "Consome notícias e conteúdo em"
writer -> portal "Escreve conteúdo em"
mobile -> portal "Consome notícias e conteúdo em" "HTTPS/JSON"
portal -> db "Lê de e escreve em" "Postgresql Protocol"
portal -> storage "Lê de e escreve em" "HTTPS/JSON"
portal -> queue "Envia evento de adição de nova imagem para" "AMQP"
worker -> queue "Consome eventos de" "AMQP"
worker -> storage "Escreve imagens em" "HTTPS/JSON"
portal -> storage "Consome conteúdo estático de" "HTTPS/JSON"
}

views {

systemcontext cms "SystemContext" {
include *
autoLayout
}

container cms "Containers" {
include *
autoLayout lr
}

theme default
themes https://raw.githubusercontent.com/cassiobotaro/modeloC4/main/cms/theme.json
}
}
Loading

0 comments on commit c280fab

Please sign in to comment.