Infraestructura como código, 2ª edición

Book description

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Hace seis años, la Infraestructura como Código era un concepto nuevo. Hoy, a medida que incluso los bancos y otras organizaciones conservadoras planifican traslados a la nube, los equipos de desarrollo de empresas de todo el mundo intentan construir grandes bases de código de infraestructura. Con este libro práctico, Kief Morris, de ThoughtWorks, te muestra cómo utilizar eficazmente los principios, prácticas y patrones promovidos por los equipos DevOps para gestionar la infraestructura de la era de la nube.

Ideal para administradores de sistemas, ingenieros de infraestructuras, desarrolladores de software, jefes de equipo y arquitectos, esta edición actualizada demuestra cómo puedes explotar la nube y la tecnología de automatización para realizar cambios de forma fácil, segura, rápida y responsable. Aprenderás a definirlo todo como código y a aplicar prácticas de diseño e ingeniería de software para construir tu sistema a partir de piezas pequeñas y débilmente acopladas.

Este libro cubre:

  • Fundamentos: Utilizar la Infraestructura como Código para impulsar el cambio continuo y elevar el listón de la calidad operativa, utilizando herramientas y tecnologías para construir plataformas basadas en la nube.
  • Trabajar con pilas de infraestructura: Aprende a definir, aprovisionar, probar y realizar cambios continuos en los recursos de infraestructura.
  • Trabajar con servidores y otras plataformas: Utiliza patrones para diseñar el aprovisionamiento y la configuración de servidores y clusters
  • Trabajar con grandes sistemas y equipos: Aprende flujos de trabajo, gobernanza y patrones arquitectónicos para crear y gestionar elementos de infraestructura

Table of contents

  1. Prefacio
    1. Por qué escribí este libro
    2. Novedades y diferencias de esta edición
    3. ¿Qué sigue?
    4. Qué es y qué no es este libro
    5. Algo de historia de la infraestructura como código
    6. A quién va dirigido este libro
    7. Principios, prácticas y modelos
    8. Ejemplos de ShopSpinner
    9. Convenciones utilizadas en este libro
    10. Aprendizaje en línea O'Reilly
    11. Cómo contactar con nosotros
    12. Agradecimientos
  2. I. Fundamentos
  3. 1. ¿Qué es la Infraestructura como Código?
    1. De la Edad de Hierro a la Edad de las Nubes
    2. Infraestructura como código
    3. Ventajas de la Infraestructura como Código
    4. Utiliza la infraestructura como código para optimizar el cambio
      1. Objeción: "No hacemos cambios con la frecuencia suficiente para justificar su automatización"
      2. Objeción: "Debemos construir primero y automatizar después"
      3. Objeción: "Debemos elegir entre rapidez y calidad"
    5. Las cuatro métricas clave
    6. Tres prácticas básicas para la Infraestructura como Código
      1. Práctica básica: Define todo como código
      2. Práctica básica: Probar y entregar continuamente todo el trabajo en curso
      3. Práctica Básica: Construye Piezas Pequeñas y Sencillas Que Puedas Cambiar Independientemente
    7. Conclusión
  4. 2. Principios de la infraestructura de la era de la nube
    1. Principio: Suponer que los sistemas no son fiables
    2. Principio: Haz que todo sea reproducible
    3. Error: Sistemas de copos de nieve
    4. Principio: Crear cosas desechables
    5. Principio: Minimizar la variación
      1. Deriva de configuración
    6. Principio: Asegúrate de que puedes repetir cualquier proceso
    7. Conclusión
  5. 3. Plataformas de infraestructuras
    1. Las partes de un sistema de infraestructuras
    2. Plataformas de infraestructura
    3. Recursos de infraestructura
      1. Recursos informáticos
      2. Recursos de almacenamiento
      3. Recursos de red
    4. Conclusión
  6. 4. Práctica básica: Define todo como código
    1. Por qué debes definir tu infraestructura como código
    2. Lo que puedes definir como código
      1. Elegir Herramientas con Configuración Externalizada
      2. Gestiona tu código en un sistema de control de versiones
    3. Lenguajes de codificación de infraestructuras
      1. Guiones de Infraestructura
      2. Lenguajes declarativos de infraestructura
      3. Lenguajes de infraestructura programables e imperativos
      4. Lenguajes declarativos frente a imperativos para infraestructuras
      5. Lenguajes de infraestructura específicos de dominio
      6. Lenguajes de propósito general frente a DSL para infraestructuras
    4. Principios de aplicación para definir la infraestructura como código
      1. Separar código declarativo e imperativo
      2. Trata el código de infraestructura como código real
    5. Conclusión
  7. II. Trabajar con pilas de infraestructuras
  8. 5. Construir pilas de infraestructuras como código
    1. ¿Qué es una pila de infraestructuras?
      1. Código de pila
      2. Instancia de la pila
      3. Configurar servidores en una pila
      4. Lenguajes de infraestructura de bajo nivel
      5. Lenguajes de infraestructura de alto nivel
    2. Patrones y antipatrones para estructurar pilas
      1. Antipatrón: Pila monolítica
      2. Patrón: Pila de grupos de aplicaciones
      3. Patrón: Pila de servicios
      4. Patrón: Micro Stack
    3. Conclusión
  9. 6. Construir entornos con pilas
    1. De qué tratan los entornos
      1. Entornos de entrega
      2. Múltiples entornos de producción
      3. Entornos, coherencia y configuración
    2. Patrones para construir entornos
      1. Antipatrón: Pila de varios entornos
      2. Antipatrón: Entornos de copiar y pegar
      3. Patrón: Pila reutilizable
    3. Construir entornos con múltiples pilas
    4. Conclusión
  10. 7. Configurar instancias de pila
    1. Utilizar parámetros de pila para crear identificadores únicos
    2. Ejemplo de parámetros de pila
    3. Patrones para configurar pilas
      1. Antipatrón: Parámetros manuales de la pila
      2. Patrón: Variables de entorno de pila
      3. Patrón: Parámetros con guión
      4. Patrón: Archivos de configuración de la pila
      5. Patrón: Pila envolvente
      6. Patrón: Parámetros de la pila de tuberías
      7. Patrón: Registro de parámetros de pila
    4. Registro de configuración
      1. Implementar un Registro de Configuración
      2. Registros de configuración únicos o múltiples
    5. Manejo de secretos como parámetros
      1. Cifrar secretos
      2. Autorización secreta
      3. Inyectar secretos en tiempo de ejecución
      4. Secretos desechables
    6. Conclusión
  11. 8. Práctica básica: Prueba y entrega continuas
    1. ¿Por qué probar continuamente el código de la infraestructura?
      1. Qué significan las pruebas continuas
      2. ¿Qué debemos probar con la infraestructura?
    2. Desafíos de probar el código de la infraestructura
      1. Reto: Las pruebas para el código declarativo suelen tener poco valor
      2. Reto: Probar el código de la infraestructura es lento
      3. Desafío: Las dependencias complican la infraestructura de pruebas
    3. Pruebas progresivas
      1. Pirámide de pruebas
      2. Modelo de prueba del queso suizo
    4. Conductos de suministro de infraestructuras
      1. Etapas de la tubería
      2. Alcance de los componentes probados en una etapa
      3. Alcance de las relaciones utilizadas para una etapa
      4. Elementos de la plataforma necesarios para un escenario
      5. Software y servicios de canalización de entregas
    5. Pruebas en producción
      1. Lo que no puedes reproducir fuera de la producción
      2. Gestionar los riesgos de las pruebas en producción
    6. Conclusión
  12. 9. Probar pilas de infraestructura
    1. Ejemplo de infraestructura
      1. La pila de ejemplo
      2. Canalización de la pila de ejemplo
    2. Etapas de prueba offline para pilas
      1. Comprobación sintáctica
      2. Análisis estático de código fuera de línea
      3. Análisis estático de código con API
      4. Pruebas con una API simulada
    3. Etapas de la prueba en línea para pilas
      1. Avance: Ver qué cambios se introducirán
      2. Verificación: Hacer afirmaciones sobre los recursos de infraestructura
      3. Resultados: Probar que la infraestructura funciona correctamente
    4. Utilizar dispositivos de prueba para gestionar las dependencias
      1. Dobles de prueba para dependencias ascendentes
      2. Dispositivos de prueba para dependencias descendentes
      3. Refactoriza los componentes para que puedan aislarse
    5. Patrones del ciclo de vida de las instancias de prueba de las pilas
      1. Patrón: Pila de pruebas persistente
      2. Patrón: Pila de pruebas efímera
      3. Antipatrón: Doble Etapa de Pila Persistente y Efímera
      4. Patrón: Reconstrucción periódica de la pila
      5. Patrón: Reinicio continuo de la pila
    6. Orquestación de pruebas
      1. Apoya las pruebas locales
      2. Evita el Acoplamiento Estrecho con Herramientas para Tuberías
      3. Herramientas de orquestación de pruebas
    7. Conclusión
  13. III. Trabajar con servidores y otras plataformas de ejecución de aplicaciones
  14. 10. Tiempos de ejecución de aplicaciones
    1. Infraestructura nativa de la nube y orientada a las aplicaciones
    2. Objetivos del tiempo de ejecución de la aplicación
      1. Partes implementables de una aplicación
      2. Paquetes de Implementación
    3. Implementación de aplicaciones en servidores
      1. Aplicaciones de envasado en recipientes
      2. Implementación de aplicaciones en clusters de servidores
    4. Implementación de aplicaciones en clusters de aplicaciones
    5. Paquetes para la Implementación de Aplicaciones en Clusters
    6. Implementación de aplicaciones sin servidor FaaS
    7. Datos de aplicación
      1. Esquemas y estructuras de datos
      2. Infraestructura de almacenamiento de aplicaciones nativas de la nube
    8. Conectividad de aplicaciones
    9. Descubrimiento de servicios
    10. Conclusión
  15. 11. Construir servidores como código
    1. Qué hay en un servidor
    2. De dónde vienen las cosas
    3. Código de configuración del servidor
      1. Módulos de código de configuración del servidor
      2. Diseño de módulos de código de configuración del servidor
      3. Versionar y promover el código del servidor
      4. Funciones del servidor
    4. Probar el código del servidor
      1. Probar progresivamente el código del servidor
      2. Qué probar con el código del servidor
      3. Cómo probar el código del servidor
    5. Crear una nueva instancia de servidor
      1. Creación manual de una nueva instancia de servidor
      2. Utilizar un script para crear un servidor
      3. Utilizar una herramienta de gestión de pilas para crear un servidor
      4. Configurar la Plataforma para Crear Servidores Automáticamente
      5. Utilizar una herramienta de aprovisionamiento en red para crear un servidor
    6. Servidores de Preconstrucción
      1. Clonar en caliente un servidor
      2. Utilizar una instantánea del servidor
      3. Crear una imagen limpia del servidor
    7. Configurar una nueva instancia de servidor
      1. Freír una instancia de servidor
      2. Imágenes del servidor de cocción
      3. Combinar hornear y freír
      4. Aplicar la configuración del servidor al crear un servidor
    8. Conclusión
  16. 12. Gestión de cambios en los servidores
    1. Patrones de gestión de cambios: Cuándo aplicar los cambios
      1. Antipatrón: Aplicar al cambiar
      2. Patrón: Sincronización continua de la configuración
      3. Patrón: Servidor inmutable
    2. Cómo aplicar el código de configuración del servidor
      1. Patrón: Configuración del Servidor Push
      2. Patrón: Configuración del servidor pull
    3. Otros eventos del ciclo de vida del servidor
      1. Detener y reiniciar una instancia del servidor
      2. Sustituir una instancia de servidor
      3. Recuperar un servidor averiado
    4. Conclusión
  17. 13. Imágenes del servidor como código
    1. Crear una imagen de servidor
      1. ¿Por qué crear una imagen de servidor?
      2. Cómo crear una imagen de servidor
      3. Herramientas para crear imágenes de servidor
      4. Proceso de creación de imagen en línea
      5. Proceso de creación de imágenes offline
    2. Contenido de origen para una imagen de servidor
      1. Construir a partir de una imagen de servidor de stock
      2. Crear una imagen de servidor desde cero
      3. Procedencia de una imagen de servidor y su contenido
    3. Cambiar una imagen de servidor
      1. Recalentar u hornear una imagen fresca
      2. Versionar una imagen de servidor
      3. Actualizar las instancias del servidor cuando cambia una imagen
      4. Proporcionar y utilizar una imagen de servidor en todos los equipos
      5. Manejar cambios importantes en una imagen
    4. Utilizar una canalización para probar y entregar una imagen de servidor
      1. Etapa de construcción de una imagen de servidor
      2. Etapa de prueba de una imagen de servidor
      3. Etapas de entrega de una imagen de servidor
    5. Utilizar varias imágenes de servidor
      1. Imágenes de servidor para diferentes plataformas de infraestructura
      2. Imágenes de servidor para distintos sistemas operativos
      3. Imágenes de servidor para diferentes arquitecturas de hardware
      4. Imágenes de servidor para distintos roles
      5. Estratificación de imágenes de servidor
      6. Compartir código entre imágenes de servidor
    6. Conclusión
  18. 14. Construir agrupaciones como código
    1. Soluciones de clúster de aplicaciones
      1. Clúster como servicio
      2. Distribución de clústeres empaquetados
    2. Topologías de pila para clusters de aplicaciones
      1. Pila monolítica mediante clúster como servicio
      2. Pila monolítica para una solución de clúster empaquetada
      3. Pipeline para una pila de clústeres de aplicaciones monolíticas
      4. Ejemplo de varias pilas para un clúster
    3. Estrategias de compartición para clusters de aplicaciones
      1. Un gran clúster para todo
      2. Agrupaciones separadas para etapas de entrega
      3. Clusters para la Gobernanza
      4. Agrupaciones para equipos
      5. Malla de servicio
    4. Infraestructura para FaaS sin servidor
    5. Conclusión
  19. IV. Diseño de infraestructuras
  20. 15. Práctica básica: Piezas pequeñas y sencillas
    1. Diseñar para la modularidad
      1. Características de los componentes bien diseñados
      2. Reglas para el diseño de componentes
      3. Utiliza las pruebas para tomar decisiones de diseño
    2. Modularizar la infraestructura
      1. Componentes de pila frente a pilas como componentes
      2. Utilizar un servidor en una pila
    3. Trazar límites entre componentes
      1. Alinear los límites con los patrones de cambio naturales
      2. Alinea los límites con los ciclos de vida de los componentes
      3. Alinear los límites con las estructuras organizativas
      4. Crea límites que favorezcan la resiliencia
      5. Crea límites que apoyen la ampliación
      6. Alinear los límites con las preocupaciones de seguridad y gobernanza
      7. Conclusión
  21. 16. Construir pilas a partir de componentes
    1. Lenguajes de infraestructura para los componentes de la pila
      1. Reutiliza el código declarativo con módulos
      2. Crear dinámicamente elementos de pila con bibliotecas
    2. Patrones para componentes de pila
      1. Patrón: Módulo Fachada
      2. Antipatrón: Módulo de ofuscación
      3. Antipatrón: Módulo no compartido
      4. Patrón: Módulo Bundle
      5. Antipatrón: Módulo Espagueti
      6. Patrón: Entidad de dominio de la infraestructura
    3. Construir una capa de abstracción
    4. Conclusión
  22. 17. Utilizar pilas como componentes
    1. Descubrir dependencias entre pilas
      1. Patrón: Coincidencia de recursos
      2. Patrón: Búsqueda de datos en la pila
      3. Patrón: Búsqueda en el Registro de Integración
      4. Inyección de dependencia
    2. Conclusión
  23. V. Suministro de infraestructuras
  24. 18. Organizar el código de infraestructuras
    1. Organizar proyectos y repositorios
      1. ¿Un repositorio o muchos?
      2. Un repositorio para todo
      3. Un repositorio separado para cada proyecto (Microrepo)
      4. Múltiples repositorios con múltiples proyectos
    2. Organizar los distintos tipos de código
      1. Archivos de apoyo al proyecto
      2. Pruebas entre proyectos
      3. Proyectos dedicados a pruebas de integración
      4. Organizar el código por concepto de dominio
      5. Organizar los archivos de valores de configuración
    3. Gestionar la infraestructura y el código de las aplicaciones
      1. Proporcionar infraestructura y aplicaciones
      2. Probar aplicaciones con infraestructura
      3. Probar la infraestructura antes de integrarla
      4. Uso del Código de Infraestructura para la Implementación de Aplicaciones
    4. Conclusión
  25. 19. Código de Infraestructuras
    1. Código de ejecución de infraestructuras
      1. Construir un proyecto de infraestructuras
      2. Empaquetar el código de la infraestructura como un artefacto
      3. Utilizar un repositorio para entregar código de infraestructura
    2. Integrar proyectos
      1. Patrón: Integración de proyectos Build-Time
      2. Patrón: Integración del proyecto en el plazo de entrega
      3. Patrón: Integración del Proyecto Aplicar-Tiempo
    3. Utilizar scripts para envolver herramientas de infraestructura
      1. Ensamblar valores de configuración
      2. Simplificar los scripts envoltorio
    4. Conclusión
  26. 20. Flujos de trabajo en equipo
    1. El pueblo
    2. ¿Quién escribe el código de la infraestructura?
    3. Aplicar el código a la infraestructura
      1. Aplicar el código desde tu estación de trabajo local
      2. Aplicar código desde un servicio centralizado
      3. Instancias de infraestructura personal
      4. Ramas del código fuente en los flujos de trabajo
    4. Evitar la deriva de la configuración
      1. Minimiza el retraso en la automatización
      2. Evitar la aplicación ad hoc
      3. Aplicar código continuamente
      4. Infraestructura inmutable
    5. Gobernanza en un flujo de trabajo basado en pipelines
      1. Reorganización de responsabilidades
      2. Desplazamiento a la izquierda
      3. Un ejemplo de proceso para la infraestructura como código con gobernanza
    6. Conclusión
  27. 21. Cambio seguro de infraestructuras
    1. Reduce el alcance del cambio
      1. Pequeños cambios
      2. Ejemplo de refactorización
    2. Empujar cambios incompletos a producción
      1. Instancias paralelas
      2. Transformaciones retrocompatibles
      3. Conmutadores de funciones
    3. Cambiar la infraestructura en vivo
      1. Cirugía de infraestructuras
      2. Expandir y contraer
      3. Cambios sin tiempo de inactividad
    4. Continuidad
      1. Continuidad evitando errores
      2. Continuidad mediante recuperación rápida
      3. Recuperación continua en caso de catástrofe
      4. Ingeniería del caos
      5. Planificar el fracaso
    5. Continuidad de los datos en un sistema cambiante
      1. Cerradura
      2. Segrega
      3. Replicar
      4. Recarga
      5. Mezclar enfoques de continuidad de datos
    6. Conclusión
  28. Índice

Product information

  • Title: Infraestructura como código, 2ª edición
  • Author(s): Kief Morris
  • Release date: September 2024
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098198251