Crear recursos con CDK es mucho mejor que CloudFormation. Permíteme explicarte tres puntos principales. El primero es que CloudFormation es complicado. Si vas a crear muchos recursos, debido a su enfoque súper explícito, incluso CloudFormation se convertirá en un archivo YAML o JSON muy extenso. Depende de tus necesidades, pero será un archivo pesado y no tan agradable de trabajar. Además, si vas a crear relaciones en tu CloudFormation, se volverá un caos, ya que se vuelve confuso, propenso a errores y difícil de entender para aquellos que no lo conocen. CDK resuelve todos estos problemas utilizando clases y variables, al igual que cualquier otro lenguaje de programación, para crear los recursos. Otro punto importante es la forma de trabajar con múltiples regiones en CloudFormation. Como ya sabes, CloudFormation no admite implementaciones multi-regionales, por lo que si deseas desplegar tu stack de CloudFormation en varias regiones, necesitarás utilizar stack set, una especie de parche que AWS creó para desplegar un stack de CloudFormation en múltiples regiones. Con CDK, este problema se resuelve fácilmente, ya que CDK admite el despliegue de múltiples stacks desde el código. Puedes crear tantos stacks como desees dentro de tu código y simplemente desplegarlos uno por uno en cada región que desees.
Además, CDK es básicamente la experiencia nativa de AWS, lo que significa que no solo está 100% orientado a AWS, sino que es la única forma de escribir código con CDK. No es compatible con otros proveedores, es un servicio exclusivo de AWS. Además, como ya mencioné, CDK admite múltiples lenguajes. El más común es TypeScript, pero también puedes utilizar JavaScript y muchos otros lenguajes. Esto es increíble, ya que puedes tener un repositorio donde colocar tus funciones de programación existentes y, al mismo tiempo, tu infraestructura como código utilizando CDK. Por ejemplo, si deseas desplegar una instancia con cierto código, puedes definir la instancia en el mismo repositorio, lo cual es una forma increíble de trabajar con la infraestructura como código.
Entonces, ¿cómo funciona CDK? CDK convierte el código en stacks de formación en la nube, lo que significa que AWS creó CDK sobre el antiguo mecanismo de CloudFormation. Puedes escribirlo en el lenguaje que desees, como ya hemos descrito, y puedes crear constructos, que son la creación de recursos como un bucket de S3 o una instancia, por ejemplo. Después de escribir estos recursos, puedes utilizar el comando CDK synth, que es básicamente una simulación de lo que ya has escrito, y generará automáticamente la plantilla de CloudFormation que describe exactamente los recursos que has creado en el lenguaje de programación que hayas utilizado. Luego, al ejecutar CDK deploy, se desplegarán los stacks creando los stacks de CloudFormation con la plantilla generada, y se crearán los recursos en la región o regiones especificadas de AWS.
Al desplegar, se crearán dos artefactos. Uno es un archivo en un bucket de S3 que guarda el estado del código de CDK. Guarda los recursos que se crearon, los cambios realizados, y puedes rastrearlos y ver el estado del stack recientemente desplegado. Además, se creará el stack de CloudFormation en sí, que crea los recursos en tu nube.
Entonces, ¿quién debería utilizar CDK y cuándo? Básicamente, cualquier persona que utilice AWS debería utilizar CDK, ya que es la forma 100% orientada a AWS de crear infraestructura como código. Es especialmente útil para usuarios de CloudFormation que deseen migrar sus stacks a CDK. El proceso de migración es bastante sencillo y lo veremos en el ejemplo siguiente. También es beneficioso para equipos de DevOps, equipos de SRE y desarrolladores que deseen un enfoque más programático para la infraestructura como código.
¿Cuándo? Diría que en cualquier momento, ya que si ya estás utilizando infraestructura como código, siempre es un buen momento para comenzar a trabajar con una herramienta que está oficialmente respaldada por AWS.
Comments