Programación en lugar de composición: infraestructura como código TypeScript

La infraestructura como código (IaC) es una mejor práctica común donde el código, no los procesos manuales, administra y proporciona la infraestructura. Para ello se utilizan herramientas conocidas como AWS CloudFormation o Terraform. Casi todas las herramientas tienen una cosa en común: utilizan un lenguaje de configuración como YAML para describir la infraestructura. Esto implica algunos desafíos, porque el soporte IDE incompleto y las plantillas extensas reducen la claridad y la productividad. En los últimos años, un enfoque alternativo se ha vuelto popular. Una nueva generación de herramientas IaC permite describir la infraestructura en lenguajes de programación universales. Un ejemplo de trabajo proporciona un representante bien conocido: el kit de desarrollo de la nube, o CDK para abreviar.

CDK es un marco de código abierto para definir la infraestructura utilizando lenguajes de programación populares como Python, Java, Go, JavaScript y TypeScript. El enfoque a continuación es usar el CDK con TypeScript. El lenguaje de programación lanzado en 2012 es una completa suite de JavaScript y destaca sobre todo por su escritura consistente.

Al usar AWS, el CDK convierte el código en una meta descripción en AWS CloudFormation, que luego crea recursos (infraestructura) en la nube. El CDK también está disponible para Kubernetes y Terraform (Figura 1).

(Foto: Servicios web de Amazon)

La descripción de la infraestructura en el código del programa permite a los desarrolladores de TypeScript trabajar en su entorno de desarrollo familiar y acceder a funciones útiles como autocompletar y documentación en línea. El CDK también introduce abstracciones adicionales, llamadas estructuras, para configurar la infraestructura.

Ahora es el momento de utilizar el kit de desarrollo en la nube para diseñar su infraestructura en AWS. Para esto, es necesario escribir la aplicación CDK en el lenguaje de programación requerido, por ejemplo, TypeScript. Una aplicación CDK puede contener varias pilas, es decir, grupos de infraestructura. Dentro de la pila, el desarrollador crea un conjunto de clases que representan la infraestructura física, como una máquina virtual que ejecuta Amazon EC2 o un almacén de objetos como Amazon S3. Estas clases se denominan estructuras (ver Figura 1). Puede configurar la infraestructura con configuraciones predeterminadas razonables y activar configuraciones típicas llamando a una función. Esto acelera todo el proceso de identificación de la infraestructura y facilita el seguimiento de las mejores prácticas. Las construcciones pueden variar en complejidad y contener componentes de infraestructura individuales o incluso estructuras completas.

Los desarrolladores escriben la aplicación CDK en el lenguaje de programación requerido.  Luego, la CLI de CDK lo traduce a un modelo para una herramienta de IaC, en este caso, CloudFormation para AWS (Figura 2).  Servicios web de Amazon

Los desarrolladores escriben la aplicación CDK en el lenguaje de programación requerido.  Luego, la CLI de CDK lo traduce a un modelo para una herramienta de IaC, en este caso, CloudFormation para AWS (Figura 2).  Servicios web de Amazon

Los desarrolladores escriben la aplicación CDK en el lenguaje de programación requerido. Luego, la CLI de CDK lo traduce a una plantilla para una herramienta de IaC, en este caso, CloudFormation para AWS (Figura 2).

(Foto: Servicios web de Amazon)

Luego, la CLI de CDK se usa para traducir el código de la aplicación a una plantilla de CloudFormation. AWS CloudFormation es un servicio para declarar e implementar infraestructura en AWS. La CLI de CDK envía la plantilla a CloudFormation para construir la infraestructura física (consulte la Figura 2). Lo interesante de este proceso es que el CDK se basa en herramientas IaC existentes.

El kit de desarrollo de la nube es de código abierto y está impulsado en gran medida por la comunidad abierta. Hoy en día, el CDK existe en diferentes variantes, cada una de las cuales puede programar diferentes nubes o plataformas. Al principio, AWS tenía eso Lanzado como AWS CDK. Como su nombre lo indica, el enfoque aquí está en la infraestructura de modelado y el uso de servicios en la nube de AWS. Los componentes centrales del CDK han sido reutilizados por otros proyectos de código abierto, Acerca de las aplicaciones de Kubernetes (cdk8s) Y el Recursos con Terraform (cdktf) Para poder configurarlo con el mismo modelo de programación. Por lo tanto, el ecosistema de CDK cubre una gama muy amplia de plataformas. Al igual que con el CDK de AWS, la CLI asociada crea plantillas a partir del código de programa escrito. Estas plantillas luego se pueden implementar utilizando las funciones nativas de las respectivas herramientas o plataformas. cdk8s sintetiza archivos YAML que la herramienta de línea de comandos kubectl de Kubernetes puede leer y usar directamente. cdktf compila plantillas de Terraform en formato JSON.

Un ejemplo de trabajo muestra que el CDK es más que traducir el código del programa en plantillas para CloudFormation, Kubernetes o Terraform. Muestra cómo las arquitecturas pueden actuar como abstracciones para construir arquitecturas con configuraciones estándar razonables con solo unas pocas líneas de código de programa.

La arquitectura de ejemplo de una aplicación web de alta disponibilidad consta de un Application Load Balancer (ALB) y un Auto Scaling Group (ASG) (Fig. 3).  Servicios web de Amazon

La arquitectura de ejemplo de una aplicación web de alta disponibilidad consta de un Application Load Balancer (ALB) y un Auto Scaling Group (ASG) (Fig. 3).  Servicios web de Amazon

La arquitectura de ejemplo de una aplicación web de alta disponibilidad consta de Application Load Balancer (ALB) y Auto Scaling Group (ASG) (Fig. 3).

(Foto: Servicios web de Amazon)

La estructura de ejemplo consta de un equilibrador de carga de aplicaciones al que se puede acceder a través de Internet. Analiza las solicitudes HTTP a la suite de escalado automático de Amazon EC2. Definir esta arquitectura con algunas mejores prácticas en mente se traduce en más de 300 líneas de YAML cuando se usa CloudFormation. Surge la pregunta de por qué una estructura simple en realidad requiere tantas líneas de código. La respuesta radica en el hecho de que el gráfico que se muestra en la Figura 3 es una vista simplificada que omite muchos objetos y configuraciones adicionales que deben identificarse (consulte la Figura 4).

Lista de objetos y configuraciones adicionales que se crearán o realizarán para Application Load Balancer (ALB), Virtual Private Network (VPC), Auto Scaling Group (ASG) (Figura 4), Amazon Web Services

Lista de objetos y configuraciones adicionales que se crearán o realizarán para Application Load Balancer (ALB), Virtual Private Network (VPC), Auto Scaling Group (ASG) (Figura 4), Amazon Web Services

Lista de objetos y configuraciones adicionales que se crearán o realizarán para Application Load Balancer (ALB), Virtual Private Network (VPC) y Auto Scaling Group (ASG) (Fig. 4)

(Foto: Servicios web de Amazon)

Por otro lado, se debe configurar Amazon Virtual Private Cloud (VPC), el entorno de red privada. Esto requiere varias decisiones: ¿Qué rango de direcciones IP debo usar? ¿Cuántas subredes debe haber? ¿En cuántas zonas de disponibilidad, es decir, centros de datos separados dentro de una región de AWS, se crean subredes? ¿Hay subredes públicas a las que se puede acceder desde Internet y subredes privadas a las que no se puede acceder? Hay respuestas a todas estas preguntas en forma de mejores prácticas que se conocen o deben investigarse primero. Pero esto no es todo: por otro lado, es necesario componer y conectar los componentes individuales entre sí. Las tablas de enrutamiento son necesarias para la comunicación entre subredes y con Internet. Dependiendo de si la subred es pública o privada, las tablas de enrutamiento contienen una ruta a Internet oa una puerta de enlace de traducción de direcciones de red (NAT). Una puerta de enlace NAT también necesita una IP elástica, es decir, una dirección IP pública a la que represente los hosts privados en Internet.

También se deben crear objetos y configuraciones adicionales para el Balanceador de carga de aplicaciones y el grupo de Auto-Scaling. Un aspecto son los grupos de seguridad, que actúan como cortafuegos virtuales y tienen reglas correspondientes para el tráfico de datos entrante y saliente. La versatilidad de las opciones de configuración es la razón por la que una estructura aparentemente simple se convierte en una plantilla de CloudFormation de más de 300 líneas.

a la página de inicio

READ  Gigante de la carne JBS atacado: piratas informáticos extorsionan a millones para pedir un rescate

Deja una respuesta

Tu dirección de correo electrónico no será publicada.