Skip to content
This repository has been archived by the owner on Oct 19, 2024. It is now read-only.

Commit

Permalink
Update arquitetura-cloud.drawio
Browse files Browse the repository at this point in the history
  • Loading branch information
dannevesdantas committed Jul 25, 2024
1 parent bf2887e commit 91be2e8
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 11 deletions.
35 changes: 26 additions & 9 deletions docs/arquitetura-cloud/arquitetura-cloud.drawio
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36" version="24.7.4">
<diagram name="Página-1" id="QyuDZeAoyNbm0Pvu70TN">
<mxGraphModel dx="5425" dy="2058" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<mxGraphModel dx="4419" dy="1509" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
Expand Down Expand Up @@ -316,8 +316,8 @@
<mxCell id="94TOJgzLUkNtwb4Dzyfh-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;flowAnimation=1;" parent="L6SBvmUNMrdH3GEFA7w_-1" source="L6SBvmUNMrdH3GEFA7w_-16" target="94TOJgzLUkNtwb4Dzyfh-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="94TOJgzLUkNtwb4Dzyfh-8" value="🛈 Em produção, estamos utilizando o plug-in de CNI padrão da AWS: O Amazon VPC CNI plugin for Kubernetes.&lt;br&gt;&lt;br&gt;🛈 Optamos por um Node Group no EC2 devido ao custo mais baixo quando comparado a opção serverless fornecida pelo AWS Fargate.&lt;br&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;🛈 Nosso Node Group do EKS é composto por 3 instâncias EC2 do tipo t2.medium&lt;br&gt;&lt;br&gt;🛈 Cada instância t2.medium é capaz de executar 3 Pod da nossa aplicação, que requer 250m de CPU e 512Mi de memória. Mais instâncias t2.medium serão provisionadas pelo EC2 Auto Scalling quando, e se necessário.&amp;nbsp;&lt;br&gt;&lt;br&gt;🛈 Em produção estamos utilizando o&amp;nbsp;Container Runtime Interface (CRI) padrão do EKS, que é o containerd.&lt;br&gt;&lt;br&gt;🛈 Em produção estamos utilizando uma conta Personal grátis do Docker Hub como container Registry para armazenar e gerenciar as nossas imagens OCI do Docker.&lt;br&gt;&lt;br&gt;🛈 A versão do Kubernetes em produção é a v1.28" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;labelPosition=center;verticalLabelPosition=middle;fontFamily=Lucida Console;shadow=0;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxGeometry x="2120" y="1041.25" width="320" height="559.5" as="geometry" />
<mxCell id="94TOJgzLUkNtwb4Dzyfh-8" value="🛈 Em produção, estamos utilizando o plug-in de CNI padrão da AWS: O Amazon VPC CNI plugin for Kubernetes.&lt;br&gt;&lt;br&gt;🛈 Optamos por um Node Group no EC2 devido ao custo mais baixo quando comparado a opção serverless fornecida pelo AWS Fargate.&lt;br&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;🛈 Nosso Node Group do EKS é composto por 3 instâncias EC2 do tipo t2.medium&lt;br&gt;&lt;br&gt;🛈 Cada instância t2.medium é capaz de executar 3 Pod da nossa aplicação, que requer 250m de CPU e 512Mi de memória. Mais instâncias t2.medium serão provisionadas pelo EC2 Auto Scalling quando, e se necessário.&amp;nbsp;&lt;br&gt;&lt;br&gt;🛈 Estamos utilizando o Amazon Elastic Container Registry (ECR) como container Registry para armazenar e gerenciar as nossas imagens OCI do Docker.&lt;br&gt;&lt;br&gt;🛈 A versão do Kubernetes em produção é a v1.28" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;labelPosition=center;verticalLabelPosition=middle;fontFamily=Lucida Console;shadow=0;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxGeometry x="2120" y="1041.25" width="320" height="478.75" as="geometry" />
</mxCell>
<mxCell id="aZ776irZEMooX4o-13bk-7" value="Amazon Elastic Container Registry" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ecr;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxGeometry x="2640" y="1915" width="48" height="48" as="geometry" />
Expand Down Expand Up @@ -400,7 +400,7 @@
<mxCell id="aZ776irZEMooX4o-13bk-92" value="RDS Proxy" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#C925D1;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.rds_proxy;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxGeometry x="1295" y="2220" width="50" height="50" as="geometry" />
</mxCell>
<mxCell id="aZ776irZEMooX4o-13bk-98" value="🛈 O banco de dados está provisionado em 3 Availability Zones diferentes, com replicas read-only, para garantir a alta disponibilidade.&lt;br&gt;&lt;br&gt;🛈 O RDS Proxy faz o reaproveitamento de conexões com o banco de dados, contribuindo para a escalabilidade da aplicação.&lt;br&gt;&lt;br&gt;🛈 O ElastiCache for Redis será configurado com a eviction policy LFU - Least Frequently Used a fim de manter em cache os dados dos profissionais mais procurados.&lt;br&gt;&lt;br&gt;🛈 O KMS armazena a chave de criptografia do Banco de Dados RDS, gerenciada pela AWS.&lt;br&gt;&lt;br&gt;🛈 O AWS Secrets Manager armazena a senha do usuário master do banco de dados, com rotação automática de 7 em 7 dias.&lt;br&gt;&lt;br&gt;🛈 O DynamoDB irá armazenar metadados dos arquivos armazenados no bucket do S3, com schema flexível.&lt;br&gt;&lt;br&gt;🛈 O Architecture Decision Records (ADR) disponível na documentação no GitHub Wiki detalha as motivações por trás da escolha do modelo relacional.&lt;br&gt;&lt;br&gt;🛈 O AWS Backup armazena backups do banco de dados RDS." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;labelPosition=center;verticalLabelPosition=middle;fontFamily=Lucida Console;shadow=0;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxCell id="aZ776irZEMooX4o-13bk-98" value="🛈 O banco de dados está provisionado em 3 Availability Zones diferentes, com replicas read-only, a fim de garantir a alta disponibilidade.&lt;br&gt;&lt;br&gt;🛈 O RDS Proxy faz o reaproveitamento de conexões com o banco de dados, contribuindo para a escalabilidade da aplicação.&lt;br&gt;&lt;br&gt;🛈 O ElastiCache for Redis será configurado com a eviction policy LFU - Least Frequently Used a fim de manter em cache os dados dos profissionais mais procurados.&lt;br&gt;&lt;br&gt;🛈 O KMS armazena a chave de criptografia do Banco de Dados RDS, gerenciada pela AWS.&lt;br&gt;&lt;br&gt;🛈 O AWS Secrets Manager armazena a senha do usuário master do banco de dados, com rotação automática de 7 em 7 dias.&lt;br&gt;&lt;br&gt;🛈 O Architecture Decision Records (ADR) disponível na documentação no GitHub Wiki detalha as motivações por trás da escolha do modelo relacional.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛈 Optamos também por provisionar um DynamoDB para armazenar metadados dos arquivos armazenados no bucket do S3, com schema flexível.&lt;br&gt;&lt;br&gt;🛈 O AWS Backup armazena backups do banco de dados RDS e das tabelas do DynamoDB.&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;labelPosition=center;verticalLabelPosition=middle;fontFamily=Lucida Console;shadow=0;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxGeometry x="1880" y="2400" width="480" height="469.5" as="geometry" />
</mxCell>
<mxCell id="aZ776irZEMooX4o-13bk-94" value="ElastiCache for Redis" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#C925D1;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.elasticache_for_redis;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
Expand Down Expand Up @@ -457,7 +457,7 @@
<mxCell id="aZ776irZEMooX4o-13bk-188" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;flowAnimation=1;" parent="L6SBvmUNMrdH3GEFA7w_-1" source="L6SBvmUNMrdH3GEFA7w_-46" target="aZ776irZEMooX4o-13bk-187" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="aZ776irZEMooX4o-13bk-189" value="🛈 O Amazon SNS - Simple Notification Service dispara e-mails de notificação para os Pacientes, informando quando a consulta é aceita ou recusada pelo Médico." style="text;html=1;strokeColor=none;fillColor=none;align=right;verticalAlign=top;whiteSpace=wrap;rounded=0;labelPosition=center;verticalLabelPosition=middle;fontFamily=Lucida Console;shadow=0;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxCell id="aZ776irZEMooX4o-13bk-189" value="🛈 O Amazon SNS - Simple Notification Service dispara e-mails de notificação para os Pacientes, informando quando a consulta é aceita ou recusada pelo Médico." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;labelPosition=center;verticalLabelPosition=middle;fontFamily=Lucida Console;shadow=0;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxGeometry x="2160" y="1600.75" width="320" height="130" as="geometry" />
</mxCell>
<mxCell id="YHyJm0zskbPS8452Ppzy-1" value="SQS" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.sqs;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
Expand Down Expand Up @@ -488,12 +488,16 @@
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-h8u7tBZ8-VItpXT3ClL-9" value="SNS" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.sns;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxGeometry x="420" y="2600" width="50" height="50" as="geometry" />
<mxGeometry x="190" y="2600" width="50" height="50" as="geometry" />
</mxCell>
<mxCell id="-h8u7tBZ8-VItpXT3ClL-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;flowAnimation=1;" parent="L6SBvmUNMrdH3GEFA7w_-1" source="-h8u7tBZ8-VItpXT3ClL-5" target="-h8u7tBZ8-VItpXT3ClL-9" edge="1">
<mxGeometry relative="1" as="geometry" />
<mxCell id="-h8u7tBZ8-VItpXT3ClL-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;flowAnimation=1;" parent="L6SBvmUNMrdH3GEFA7w_-1" source="-h8u7tBZ8-VItpXT3ClL-5" target="-h8u7tBZ8-VItpXT3ClL-9" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="445" y="2625" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="-h8u7tBZ8-VItpXT3ClL-15" value="🛈 A geração do link da teleconsulta será feita através da&amp;nbsp;Google Meet REST API, um fornecedor externo, que pode não ser capaz de lidar com picos de usuários simultâneos quando o HPA do K8s escalar a aplicação.&lt;div&gt;&lt;br&gt;🛈 Optamos então por tornar o processo de geração do link da teleconsulta assíncrono para que seja possível lidar com picos de acessos sem indisponibilizar ou prejudicar a performance da aplicação em cenários de carga&amp;nbsp;&lt;span style=&quot;background-color: initial;&quot;&gt;alta&lt;/span&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛈 Uma mensagem será publicada pela aplicação na fila &quot;consulta-marcada&quot; no SQS sempre que uma consulta for marcada.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛈 A Lambda function de nome &quot;health-med-teleconsulta&quot; fará a geração do link de forma assíncrona e irá envia-lo para o paciente por e-mail e/ou SMS, usando o Amazon SNS.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛈 Após gerar o link da teleconsulta com sucesso, uma menagem será publicada pela Lambda function na fila &quot;link-teleconsulta-gerado&quot; no SQS, que posteriormente será consumida pela aplicação.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛈 Caso acorra alguma falha ao gerar o link da teleconsulta, uma mensagem será publicada na fila &quot;falha-geracao-teleconsulta&quot; de ação compensatória.&lt;br&gt;&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;labelPosition=center;verticalLabelPosition=middle;fontFamily=Lucida Console;shadow=0;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxCell id="-h8u7tBZ8-VItpXT3ClL-15" value="🛈 A geração do link da teleconsulta será feita através da&amp;nbsp;Google Meet REST API, um fornecedor externo, que pode não ser capaz de lidar com picos de usuários simultâneos quando o HPA do K8s escalar a aplicação.&lt;div&gt;&lt;br&gt;🛈 Optamos então por tornar o processo de geração do link da teleconsulta assíncrono para que seja possível lidar com picos de acessos sem indisponibilizar ou prejudicar a performance da aplicação em cenários de carga&amp;nbsp;&lt;span style=&quot;background-color: initial;&quot;&gt;alta&lt;/span&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛈 Uma mensagem será publicada pela aplicação na fila &quot;consulta-marcada&quot; no SQS sempre que uma consulta for marcada.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛈 A Lambda function de nome &quot;health-med-teleconsulta&quot; fará a geração do link de forma assíncrona e irá envia-lo para o paciente por e-mail e/ou SMS, usando o Amazon SNS.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛈 Após gerar o link da teleconsulta com sucesso, uma menagem será publicada pela Lambda function na fila &quot;link-teleconsulta-gerado&quot; no SQS, que posteriormente será consumida pela aplicação.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛈 Caso acorra alguma falha ao gerar o link da teleconsulta, uma mensagem será publicada na fila &quot;falha-geracao-teleconsulta&quot; de ação compensatória.&lt;br&gt;&lt;br&gt;🛈 O monitoramento da Lambda function é feito no CloudWatch.&lt;br&gt;&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;labelPosition=center;verticalLabelPosition=middle;fontFamily=Lucida Console;shadow=0;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
<mxGeometry x="520" y="2240" width="240" height="710" as="geometry" />
</mxCell>
<mxCell id="aZ776irZEMooX4o-13bk-132" value="IAM" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.identity_and_access_management;" parent="L6SBvmUNMrdH3GEFA7w_-1" vertex="1">
Expand All @@ -511,6 +515,16 @@
<mxCell id="_RXdKCglyneSRyfY8CZ5-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;flowAnimation=1;" edge="1" parent="L6SBvmUNMrdH3GEFA7w_-1" source="aZ776irZEMooX4o-13bk-105" target="aZ776irZEMooX4o-13bk-11">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="_RXdKCglyneSRyfY8CZ5-20" value="AWS CloudWatch" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudwatch_2;" vertex="1" parent="L6SBvmUNMrdH3GEFA7w_-1">
<mxGeometry x="190" y="2760" width="50" height="50" as="geometry" />
</mxCell>
<mxCell id="_RXdKCglyneSRyfY8CZ5-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;flowAnimation=1;" edge="1" parent="L6SBvmUNMrdH3GEFA7w_-1" source="-h8u7tBZ8-VItpXT3ClL-5" target="_RXdKCglyneSRyfY8CZ5-20">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="445" y="2789" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="aZ776irZEMooX4o-13bk-1" value="Médicos e Pacientes" style="sketch=0;outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.illustration_users;pointerEvents=1" parent="1" vertex="1">
<mxGeometry x="-1140" y="470" width="100" height="100" as="geometry" />
</mxCell>
Expand Down Expand Up @@ -652,6 +666,9 @@
<mxCell id="_RXdKCglyneSRyfY8CZ5-9" value="Google Meet REST API" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="_RXdKCglyneSRyfY8CZ5-10">
<mxGeometry y="51" width="200" height="30" as="geometry" />
</mxCell>
<mxCell id="_RXdKCglyneSRyfY8CZ5-19" value="🛈 A imagem de container é gerada pelo workflow de CI/CD no GitHub Actions.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;🛈&lt;/span&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&amp;nbsp;&lt;/span&gt;O workflow de CI/CD só executa o deploy da aplicação após a execução bem sucedida de todos os testes.&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;🛈 A análise estática do&lt;/span&gt;&amp;nbsp;código-fonte é feita pelo SonarCloud.&lt;/div&gt;&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;labelPosition=center;verticalLabelPosition=middle;fontFamily=Lucida Console;shadow=0;" vertex="1" parent="1">
<mxGeometry x="2440" y="2020" width="240" height="280" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
Expand Down
Binary file modified docs/arquitetura-cloud/dark/arquitetura-cloud.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/arquitetura-cloud/dark/arquitetura-cloud.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/arquitetura-cloud/light/arquitetura-cloud.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/arquitetura-cloud/light/arquitetura-cloud.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 91be2e8

Please sign in to comment.