SEGURIDAD WEB

Descripción de las herramientas de IaC: AWS CDK y Terraform

AWS CDK y Terraform: ¿no está seguro de cuál elegir? Este artículo te ayudará a tomar una decisión informada.

La computación en la nube ha revolucionado el mundo de la información y la tecnología. Todo, desde la forma en que implementamos y mantenemos las aplicaciones hasta las prácticas de desarrollo, está muy influenciado por la computación en la nube. Todas las aplicaciones nuevas se desarrollan para ser nativas de la nube y compatibles con los servicios en la nube.

La computación en la nube nos ayuda a desarrollar arquitecturas altamente disponibles, escalables y eficientes, lo que hace que los servicios en la nube sean cada vez más demandados. A medida que prospera la computación en la nube, la infraestructura debe mantenerse como código. El mantenimiento manual de los recursos de la nube a través de la consola puede ser una tarea compleja que puede ser difícil de seguir.

Infraestructura como Código, o IAC o IAAC, resuelve este problema. Al usar IAC, podemos definir nuestros recursos como código y usar este código para proporcionar servicios en la nube. El uso de la infraestructura como código permite que varios desarrolladores colaboren en la infraestructura y realicen un seguimiento de los cambios realizados por los desarrolladores.

Infraestructura como código en AWS

AWS es el proveedor de nube más grande y más utilizado del mundo. Tiene su propia herramienta IAC AWS CloudFormation o AWS CDK y también permite que herramientas IAC de terceros como Terraform aprovisionen recursos. Al elegir una herramienta IAC para AWS, la herramienta de terceros Terraform fue un fuerte competidor para AWS Managed Tools, AWS CloudFormation y AWS CDK.

Con tantas opciones y capacidades proporcionadas por cada una de estas herramientas, elegir la herramienta IAC correcta puede ser un desafío. En este artículo, analizaremos las diferencias entre AWS CDK y Terraform. AWS CDK usa Cloudformation internamente, por lo que para obtener una visión más detallada de Cloudformation y Terraform, consulte el artículo relacionado Comprensión de las herramientas de IAC: CloudFormation y Terraform.

terreno

Terraform es una herramienta de infraestructura como código de código abierto desarrollada originalmente por Hashicorp. Es una herramienta altamente precisa y madura que admite no solo AWS, sino también otros proveedores de la nube. Terraform es compatible con todos los servicios de AWS y la comunidad de desarrollo puede aprender rápidamente sobre las nuevas funciones que AWS agrega a sus servicios. Nos permite escribir código en Hashicorp Development Language (HCL). HCL es un lenguaje similar a JSON para definir recursos de infraestructura.

Artículo Recomendado:  Revise Astra Pentest - Escaneo de vulnerabilidad simple y continuo y cumplimiento

CDK de AWS

AWS CDK es un contenedor para AWS CloudFormation. Para comprender cómo funciona AWS CDK, debe tener algún conocimiento de AWS CloudFormation. AWS CloudFormation es una herramienta alojada en AWS que nos permite definir la infraestructura de AWS en formato YML o JSON. Aunque es fácil leer JSON y YML, en realidad no son lenguajes de programación. No hay soporte nativo para bucles y funciones, lo que dificulta cada vez más el mantenimiento de grandes infraestructuras. Ahí es donde entra en juego el CDK de AWS.

AWS CDK es un contenedor de AWS CloudFromation que le permite aprovisionar su infraestructura utilizando lenguajes de programación familiares como JAVA o Python. Esto facilita la escritura y el mantenimiento del código.

Terraform y AWS CDK: diferencias

#1. Idioma y facilidad de uso

El idioma y la facilidad de uso son fundamentales para comprender la diferencia entre AWS CDK y Terraform.

Hablemos primero de Terraform. Terraform utiliza un lenguaje similar a JSON, HCL o el lenguaje de configuración de HashiCorp para definir recursos y otros datos. Es muy simple y la documentación es fácil de entender y seguir, incluso para principiantes. Veamos el código para crear el depósito S3.

resource "aws_s3_bucket" "my_s3_bucket" {
  bucket = "my-tf-bucket"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }
}

El código es bastante simple de leer, puedes leerlo en Documentación del terreno.

Como se mencionó anteriormente, AWS CDK es un contenedor de CloudFormation que nos permite definir nuestros recursos en un lenguaje de programación. Veamos el código de AWS CDK que crea el depósito S3.

import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';

export class BucketStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    new s3.Bucket(this, 'MyFirstBucket', {
      bucketName: 'my-first-bucket',
    });
 }
}

El código de Terraform parece más limpio que el de CDK, pero tanto el código de Terraform como el de CDK son muy simples. Si planea usar IAC para proyectos pequeños, Terraform y CDK son buenas opciones en términos de lenguaje y facilidad de uso.

Sin embargo, Terraform tiene un inconveniente cuando se trata de elegir la herramienta IAC adecuada para un proyecto grande con muchos desarrolladores. Tan simple como es Terraform, es un lenguaje nuevo y necesita capacitar a sus desarrolladores en un lenguaje completamente nuevo diferente de los otros lenguajes de programación que está usando. Más importante aún, la manipulación de datos en Terraform no es tan sencilla como en otros lenguajes de programación. Por ejemplo, iterar sobre listas y objetos y convertir valores no es tan simple, especialmente para principiantes.

Personalmente, prefiero AWS CDK a Terraform si la facilidad de uso es una preocupación. Cuando trabajo con Terraform, a veces tengo que utilizar soluciones alternativas o secuencias de comandos complejas para obtener los resultados que deseo. Nuestro control sobre nuestros datos y la capacidad de manipular fácilmente los datos en el lenguaje de AWS CDK es una gran victoria para AWS CDK.

#2. Alcance

Terraform es una herramienta IAC de múltiples nubes, lo que significa que puede usar Terraform no solo con AWS, sino también con otros proveedores de nube como Azure o GCP. Terraform es una gran herramienta para crear implementaciones de múltiples nubes y proporcionar su aplicación con cualquier cantidad de proveedores de nube.

Ocasionalmente, las plataformas globales ampliamente utilizadas fallan debido a problemas con los servicios del proveedor de la nube. Hoy en día, tener múltiples proveedores de nube para sus aplicaciones es una sabia decisión.

AWS CDK es un producto de AWS para IAC. Aunque el CDK es poderoso y maduro, está limitado a la nube de AWS.

Al considerar el alcance de las herramientas IAC, Terraform es el claro ganador de los dos. Tiene sentido que sus desarrolladores utilicen una sola herramienta para todas las plataformas en la nube.

#3. Rendimiento

El rendimiento no suele ser el criterio más importante a la hora de elegir la herramienta IAC adecuada, pero puede ser importante en proyectos grandes. Terraform implementa recursos mediante SDK de AWS, y el código de CDK se convierte primero en plantillas de CloudFormation y luego se aplica.

Terraform se ejecutará un poco más rápido que el CDK de AWS, especialmente porque el CDK tarda en convertir el código en plantillas de CloudFormation.

#4. modular

Tanto Terraform como AWS CDK se pueden utilizar para crear módulos. Terraform tiene soporte nativo para módulos. Puede crear sus propios módulos y alojarlos en un registro de módulos privado para su uso dentro de su organización. Terraform también tiene un registro de módulos públicos para hospedar y usar módulos públicos.

En AWS CDK, puede crear funciones y clases reutilizables y compartir este código en toda su organización para lograr los mismos resultados. Esta es una gran ventaja de AWS CDK como otras herramientas de AWS IAC: CloudFormation no le permite crear y reutilizar código como módulos. Puede lograr este requisito utilizando pilas anidadas en CloudFormation, pero usar AWS CDK es una alternativa más adecuada.

Con todo, ambas herramientas son similares en este sentido.

#5. Control y Gobernanza

En última instancia, todo el acceso a la consola de AWS está controlado por el servicio de administración de identidades de AWS, IAM. Puede utilizar políticas de IAM con AWS CDK y Terraform para permitir y denegar determinadas acciones. IAM le permite tener un control detallado sobre lo que se puede hacer con su cuenta.

Además de usar IAM para controlar el acceso a los recursos de la cuenta, Terraform proporciona una política como marco de código, centinelaSentinel le permite escribir políticas detalladas para controlar adecuadamente las acciones de los usuarios a través de Terraform.

En conclusión

Dado que AWS CDK usa CloudFormation internamente, le recomiendo que lea el artículo CloudFormation vs Terraform para comprender mejor las diferencias entre AWS CDK y Terraform.

En general, tanto AWS CDK como Terraform son herramientas maduras y poderosas. Terraform tiene un ligero inconveniente en lo que respecta a la manipulación de datos. Sin embargo, en mi experiencia, usar soluciones alternativas y realizar transformaciones de datos se vuelve más fácil una vez que te familiarizas con la escritura de Terraform. Terraform es una opción obvia para las operaciones de múltiples nubes; sin embargo, si desea utilizar AWS como su proveedor de nube, AWS CDK es una excelente opción.

Artículo Recomendado:  ¿Qué es editar? Los 8 mejores programas de edición para ocultar datos confidenciales

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *