Melhores práticas para desenvolvimento de contêineres

Melhores práticas para desenvolvimento de contêineres

Ao desenvolver para o mundo dos contêineres, é crucial trabalhar de forma inteligente. Conheça as melhores práticas para isso.

Imagem em destaque

Em algum momento, seu desenvolvimento mudará de aplicativos tradicionais e monolíticos para microsserviços. Isso significa contêineres. O mundo do desenvolvimento de contêineres é um pouco diferente daquele com o qual você está acostumado, o que significa que muitas das antigas práticas recomendadas não se aplicam mais.

Então, se você está buscando uma mudança no desenvolvimento de aplicativos padrão, o que você faz? Você aprende o mais rápido que pode. E dada a rapidez com que o mundo do desenvolvimento está a evoluir nos dias de hoje, esse ritmo atingiu uma velocidade vertiginosa. Portanto, você precisa aprender as práticas recomendadas rapidamente ou corre o risco de ser expulso do jogo ou de implantar constantemente aplicativos que não funcionam, não são confiáveis, não podem ser escalonados ou são muito inseguros para serem implementados. ser usado em um ambiente corporativo.

Quais são algumas das práticas recomendadas que você já deve adotar para o desenvolvimento de contêineres? Vejamos alguns deles que são mais imediatos e podem ser implementados desde o início da sua jornada.

Use imagens estáveis ​​de entidades conhecidas

Isto está no topo da lista, simplesmente porque se tornou uma das questões mais importantes que a segurança dos contentores enfrenta. Tudo o que você desenvolve em um mundo em contêineres começa com uma imagem. Você pode criar o seu próprio do zero ou seguir o caminho mais rápido e extrair uma imagem, digamos, do Docker Hub. Se você seguir o caminho de terceiros, deverá sempre usar apenas imagens estáveis ​​​​de entidades conhecidas.

Digamos, por exemplo, que você queira basear uma implantação de contêiner nos mais recentes Phyton imagem. Se você pesquisar no Docker Hub, encontrará muitas imagens para Python, mas apenas uma imagem oficial dos verdadeiros desenvolvedores do Python. Isso é a imagem que você deve usar. Toda imagem proveniente de uma entidade oficial será marcada como tal. É importante que você use apenas essas imagens. Não extraia uma imagem de uma fonte desconhecida, porque você nunca sabe o que ela pode conter.

Mantenha suas imagens pequenas

Você pode ficar tentado a formar seus contêineres em uma imagem que inclua vários recursos. Tenha isto em mente: quanto maior a imagem, maior será o seu contêiner. Se você basear todos esses contêineres em imagens maiores ao implantar um aplicativo que inclui diversas partes móveis, além de introduzir serviços desnecessários, você corre o risco de acumular uma conta de hospedagem em nuvem significativamente mais alta.

Lembre-se de que a ideia por trás da conteinerização é alcançar escalabilidade massiva a preços reduzidos. Portanto, a implantação de contêineres com base em imagens grandes anula esse propósito.

Não faça isso. Sempre use a menor imagem (oficial) que puder encontrar. E se você não conseguir encontrar uma imagem oficial pequena o suficiente, crie a sua própria. Além disso, com uma imagem maior, o plano de ataque pode crescer exponencialmente.

Mantenha-o pequeno.

Use dados persistentes

Você deve evitar armazenar dados na camada de armazenamento de um contêiner. Por que? Dois motivos: Armazenamento e acessibilidade. Considere o seguinte: se você armazenasse dados na camada de armazenamento de um contêiner, esse contêiner cresceria exponencialmente. Isso não é tudo. Caso o contêiner caia, os dados não estarão mais acessíveis. Em vez disso, você deve armazenar seus dados em volumes persistentes.

Ao usar volumes, você garante que o tamanho dos contêineres não aumentará à medida que mais dados forem coletados e que os dados armazenados possam ser acessíveis por vários contêineres.

Empregue CI/CD para teste e implantação

Você vai precisar de muitos testes. E a implantação será um assunto constante. Lembre-se, quando você conteineriza um aplicativo, o objetivo é a automação. Você não quer retardar o tempo de implantação tendo que testar e reimplantar tudo manualmente. Em vez disso, adote uma abordagem de Integração Contínua/Implantação Contínua (CI/CD).

Com CI/CD o objetivo é automatizar o máximo possível. Depois de empregar CI/CD para testes e implantação, você descobrirá que tudo funciona com muito mais eficiência.

Identifique imagens de contêineres de maneira inteligente

Ao criar suas próprias imagens (ou modificar aquelas que você extraiu), você terá que marcá-las antes que elas possam ser enviadas de volta para seus repositórios. Ao marcar essas imagens, certifique-se de fazê-lo de maneira inteligente. Não marque uma imagem apenas com “mais recente” ou a data. Você pode ter incluído um recurso específico em uma imagem ou criado uma imagem para uma determinada finalidade.

Certifique-se de marcar essas imagens de forma que você sempre saiba sua finalidade.

Considere a segurança em cada etapa

Com o desenvolvimento de contêineres, a segurança começa na estaca zero e nunca para. Isto é especialmente verdade quando seu objetivo é a automação. Nesse ponto, você deve considerar a segurança como um círculo que circunda todos os aspectos da sua implantação.

A segurança começa com as imagens base, passa pelos manifestos do contêiner, faz check-in em DevOps, GitOps e ferramentas de automação, segue pela implantação e retorna aos repositórios que abrigam seu código. Se você olhar para a segurança como um componente sem fim, que deve acompanhar o contêiner do início ao fim, descobrirá que vale a pena usar essas implantações.

Lembre-se de que a segurança no desenvolvimento de contêineres nunca descansa.

Um aplicativo por contêiner

Embora você possa implantar um único contêiner que abrigue todos os aplicativos necessários para um serviço, você não deveria. Por que? O maior motivo é que os contêineres de aplicativo único são mais fáceis de escalar. E como a escalabilidade é um dos principais objetivos da conteinerização, é óbvio.

A escalabilidade é possível porque um gerenciador de cluster pode implantar mais contêineres quando necessário. Por exemplo, se o seu aplicativo exigir apenas mais instâncias de um banco de dados para escalar, se você tiver transferido esse banco de dados para um contêiner com outros aplicativos, o escalonamento incluirá esses outros aplicativos, o que não é eficiente.

Os contêineres de aplicativo único também são muito mais fáceis de construir e testar.

Conclusão

Se você iniciar sua jornada de desenvolvimento de contêineres com essas práticas recomendadas, estará com o pé direito. É claro que sempre há mais práticas recomendadas, algumas das quais serão ditadas pelo projeto em questão. Mas, em geral, o que você vê aqui deve ser útil na maioria das implantações de contêineres.

Conteúdo Relacionado

O Rails 8 sempre foi um divisor de águas...
A GenAI está transformando a força de trabalho com...
Entenda o papel fundamental dos testes unitários na validação...
Aprenda como os testes de carga garantem que seu...
Aprofunde-se nas funções complementares dos testes positivos e negativos...
Vídeos deep fake ao vivo cada vez mais sofisticados...
Entenda a metodologia por trás dos testes de estresse...
Descubra a imprevisibilidade dos testes ad hoc e seu...
A nomeação de Nacho De Marco para o Fast...
Aprenda como os processos baseados em IA aprimoram o...
A web está em constante evolução, e com ela,...
A Inteligência Artificial (IA) tem sido um tema cada...
Você já se sentiu frustrado com a complexidade de...
O OpenStack é uma plataforma de computação em nuvem...
Você já se sentiu frustrado com a criação de...
A era digital trouxe uma transformação profunda na forma...
Nos dias atuais, a presença digital é fundamental para...
Introdução Quando se trata de desenvolvimento de software, a...
Como desenvolvedor Dart, você provavelmente já se deparou com...
Вернуться к блогу

Комментировать

Обратите внимание, что комментарии проходят одобрение перед публикацией.