stringtranslate.com

Infraestructura como código

La infraestructura como código ( IaC ) es el proceso de gestión y aprovisionamiento de recursos de centros de datos informáticos a través de archivos de definición legibles por máquina, en lugar de configuración de hardware físico o herramientas de configuración interactivas. [1] La infraestructura de TI administrada por este proceso comprende tanto equipos físicos, como servidores físicos , como máquinas virtuales y recursos de configuración asociados. Las definiciones pueden estar en un sistema de control de versiones , en lugar de mantener el código a través de procesos manuales. El código en los archivos de definición puede usar scripts o definiciones declarativas, pero la IaC emplea con más frecuencia enfoques declarativos .

Descripción general

La IaC surgió como respuesta a la dificultad que planteaban los sistemas de computación de servicios públicos y los marcos web de segunda generación. En 2006, el lanzamiento de Elastic Compute Cloud de Amazon Web Services y la versión 1.0 de Ruby on Rails apenas unos meses antes [2] crearon dificultades generalizadas de escalabilidad en la empresa que antes solo se experimentaban en grandes empresas multinacionales. [3] Con la aparición de nuevas herramientas para manejar este campo en constante crecimiento, nació la idea de la IaC. La idea de modelar la infraestructura con código y luego tener la capacidad de diseñar, implementar e implementar la infraestructura de aplicaciones con las mejores prácticas de software conocidas atrajo tanto a los desarrolladores de software como a los administradores de infraestructura de TI. La capacidad de tratar la infraestructura como código y utilizar las mismas herramientas que cualquier otro proyecto de software permitiría a los desarrolladores implementar aplicaciones rápidamente. [4]

Ventajas

El valor de IaC se puede dividir en tres categorías mensurables: costo, velocidad y riesgo. [ cita requerida ] La reducción de costos tiene como objetivo ayudar no solo a la empresa financieramente, sino también en términos de personas y esfuerzo, lo que significa que al eliminar el componente manual, las personas pueden reenfocar sus esfuerzos en otras tareas empresariales. [ cita requerida ] La automatización de la infraestructura permite la velocidad a través de una ejecución más rápida al configurar su infraestructura y tiene como objetivo proporcionar visibilidad para ayudar a otros equipos en toda la empresa a trabajar de manera rápida y más eficiente. La automatización elimina el riesgo asociado con el error humano, como la configuración incorrecta manual; eliminar esto puede disminuir el tiempo de inactividad y aumentar la confiabilidad. Estos resultados y atributos ayudan a la empresa a avanzar hacia la implementación de una cultura de DevOps , el trabajo combinado de desarrollo y operaciones . [ 5 ]

Tipos de enfoques

En general, existen dos enfoques para la IaC: declarativo (funcional) e imperativo (procedimental). La diferencia entre el enfoque declarativo y el imperativo es esencialmente "qué" versus "cómo" .El enfoque declarativo se centra en cuál debería ser la configuración de destino final;El imperativo se centra en cómo se debe cambiar la infraestructura para cumplir con este objetivo. [6] El enfoque declarativo define el estado deseado y el sistema ejecuta lo que debe suceder para alcanzar ese estado deseado. El imperativo define comandos específicos que deben ejecutarse en el orden apropiado para llegar a la conclusión deseada. [7]

Métodos

Existen dos métodos de IaC: push y pull . La principal diferencia es la manera en que se les indica a los servidores cómo deben configurarse. En el método pull, el servidor que se va a configurar obtendrá su configuración del servidor controlador. En el método push, el servidor controlador envía la configuración al sistema de destino. [8]

Herramientas

Existen muchas herramientas que cumplen con las capacidades de automatización de infraestructura y utilizan IaC. En términos generales, cualquier marco o herramienta que realice cambios o configure la infraestructura de manera declarativa o imperativa según un enfoque programático puede considerarse IaC. [9] Tradicionalmente, se utilizaban herramientas de automatización de servidores (ciclo de vida) y gestión de configuración para lograr IaC. Ahora, las empresas también utilizan herramientas de automatización de configuración continua o marcos de IaC independientes, como PowerShell DSC de Microsoft [10] o AWS CloudFormation . [11]

Automatización de configuración continua

Todas las herramientas de automatización de configuración continua (CCA) pueden considerarse una extensión de los marcos de IaC tradicionales. Aprovechan la IaC para cambiar, configurar y automatizar la infraestructura, y también brindan visibilidad, eficiencia y flexibilidad en la forma en que se administra la infraestructura. [3] Estos atributos adicionales brindan seguridad y cumplimiento a nivel empresarial.

Contenido de la comunidad

El contenido de la comunidad es un determinante clave de la calidad de una herramienta CCA de código abierto. Como afirma Gartner , el valor de las herramientas CCA "depende tanto del contenido y el soporte aportados por la comunidad de usuarios como de la madurez comercial y el rendimiento de las herramientas de automatización". [3] Los proveedores establecidos como Puppet y Chef han creado sus propias comunidades. Chef tiene Chef Community Repository y Puppet tiene PuppetForge . [12] Otros proveedores dependen de comunidades adyacentes y aprovechan otros marcos de IaC como PowerShell DSC. [10] Están surgiendo nuevos proveedores que no están impulsados ​​por el contenido, sino por modelos con la inteligencia en el producto para entregar contenido. Estos sistemas visuales orientados a objetos funcionan bien para los desarrolladores, pero son especialmente útiles para los componentes de operaciones y DevOps orientados a la producción que valoran los modelos frente a la creación de scripts para el contenido. A medida que el campo continúa desarrollándose y cambiando, el contenido basado en la comunidad será cada vez más importante para la forma en que se utilizan las herramientas de IaC, a menos que estén impulsadas por modelos y orientadas a objetos.

Las herramientas CCA notables incluyen:

Otras herramientas incluyen AWS CloudFormation , cdist , StackStorm , Juju y Step CI.

Relaciones

Relación con DevOps

IaC puede ser un atributo clave para habilitar las mejores prácticas en DevOps . Los desarrolladores se involucran más en la definición de la configuración y los equipos de operaciones se involucran antes en el proceso de desarrollo. [13] Las herramientas que utilizan IaC brindan visibilidad al estado y la configuración de los servidores y, en última instancia, brindan visibilidad a los usuarios dentro de la empresa, con el objetivo de unir a los equipos para maximizar sus esfuerzos. [14] La automatización en general tiene como objetivo eliminar la confusión y el aspecto propenso a errores de los procesos manuales y hacerlos más eficientes y productivos. Permitiendo que se creen mejores aplicaciones y software con flexibilidad, menos tiempo de inactividad y una forma general rentable para la empresa. IaC tiene como objetivo reducir la complejidad que mata la eficiencia de la configuración manual. La automatización y la colaboración se consideran puntos centrales en DevOps; las herramientas de automatización de infraestructura a menudo se incluyen como componentes de una cadena de herramientas de DevOps . [15]

Relación con la seguridad

El Informe de amenazas en la nube de 2020 publicado por Unit 42 (la unidad de inteligencia de amenazas del proveedor de ciberseguridad Palo Alto Networks ) identificó alrededor de 200.000 vulnerabilidades potenciales en la infraestructura como plantillas de código. [16]

Véase también

Referencias

  1. ^ Wittig, Andreas; Wittig, Michael (2016). Amazon Web Services en acción . Manning Press. pág. 93. ISBN 978-1-61729-288-0.
  2. ^ Bower, Joseph L.; Christensen, Clayton M. "Tecnologías disruptivas: cómo aprovechar la ola". Harvard Business Review .
  3. ^ abc Fletcher, Colin; Cosgrove, Terrence (26 de agosto de 2015). Perspectivas de innovación para herramientas de automatización de configuración continua. Gartner (informe).[ enlace muerto ]
  4. ^ Riley, Chris (12 de noviembre de 2015). "Version Your Infrastructure" (Versión de su infraestructura). DevOps.com .
  5. ^ Phillips, Andrew (14 de mayo de 2015). "Pasar de la automatización de la infraestructura a un verdadero DevOps". DevOps.com .
  6. ^ "Modelos declarativos e imperativos para la gestión de la configuración: ¿cuál es realmente mejor?". Scriptrock.com . Archivado desde el original el 31 de marzo de 2015. Consultado el 14 de diciembre de 2015 .
  7. ^ Loschwitz, Martin (14 de noviembre de 2014). "Elegir entre los principales gestores de configuración de código abierto". Admin Network & Security . Lawrence, KS, EE. UU.: Linux New Media USA LLC.
  8. ^ Venezia, Paul (21 de noviembre de 2013). «Puppet vs. Chef vs. Ansible vs. Salt». Network World. Archivado desde el original el 18 de julio de 2018. Consultado el 14 de diciembre de 2015 .
  9. ^ Tendencias del mercado de Garner: DevOps: no es un mercado, sino una filosofía centrada en herramientas que respalda una cadena de valor de entrega continua (informe). Gartner. 18 de febrero de 2015.
  10. ^ ab Chaganti, Ravikanth (5 de enero de 2016). "DevOps, Infraestructura como código y PowerShell DSC: Introducción". PowerShell Magazine . PowerShell Magazine . Consultado el 11 de enero de 2016 .
  11. ^ "Presentación de AWS CloudFormation".
  12. ^ Sturgeon, Phil (28 de octubre de 2012). "¿Títere o chef?". Archivado desde el original el 1 de febrero de 2016. Consultado el 29 de enero de 2016 .
  13. ^ Ramos, Martin (4 de noviembre de 2015). «Integración continua: infraestructura como código en DevOps». easydynamics.com . Archivado desde el original el 6 de febrero de 2016 . Consultado el 29 de enero de 2016 .
  14. ^ Infraestructura como código: alimentando la llama de una entrega más rápida de aplicaciones (informe). Forrester. Marzo de 2015.
  15. ^ Wurster, Laurie F.; Colville, Ronni J.; Height, Cameron; Tripathi, Somendra; Rastogi, Aditi. Análisis de tecnologías emergentes: DevOps es un cambio cultural, no una tecnología (informe). Gartner.
  16. ^ "Informe sobre amenazas en la nube muestra la necesidad de un sistema DevSecOps coherente". InformationWeek . 13 de febrero de 2020 . Consultado el 24 de febrero de 2020 .