Bem-vindo ao meu blog!

Estou iniciando este projeto como uma forma de revisitar alguns conceitos importantes, estudar um pouco e compartilhar parte do conhecimento que acumulei em minha trajetória até agora!

Nesta primeira fase de estudos, gostaria de revisitar os conceitos empregados nos estudos sobre os 12 fatores para o desenvolvimento de aplicações modernas, inspirados pelos livros do lendário Martin Fowler.

No nosso último artigo, falamos sobre o primeiro fator dos 12 fatores do desenvolvimento de software, a Base de Código. Hoje, vamos falar sobre o segundo fator:

Gerenciamento de Dependências

O Gerenciamento de Dependências é uma prática essencial para garantir que o seu código seja compatível e escalável. Com o uso de sistemas de gerenciamento de pacotes e a prática de isolar as dependências do ambiente, você garante que a sua aplicação seja executada de forma segura e confiável em diferentes ambientes. Assim, você pode focar em criar novas funcionalidades, sem se preocupar com problemas de compatibilidade entre as dependências da aplicação.

Utilize Sistemas de Gerenciamento de Pacotes Uma prática importante para gerenciar as dependências é utilizar sistemas de gerenciamento de pacotes, como o NPM do Node.js ou o Maven do Java. Esses sistemas permitem que as dependências sejam instaladas de forma automatizada, por meio de um arquivo de configuração que especifica quais as dependências da aplicação e suas versões.

No caso do Python, um sistema de gerenciamento de pacotes muito utilizado é o Pip. O Pip é uma ferramenta fácil de usar que permite a instalação de pacotes e dependências de forma rápida e prática. Além disso, o Pip oferece diversas funcionalidades, como a criação de ambientes virtuais e a instalação de pacotes a partir de arquivos.

No caso do Go, o sistema de gerenciamento de pacotes padrão é o Go Modules. Ele foi introduzido na versão 1.11 do Go e é responsável pelo gerenciamento de pacotes e dependências do código-fonte. O Go Modules oferece diversas funcionalidades, como o controle de versões e a verificação de compatibilidade de dependências.

Já no Rust, o sistema de gerenciamento de pacotes padrão é o Cargo. O Cargo permite a instalação de pacotes de forma automatizada, bem como o gerenciamento de dependências. Além disso, o Cargo oferece funcionalidades como a criação de projetos, a compilação de códigos e o gerenciamento de pacotes instalados.

Isolando as Dependências do Ambiente

Outra prática importante é o isolamento de dependências, que consiste em instalar as dependências da aplicação em um ambiente isolado da máquina local. Isso é feito utilizando ferramentas como o Virtualenv do Python, o RVM do Ruby ou o asdf, que é uma ferramenta de gerenciamento de versões de linguagens e pacotes.

O asdf permite que você instale e gerencie várias versões de linguagens, como Python, Ruby, Node.js e Erlang, bem como pacotes relacionados a essas linguagens. Com isso, é possível ter diferentes versões de uma mesma linguagem ou pacote instaladas em um mesmo ambiente, sem que elas interfiram entre si.

Além disso, o asdf também permite a criação de ambientes virtuais específicos para diferentes ferramentas de infraestrutura como Terraform, Terragrunt, Helm, entre outras. Esses ambientes virtuais permitem que você possa isolar as dependências específicas de cada ferramenta e configurá-las de forma separada, evitando conflitos e garantindo a estabilidade do seu ambiente.

Por exemplo, ao utilizar o Terraform, você pode criar um ambiente virtual do asdf específico para o Terraform e instalar apenas as dependências necessárias para a execução do seu projeto. Isso garante que você não tenha conflitos entre as dependências do Terraform e as dependências de outros projetos que estejam rodando no mesmo ambiente.

Além disso, o asdf é uma ferramenta de fácil instalação e uso, com suporte a diversos sistemas operacionais e uma comunidade ativa de desenvolvedores, o que garante uma grande quantidade de plugins disponíveis para diferentes linguagens e ferramentas.

Fique Ligado

Gostou do nosso artigo? Esperamos que sim! Fique ligado nas próximas postagens, onde vamos falar sobre os demais fatores dos 12 fatores do desenvolvimento de software. E não se esqueça de acompanhar a gente nas redes sociais para ficar por dentro de mais dicas e informações sobre programação.

Até a próxima!