Infraestrutura como Código – 3ª Edição

Projetando e distribuindo sistemas dinâmicos para a era da computação em nuvem

Infraestrutura como Código – 3ª Edição
× Infraestrutura como Código – 3ª Edição

Infraestrutura como Código – 3ª Edição

Compartilhar

Autor: Kief Morris

ISBN impresso: 978-85-7522-962-0
ISBN ebook: 978-85-7522-963-7
Ano: 2025
Páginas: 416
Preço impresso: R$ 139,00 O ebook deste livro está disponível na Amazon.

Opine sobre este livro

Descrição do livro

Na década passada, a nuvem e a Infraestrutura como Código saíram dos bastidores da TI e das startups para se tornarem algo do mundo convencional. Muitas organizações se apressaram para adotar novas tecnologias como parte de sua transformação em empresas digitais, gerando a proliferação de bases de código de infraestrutura difíceis de manter. Agora há a necessidade de consolidar os sistemas baseados em nuvem em alicerces maduros para o crescimento sustentável.

Neste livro, Kief Morris descreve padrões e práticas para a construção e a evolução da Infraestrutura como Código. A terceira edição atualizada fornece um contexto mais amplo para a infraestrutura, explicando como ela deve ser projetada e implementada para suportar os objetivos e desafios estratégicos de uma empresa, como manter-se crescendo sem deixar de, ao mesmo tempo, gerenciar melhor os custos.

O livro aborda:

• Conceitos básicos, incluindo a exploração de linguagens de infraestrutura declarativas e procedurais

• Arquitetura de infraestrutura, com base em lições aprendidas com o design e a engenharia de softwares para a construção de bases de código de infraestrutura que possam ser melhorados

• Padrões para a construção de uma infraestrutura que suporte serviços de plataforma nos complexos e diversificados cenários dos sistemas de TI do mundo real

• Fluxos de trabalho e modelos operacionais que combinam automação e nuvem com abordagens inovadoras como o desenvolvimento ágil e DevOps

Ver menos ▲

Sumário

  • Prefácio
  • Parte I: Fundamentos
  • Capítulo 1: O que é Infraestrutura como Código?
  • Infraestrutura como Código
  • Da Idade do Ferro à Era da Computação em Nuvem
    • Abordagens da Era da Computação em Nuvem para a gestão de mudanças
    • O caminho para a Era da Computação em Nuvem
  • Objetivos estratégicos e Infraestrutura como Código
  • Objetivos de arquitetura do sistema e Infraestrutura como Código
  • Use a Infraestrutura como Código para otimizar a mudança
    • Mito: a infraestrutura não muda com muita frequência
    • Mito: podemos construir a infraestrutura primeiro e automatizá-la depois
    • Mito: a velocidade e a qualidade são intercambiáveis
  • As quatro métricas essenciais
  • Práticas essenciais para a Infraestrutura como Código
    • Definir tudo como código
    • Testar e entregar continuamente todo o trabalho em andamento
    • Construir partes pequenas e simples que possam ser alteradas independentemente
  • Conclusão
  • Capítulo 2: Princípios da infraestrutura de nuvem
  • Presuma que os sistemas não são confiáveis
  • Torne tudo reproduzível
  • Evite sistemas floco de neve
  • Crie itens descartáveis
  • Reduza a variação
  • Assegure-se de que qualquer procedimento possa ser repetido
  • Aplique princípios de design de software ao código da infraestrutura
  • Conclusão
  • Capítulo 3: Plataformas de infraestrutura
  • Plataformas de infraestrutura
    • Recursos de infraestrutura
    • IaaS no data center
    • Multinuvem
  • Plataformas de engenharia
    • Serviços de plataforma
    • Fornecendo funcionalidade de serviço de plataforma
  • Serviços de entrega de plataforma
    • Serviços de entrega de aplicação
    • Serviços de entrega de infraestrutura
    • Serviços de gerenciamento de plataforma
  • Conclusão
  • Capítulo 4: Ferramentas e linguagens de Infraestrutura como Código
  • Codificando infraestrutura
    • Indo além do scripting baseado em tarefas
    • Entendendo o que você pode definir como código
    • Código ou configuração?
    • Definindo configuração como código
    • Gerenciando seu código em um repositório de código-fonte
  • Processamento de código de infraestrutura
    • Sabendo quando o código é executado
    • Processando e implantando código de infraestrutura
    • Visualizando alterações
    • Rastreando a execução do código de infraestrutura
    • Gerenciando o estado da infraestrutura
  • Ferramentas de Infraestrutura como Código
  • Tipos de linguagens para codificação de infraestrutura
    • Código procedural e idempotente
    • Linguagens e ferramentas imperativas e declarativas
    • Linguagens específicas de domínio e de uso geral
    • Linguagens de baixo nível e de alto nível
    • Infraestrutura a partir de Código
  • Conclusão
  • Parte II: Design
  • Capítulo 5: Princípios de design para a Infraestrutura como Código
  • Considerações de design para a Infraestrutura como Código
    • Propriedades CUPID do design
    • Coesão e acoplamento
    • Provedores, consumidores e interfaces
    • Gerenciamento de interfaces entre componentes
    • Uso de interfaces para componentização
  • Design nos estágios do ciclo de vida do código de infraestrutura
  • Fatores de design
    • Fatores de design para código-fonte
    • Fatores de design para o empacotamento e a implantação de infraestrutura
    • Fatores de design para runtime
    • Fatores de design entre os estágios do ciclo de vida
  • Conclusão
  • Capítulo 6: Componentes de infraestrutura
  • Os componentes da infraestrutura
    • O começo do design da infraestrutura: workloads
    • Composições de infraestrutura
    • Pilhas de implantação de infraestrutura
    • Bibliotecas de código de infraestrutura
    • Bibliotecas como pilhas implantáveis
  • Compartilhamento e reutilização de código de infraestrutura
    • Compartilhando componentes do código de infraestrutura
    • Compartilhando código de pilha entre várias instâncias
    • Compartilhando instâncias de pilha entre workloads
  • Design de infraestrutura orientado por aplicações
    • Design horizontal
    • Design vertical
    • Infraestrutura compartilhada incluída no design vertical
    • Design de infraestrutura orientado por aplicações de referência
  • Fluxo de trabalho do design
  • Conclusão
  • Capítulo 7: Projetando pilhas de infraestrutura implantáveis
  • Padrões para o dimensionamento e a estruturação de pilhas
    • Full System Stack
    • Monolithic Stack
    • Application Group Stack
    • Single Service Stack
    • Micro Stacks
    • Shared Stack
  • Padrões de pilha para múltiplas instâncias de infraestrutura
    • Multi-Environment Stack
    • Snowflakes as Code
    • Reusable Stack
  • Conclusão
  • Capítulo 8: Configurando instâncias de pilha de infraestrutura
  • Conceitos-chave
    • Use parâmetros de pilha para criar identificadores únicos
    • Mantenha os parâmetros simples
  • Exemplo de pilha
  • Padrões para a configuração de pilhas
    • Configuration in Code
    • Manual Stack Parameters
    • Stack Environment Variables
    • Scripted Parameters
    • Stack Configuration Files
    • Deployment Wrapper Stack
    • Pipeline Stack Parameters
    • Stack Parameter Registry
  • Implementando um registro de configuração
    • Registros integrados de ferramentas de automação de infraestrutura
    • Registros de configuração empacotados independentes
    • Serviços de registro de plataforma de IaaS
    • Seu próprio registro de configuração
    • Registros de configuração únicos ou múltiplos
  • Manipulando segredos
    • Gerenciando segredos
    • Armazenando segredos em arquivos criptografados
    • Usando um serviço de armazenamento de segredos
    • Injetando segredos no runtime
  • Conclusão
  • Capítulo 9: Integrando pilhas de infraestrutura
  • Exemplo de pilhas de implantação de infraestrutura
  • Padrões de descoberta de recursos
    • Resource Matching
    • Stack State Lookup
    • Integration Registry Lookup
  • Implementando a descoberta de recursos
    • Implementando a descoberta no código da pilha
    • Usando a injeção de dependências
    • Gerenciando dependências em um script de implantação
    • Integrando pilhas com uma composição
  • Conclusão
  • Capítulo 10: Projetando bibliotecas de código de infraestrutura
  • Facade Module
    • Também conhecido como
    • Motivação
    • Aplicabilidade
    • Consequências
    • Implementação
    • Padrões relacionados
  • Obfuscation Module
    • Motivação
    • Aplicabilidade
    • Consequências
    • Implementação
    • Padrões relacionados
  • Unshared Module
    • Motivação
    • Aplicabilidade
    • Consequências
    • Implementação
  • Bundle Module
    • Motivação
    • Aplicabilidade
    • Consequências
    • Implementação
    • Padrões relacionados
  • Spaghetti Module
    • Motivação
    • Consequências
    • Implementação
    • Padrões relacionados
  • Infrastructure Domain Entity
    • Motivação
    • Aplicabilidade
    • Implementação
    • Padrões relacionados
  • Stack Module
    • Também conhecido como
    • Motivação e Aplicabilidade
    • Implementação
  • Modular Monolith
    • Motivação
    • Consequências
    • Implementação
    • Padrões relacionados
  • Conclusão
  • Capítulo 11: Construindo servidores como código
  • Definindo servidores
    • O que há em um servidor
    • De onde vêm os elementos
    • Código de configuração do servidor
    • Roles de servidor
  • Criando e provisionando uma nova instância de servidor
    • Criando um servidor usando provisionamento de rede
    • Criando um servidor de IaaS manualmente
    • Criando um servidor como parte de uma pilha
    • Criando um servidor a partir de um evento
  • Configurando uma nova instância de servidor
    • Fazendo o baking de imagens e o frying de instâncias
    • Configuração pull com scripts de inicialização
    • Configuração push com comandos externos
  • Atualizando e alterando servidores
    • Push on Change
    • Sincronização de configuração contínua
    • Alterando servidores por substituição
    • Servidor imutável
  • Construindo imagens de servidor
    • Clonagem a quente de um servidor existente
    • Inicializando um instalador de sistema operacional
    • Modificando uma imagem padrão
    • Orquestrando a construção de imagens
  • Conclusão
  • Capítulo 12: Projetando ambientes
  • Arquiteturas multiambiente
  • Múltiplos ambientes de entrega
  • Divisão de ambientes para alinhamento
    • Alinhando os ambientes à arquitetura do sistema
    • Alinhando os ambientes à estrutura organizacional
    • Alinhando os ambientes a preocupações de governança
  • Múltiplas réplicas de ambiente
    • Projetando ambientes para cenários de operabilidade
    • Distribuindo ambientes geograficamente
    • Replicando ambientes para bases de usuários
  • Camadas de implementação de ambientes
    • Utilizando os fatores de design para escolher a camada de implementação de ambiente
    • Testando e entregando alterações na infraestrutura do ambiente
  • Grupos de recursos de IaaS e os ambientes
  • Ambientes com várias pilhas
  • Conclusão
  • Capítulo 13: Fornecendo infraestrutura de runtime de aplicação
  • Design de infraestrutura orientado pela aplicação
  • Plataformas de runtime de aplicação
    • Servidores como código
    • Clusters de servidores como código
    • Clusters de aplicações como código
    • Infraestrutura de aplicação serverless
  • Topologias de cluster
    • Vários ambientes em um único cluster
    • Um cluster por ambiente
    • Vários clusters por ambiente
    • Clusters entre ambientes
  • Conclusão
  • Parte III: Entrega
  • Capítulo 14: Fluxos de trabalho básicos de entrega de infraestrutura
  • Princípios de entrega contínua para a Infraestrutura como Código
    • Automatize o processo inteiro
    • Só faça alterações usando o processo automatizado
    • Assegure-se de que os ambientes sejam consistentes
    • Entregue alterações de maneira abrangente
    • Mantenha os ciclos de entrega curtos
    • Mantenha todo o código pronto para a produção
    • Assegure-se de que o código e os recursos implantados sejam consistentes
    • Reduza a interrupção ao implantar alterações
  • Fluxo de trabalho básico para entrega de infraestrutura
    • Estágio de desenvolvimento
    • Estágio de build
    • Estágios de teste
    • Estágio de lançamento
    • Estágio de execução
    • Ciclos do fluxo de trabalho
  • Fluxos de trabalho e topologias de equipe para a entrega de software e infraestrutura
    • Equipes de gerenciamento de instância de infraestrutura
    • Equipe de infraestrutura full stack
    • Equipe facilitadora de infraestrutura
  • Medindo a eficácia da entrega de infraestrutura
  • Conclusão
  • Capítulo 15: Construindo e distribuindo Infraestrutura como Código
  • Estágio de build: preparando para distribuição
    • Etapas de processamento de código para construção e implantação
    • Fluxo de trabalho de construção na implantação
    • Fluxo de trabalho construir uma vez, implantar muitas
    • Empacotando ou bloqueando dependências
    • Pull requests e desenvolvimento baseado em tronco
  • Distribuição de código de infraestrutura
    • Distribuindo branches de código como artefatos
    • Distribuindo pacotes de pilha como artefatos
    • Distribuindo bibliotecas como artefatos
  • Fluxos de trabalho de integração
    • Fan-in: integrando componentes durante a entrega
    • Federação: integrando componentes no runtime
    • Monorepo: integrando componentes no build
    • Pré-teste de infraestrutura
  • Equipes de serviço de infraestrutura
    • Infraestrutura compartilhada como serviço
    • Provisionando uma instância de infraestrutura sob demanda
    • Fornecendo infraestrutura implantável como componente
    • Várias equipes de plataforma de infraestrutura
  • Conclusão
  • Capítulo 16: Implementando a entrega de infraestrutura com pipelines
  • Organizando projetos em um codebase
    • Organizando projetos de build e repositórios
    • Organizando os tipos de código
  • Trabalhando em código localmente
    • Emuladores locais de IaaS
    • Ambientes pessoais de Iaas
    • Ambiente na medida certa
  • Projetando pipelines de entrega de infraestrutura
    • Conteúdo de um estágio de pipeline
    • Ações de um estágio de pipeline
    • Contexto de um estágio de pipeline
    • Softwares e serviços do pipeline de entrega
  • Usando scripts de orquestração de entrega
  • Conclusão
  • Capítulo 17: Estratégia de teste para código de infraestrutura
  • Por que testar continuamente o código de infraestrutura?
    • O que significa testar continuamente
    • Teste imediato e teste eventual
  • O que devemos testar na infraestrutura?
  • Desafios do teste de código de infraestrutura
    • Geralmente os testes para código declarativo têm baixo valor
    • Geração de código para teste de unidade
    • É lento testar código de infraestrutura
    • As dependências dificultam testar a infraestrutura
  • Teste progressivo
    • Pirâmide de testes
    • Modelo de teste do queijo suíço
  • Testando na produção
    • O que você não pode replicar fora da produção
    • Gerenciando os riscos dos testes na produção
  • Conclusão
  • Capítulo 18: Implementação do teste de código de infraestrutura
  • Estágios de teste offline para pilhas
    • Verificação de sintaxe
    • Análise de código estática offline
    • Análise estática de código conectada
    • Verificações da cadeia de suprimentos
    • Emuladores locais de infraestrutura
  • Use test fixtures para manipular dependências
    • Use test fixtures para substituir provedores
    • Use test fixtures para substituir consumidores
    • Refatore os componentes para que eles possam ser isolados
  • Estágio de teste online para pilhas
    • Visualização: vendo quais alterações serão feitas
    • Verificação: fazendo asserções sobre recursos de infraestrutura
    • Resultados: comprovando se a infraestrutura funciona corretamente
  • Ciclos de vida da instância de teste
    • Persistent Test Stack
    • Ephemeral Test Stack
    • Dual Persistent and Ephemeral Stack Stages
    • Periodic Stack Rebuild
    • Continuous Stack Reset
  • Orquestração de testes
    • Considere usar ferramentas de orquestração de testes
    • Suporte ao teste local
    • Evite um acoplamento forte nas ferramentas de pipeline
  • Conclusão
  • Capítulo 19: Implantando infraestrutura
  • Entendendo as estratégias de implantação de software
    • Implantação push para software
    • Implantação pull para software
    • Implantação GitOps para software
  • Usando estratégias de implantação de infraestrutura
    • Implantação de infraestrutura isolada
    • Descritor de infraestrutura de aplicação
    • Infraestrutura a partir de código
  • Executando implantações de infraestrutura
    • Implantando o código de infraestrutura a partir do seu computador
    • Implantando a partir de um serviço central
    • Implantando a partir de um pipeline de entrega
    • Usando um serviço de implantação de código de infraestrutura
    • Infraestrutura como dados
    • Scripts de implantação de infraestrutura
  • Acionando implantações de infraestrutura
    • Usando materiais de entrada para a implantação
    • Acionando a implantação manualmente
    • Acionando a implantação automaticamente
    • Implementando gatilhos
  • Conclusão
  • Capítulo 20: Alterando a infraestrutura existente
  • Alterando um sistema de forma incremental
    • Divida uma alteração em incrementos
    • Manipule alterações incompletas
  • Alterando com segurança a infraestrutura da produção
    • Remapeamento manual da infraestrutura na produção
    • Remapeie a infraestrutura da produção em pipelines
    • Defina alterações na infraestrutura da produção em código
    • Use scripts para alterações na infraestrutura da produção
  • Redução da interrupção quando da implantação de alterações
    • Implantações azul-verde
    • Atualizações contínuas e lançamentos canário
  • Gerenciando dados quando da alteração da infraestrutura da produção
    • Armazenar e carregar
    • Use a transferência de dados contínua
    • Segregue a infraestrutura de dados
    • Separe as alterações no software e nos dados
    • Use a recuperação de desastres contínua
  • Conclusão
  • Capítulo 21: Governança
  • Shift Left
    • Fluxo de trabalho para o shift left
    • Topologias de equipe para o shift left
  • Conformidade como código
    • Controles por camada de design de componentes
    • Controles por fluxo de trabalho
  • Conclusão
  • Sobre o autor
  • Colofão
  • Índice remissivo
Ver sumário completo ▼

Sobre o autor

Kief Morris

Kief Morris é um engenheiro de destaque na Thoughtworks, onde ajuda clientes e equipes a aplicar tecnologia de nuvem e infraestrutura para fornecer mais valor de forma rápida e confiável. Há mais de 20 anos ele projeta, constrói e opera infraestrutura de TI automatizada, tralhando com tudo, desde shell scripts e Perl até o CFEngine, Puppet, Chef,… Ver perfil completo ▶