Publicado a

Módulos, peças que se reutilizam sem copiar

Copiar o código de um ambiente para criar outro funciona uma vez. À terceira cópia, cada uma é diferente e corrigir um erro obriga a procurá-lo em todas. Os módulos resolvem isso com uma só definição e parâmetros por ambiente.

Linha de serviço Automação e IaC

A tentação de copiar e colar

Já funciona o ambiente de desenvolvimento. Falta a aceitação: copia-se a pasta, mudam-se uns nomes e está feito. Depois a produção, outra cópia. Ao cabo de um ano há seis cópias que começaram iguais e já não o são. Alguém corrige uma falha de segurança numa e esquece-se das outras cinco.

É o mesmo problema que tem o código de uma aplicação quando se duplica, e a solução é a mesma: uma só definição que se reutiliza.

O que é um módulo

Uma definição, três utilizaçõesUm módulo usado por três ambientes com parâmetros e versões diferentes, face a seis cópias que divergem.IAC · MÓDULOSUma definição, três utilizações Módulo «serviço web»balanceador + instâncias + baseversão 2.3Desenvolvimento1 instância · pequenausa v2.3Aceitação2 instâncias · médiausa v2.3Produção3 instâncias · médiausa v2.2A produção continua em v2.2 até a melhoria passar por desenvolvimento e aceitação.COPIAR E COLAR, AO CABO DE UM ANOCópia 1Cópia 2semcifraCópia 3portaextraCópia 4Cópia 5patchnão aplicadoCópia 6tamanhofixoCorrigir o módulo corrige todos os que o usam.Corrigir cópias obriga a encontrar cada uma.N100F · n100f.com

Um módulo é um bloco de infraestrutura com um propósito claro e poucos parâmetros. Por exemplo, «um serviço web com o seu balanceador, a sua base de dados e as suas regras de rede», onde os parâmetros são o tamanho, o número de instâncias e o nome do ambiente.

Cada ambiente usa o módulo com os seus valores; não o copia. Se o módulo for corrigido, a correção chega a todos os ambientes que o usam.

Como se desenha um bom módulo

Bem Mal
Um propósito que se explica numa frase «Tudo o da aplicação X»
Poucos parâmetros, com valores por omissão seguros Dezenas de parâmetros para cobrir cada caso
Seguro por omissão: cifra ativada, nada exposto Insegura a não ser que se configure
Versionado: cada ambiente fixa que versão usa Sempre a última, para todos ao mesmo tempo
Documentado com um exemplo de utilização É preciso ler o código para o usar

Versionar para mudar com calma

Que todos os ambientes usem a mesma definição não significa que mudem ao mesmo tempo. Cada ambiente declara que versão do módulo usa. Uma melhoria testa-se primeiro em desenvolvimento, depois em aceitação e por fim em produção, como qualquer outra mudança.

Reutilizar bem reduz erros. Mas cada mudança continua a ter risco, e antes de a aplicar há que ver exatamente o que vai fazer. Para isso existe o plano.


Como o aplicamos: Automação e IaC.

Se o seu custo cloud cresce sem que ninguém saiba porquê, ou a sua arquitetura depende de quem a montou, falemos.

Falemos