Explicitando os Contêineres de um Sistema de Software usando o C4 Model

O que mais me agrada no C4 Model é a forma como detalhes vão sendo explicitados na medida em que avançamos na elaboração dos diagramas. Cada nível de diagrama representa um “zoom” nas informações indicadas no nível anterior.

Enquanto o diagrama de contexto, apresentado no post anterior, visa ilustrar a relação do sistema que estamos desenvolvendo com outros sistemas e com os usuários, o diagrama de contêineres, que iremos trabalhar hoje, trata da macroestrutura da aplicação.

O que é um Contêiner?

Simon Brown, criador do C4 Model, explica:

Conêineres são artefatos do sistema que hospedam dados ou código executável. Eles precisam estar em execução para que o sistema como um todo funcione.

De forma geral, um contêiner pode ser, por exemplo, um servidor web (rodando no Tomcat, no IIS, etc), uma aplicação client-side (web ou desktop), uma aplicação mobile, um microsserviço, um banco de dados, um blob, e, até mesmo, o próprio sistema de arquivos, …

Além disso, Brown atenta para o fato de que um contêiner pode ser distribuído e executado de forma isolada (preferencialmente independente). Por causa disso, a comunicação entre contêiners ocorre, geralmente, entre processos atendendo algum tipo de protocolo.

Como elaborar o diagrama de Contêineres?

O ponto de partida para a elaboração do diagrama de contêineres é o diagrama de contexto. Logo, caso não o possua, comece pela eleboração do mesmo (o post anterior explica como fazer).

Partindo do diagrama de contexto, devemos substituir a caixa que representa o sistema por um caixa vazada, com contorno pontilhado e sem preenchimento. O nome do sistema deverá estar presente na parte inferior esquerda da caixa. Os diversos contêineres do sistema serão representados no interior dessa caixa.

Cada contêiner deverá ser representado por uma caixa (ou representação mais apropriada, como no caso de um banco de dados) onde deverá estar presente o nome do contêiner, a tecnologia empregada e um breve descritivo de sua responsabilidade. Por convenção, devemos usar um tom de cor um pouco mais claro para representar um contêiner do que aquele que usamos para representar o sistema.

Com os contêineres representados, adicionamos setas direcionadas (partindo do conteiner que está acionando, chegando àquele que está sendo acionado), indicando em poucas palavras a natureza da relação.

Finalmente, devemos atualizar as setas direcionadas relacionando elementos externos ao sistema (usuários e outros sistemas) de forma que apontem especificamente para o contêiner que indica a relação dentro do sistema.

Mais uma vez, não devemos nos preocupar em fazer uma descrição exaustiva de todos os contêineres. Não é necessário, por exemplo, indicar explicitamente os diversos servidores físicos caso exista algum tipo de replicação. Por conveniência, podemos indicar esses servidores no espaço direcionado a tecnologia empregada.

O diagrama acima está disponível originalmente, como exemplo, na página do C4Model. Observe que cada passo que indiquei foi seguido aqui.

Lições do Campo

A elaboração do diagrama de contêineres não é tarefa trivial.

Em sistemas muito grandes, ou legados, é comum que não seja evidente a responsabilidade de cada contêiner (indicando claro acoplamento). Em sistemas novos ou em desenvolvimento, há uma tendência de simplificar em demasia os contêineres.

O maior ganho que tenho percebido na elaboração desse diagrama está na explicitação da complexidade dos sistemas, geralmente causada por um projeto descuidado ou pela evolução descontrolada. Para sistemas novos, esse diagrama antecipa discussões que ficariam relegadas a momentos posteriores e que, se feitas no momento certo, poderiam evitar dores de cabeça.

Hora de Agir

O diagrama de contêineres é o segundo dos 4 tipos de diagramas indicados pelo C4 model. A produção não é tão custosa e os ganhos são potencialmente enormes.

Tente desenhar um diagrama de contêiners para o sistema onde está atuando. Compartilhe suas impressões nos comentários.

Logo abaixo, há uma relação dos posts já publicados nessa série. Se ainda não os viu, recomendo a leitura.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquivo

Pós-pandemia, trabalho remoto e a retenção dos profissionais de TI

CTO Consulting e Especialista em Execução em TI
0
Queremos saber a sua opinião, deixe seu comentáriox
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

Explicitando os Contêineres de um Sistema de Software usando o C4 Model

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Explicitando os Contêineres de um Sistema de Software usando o C4 Model

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?