Modelo das 5 camadas no CI/CD

Sempre que vou falar sobre CI/CD (Continuous integration and continuous delivery) e principalmente de pipeline para fazer essa automatização, sinto que falta esse conhecimento nas pessoas. Entender que é possível dividir a responsabilidades e tarefas, segregar o seu conteúdo e ter algo mais “modular”.

Nesse modelo temos 5 camadas, sendo elas: Código, Teste, Artefato, Distribuição e Publicação.

Vamos falar sobre cada uma delas e suas responsabilidades, o importante é entender o conceito de cada uma delas, não se apegando as tecnologias utilizadas em cada uma.

Código

Nessa primeira camada é onde lidamos com a parte de armazenamento, gestão e controle do nosso código. Aqui é onde usamos metodologias e formas de trabalhar com repositórios de código. Exemplos de modelos https://www.atlassian.com/br/git/tutorials/comparing-workflows

O grande objetivo desta camada é ter um local onde esteja o código fonte de forma confiável.

Exemplo de tecnologias / produtos desta camada.

Teste

Nessa camada, é onde lidamos com a solução de testes para nossa aplicação. Podem ser os testes unitários, dos testes funcionais e até dos testes integrados.

Ela precisa existir para garantir a qualidade da sua aplicação. Referencias ao conceito https://pt.wikipedia.org/wiki/Teste_de_unidade

O grande objetivo desta camada é identificar problemas no seu código com base nos teste.

Exemplo de tecnologias / produtos desta camada.

Artefato

A camada de artefato tem a responsabilidade de converter a sua aplicação em algo que possa ser montado para distribuição. Aqui entra a responsabilidade de transformar todo o seu código em algo passivo de ser executável. É o momento de juntar todas as dependências e compilar a sua aplicação. Também entram aqui ferramentas de qualidade de código e analise de vulnerabilidade.

Esse é o momento em que o seu código deve ganhar um identificador de controle (como um id de versão) para poder identificar o seu artefato.

O grande objetivo desta camada é criar um “arquivo” da sua aplicação possível de ser executável

Exemplo de tecnologias / produtos desta camada.

Distribuição

Na camada de distribuição, encontra-se a maneira como você transporta o seu artefato para os ambientes. É aqui onde se define como levar algo do ambiente de desenvolvimento, para homologação, e consequentemente para produção.

É comum o conteúdo gerado nessa camada também usar o mesmo indicador de controle criada no camada de artefato.

O grande objetivo desta camada é conseguir transportar a sua aplicação

Exemplo de tecnologias / produtos desta camada.

Publicação

Por ultimo e não menos importante. Esta a camada responsável em saber como colocar a sua aplicação em execução. Nela que se defini como, quanto e onde essa aplicação sera executada.

O grande objetivo desta camada é conseguir colocar em execução a sua aplicação

Exemplo de tecnologias / produtos desta camada.

Tendo essa visão de que é possível dividir a sua estrutura em camadas, pode-se quebrar os problemas e necessidades em cada um dos seus respectivos níveis. Não precisando fazer com que o seu CI/CD seja um bloco único unitário.

Até os próximos posts.