{"id":7979,"date":"2022-04-19T09:46:26","date_gmt":"2022-04-19T07:46:26","guid":{"rendered":"https:\/\/geko.cloud\/?p=7979"},"modified":"2022-04-19T10:02:34","modified_gmt":"2022-04-19T08:02:34","slug":"consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1","status":"publish","type":"post","link":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/","title":{"rendered":"Consejos para sacar mayor provecho a CDK [Parte 1]"},"content":{"rendered":"<h2>Introducci\u00f3n<\/h2>\n<p style=\"text-align: left;\">Consejos pr\u00e1cticos para sacar mayor provecho a CDK.<br \/>\nEl nuevo framework de infraestructura como c\u00f3digo que AWS ha desarrollado, <strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/index.html\" target=\"_blank\" rel=\"noopener\">CDK<\/a><\/strong><span style=\"text-align: justify;\">, est\u00e1 despertando mucho inter\u00e9s en el mundo DevOps por sus muchas ventajas. En <strong>Geko Cloud<\/strong> ya estamos utilizando CDK y consideramos que es una alternativa muy interesante a Cloudformation o Terraform.\u00a0 <\/span><span style=\"text-align: justify;\">Para aquellos que quieren introducirse en el mundo DevOps o aquellas compa\u00f1\u00edas que quieren implantar un modelo DevOps, donde los desarrolladores puedan desplegar la infraestructura que usaran sus aplicaciones, CDK es la herramienta perfecta ya que, a diferencia de otras herramientas de IaC permite utilizar lenguajes de programaci\u00f3n conocidos por los desarrolladores reduciendo la curva de aprendizaje y facilitando su adopci\u00f3n.<\/span><\/p>\n<p style=\"text-align: left;\">Sin embargo, despu\u00e9s de haber utilizado CDK en producci\u00f3n, y de varias lecciones aprendidas, la adopci\u00f3n de una herramienta tan sofisticada como es CDK no es tan sencillo como pudiera parecer en un primer momento. Por esta raz\u00f3n, hemos creado este post con la intenci\u00f3n de explicar conceptos clave de CDK y a la vez compartir con vosotros consejos basados en nuestra experiencia para todos aquellos que os est\u00e9is planteando empezar a usar CDK o aquellos que ya lo est\u00e1is utilizando y os plante\u00e1is mejorar su uso.<\/p>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: left;\">Naming convention de Ids<\/h2>\n<p style=\"text-align: left;\">En CDK existen muchos tipos de<strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/v2\/guide\/identifiers.html#identifiers_paths\" target=\"_blank\" rel=\"noopener\"> identificadores<\/a><\/strong> y cada uno tiene un prop\u00f3sito. Nuestra primera recomendaci\u00f3n es que te informes sobre el funcionamiento de los<\/p>\n<p style=\"text-align: left;\">identificadores<span style=\"text-align: justify;\"> y la importancia que tienen a la hora de crear recursos en cloudformation. Los identificadores en CDK deben ser \u00fanicos dentro del contexto en el que son creados, lo cual tiene muchas y notables implicaciones.\u00a0<\/span><\/p>\n<p style=\"text-align: left;\">Por ejemplo, puede utilizarse el mismo ID para dos constructs que se encuentran en dos stacks diferentes. Sin embargo, si intentas usar el mismo ID para dos constructs en el mismo Stack la aplicaci\u00f3n devolver\u00e1 un error al ejecutar alg\u00fan comando de CDK como synth o deploy. Nuestro consejo aqu\u00ed consiste en centralizar de alguna forma la generaci\u00f3n de los identificadores, para que todos sigan la misma nomenclatura. Esto ayudar\u00e1 a no repetir identificadores y por otro lado facilitar\u00e1 la lectura de las templates de cloudformation creadas con CDK. Puedes utilizar una funci\u00f3n helper que, dado un conjunto de par\u00e1metros, devuelve el identificador que se utilizar\u00e1 en los constructs, tal y como se muestra a continuaci\u00f3n, aunque si\u00e9ntete libre de usar el m\u00e9todo que prefieras y con el que te sientas m\u00e1s c\u00f3modo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8040 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-1.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"676\" height=\"426\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-1.png 676w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-1-300x189.png 300w\" sizes=\"(max-width: 676px) 100vw, 676px\" \/><\/p>\n<p style=\"text-align: left;\">Otro consejo es que intentes simplificar el naming convention que definas para los identificadores tanto como sea posible, ya que los <strong><a href=\"https:\/\/docs.aws.amazon.com\/AWSCloudFormation\/latest\/UserGuide\/resources-section-structure.html#resources-section-structure-resource-fields\" target=\"_blank\" rel=\"noopener\"><span style=\"text-align: justify;\">identificadores l\u00f3gicos y f\u00edsicos<\/span><\/a><\/strong><span style=\"text-align: justify;\"> que CDK genera, suelen ser muy largos e incluyen c\u00f3digos hash que dificulta su lectura. Ten siempre presente que, una vez definido el naming convention para los identificadores de los diferentes recursos de tu aplicaci\u00f3n, no deber\u00edas cambiarlo al no ser que sea completa y absolutamente necesario. Una vez has desplegado un recurso con un identificador, si el identificador cambia, el recurso ser\u00e1 reemplazado por uno nuevo. Para que te pongas en contexto, supongamos que has creado una instancia RDS en producci\u00f3n y le has asignado un identificador. Si cambias el identificador de la instancia RDS en tu c\u00f3digo de CDK, la pr\u00f3xima vez que despliegues en producci\u00f3n la instancia RDS ser\u00e1 eliminada y sustituida por una nueva.\u00a0<\/span><\/p>\n<p style=\"text-align: left;\">En el siguiente snippet de c\u00f3digo de CDK se crea una instancia RDS:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8042 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-2.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"761\" height=\"484\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-2.png 761w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-2-300x191.png 300w\" sizes=\"(max-width: 761px) 100vw, 761px\" \/><\/p>\n<p style=\"text-align: left;\">Al desplegar este c\u00f3digo, la instancia RDS se crear\u00e1 autom\u00e1ticamente como stack de cloudformation:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8042 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-2.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"761\" height=\"484\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-2.png 761w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-2-300x191.png 300w\" sizes=\"(max-width: 761px) 100vw, 761px\" \/><\/p>\n<p style=\"text-align: left;\">&gt;Esta instancia ha sido creado con el identificador Pro-Geko-Cloud-RDS, los valores definidos para los atributos environment y project son los siguientes:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-8046\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-4-300x81.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"300\" height=\"81\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-4-300x81.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-4.png 362w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p style=\"text-align: left;\">El template de cloudformation que genera CDK es el siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8048 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-5.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"586\" height=\"404\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-5.png 586w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-5-300x207.png 300w\" sizes=\"(max-width: 586px) 100vw, 586px\" \/><\/p>\n<p style=\"text-align: left;\">El logical name de la instancia RDS es ProGekoCloudRDS y un identificador hash concatenado como sufijo. Ahora modificaremos el m\u00e9todo est\u00e1tico get_identifier para a\u00f1adir el atributo dpt, como se muestra a continuaci\u00f3n:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-8050\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-6-300x50.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"300\" height=\"50\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-6-300x50.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-6-768x127.png 768w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-6.png 775w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Tambien definiremos los siguientes valores:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8052 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-7.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"350\" height=\"115\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-7.png 350w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-7-300x99.png 300w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/p>\n<p style=\"text-align: left;\">Si ejecutamos un comando cdk diff podemos ver que hay cambios pendientes y que los cambios consisten en hacer un replace de la instancia RDS por una nueva instancia llamada ProGekoCloudsalesRDS.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8054 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-8.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"1239\" height=\"463\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-8.png 1239w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-8-300x112.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-8-1024x383.png 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-8-768x287.png 768w\" sizes=\"(max-width: 1239px) 100vw, 1239px\" \/><\/p>\n<p style=\"text-align: left;\">Como hemos visto, los identificadores son vitales para una aplicaci\u00f3n de CDK. Antes de empezar a generar c\u00f3digo fuente, define un naming convention y s\u00edguelo de manera estricta. Una forma de evitar cambios no deseados de identificadores consiste en ejecutar el comando diff de CDK en tu pipeline de deploy, como paso previo a desplegar tu infraestructura.<\/p>\n<p style=\"text-align: left;\">Por \u00faltimo, intenta no definir nombres para los recursos que provisiones en tu aplicaci\u00f3n, deja que sea CDK quien elija los nombres de los recursos. <b>Ten presente que hablo de nombres de recursos, no identificadores<\/b><span style=\"text-align: justify;\">. En cloudformation, cuando realizas cambios sobre un recurso es posible que el recurso sea <\/span><strong><a href=\"https:\/\/docs.aws.amazon.com\/AWSCloudFormation\/latest\/UserGuide\/using-cfn-updating-stacks-update-behaviors.html\" target=\"_blank\" rel=\"noopener\"><span style=\"text-align: justify;\">reemplazado<\/span><\/a><\/strong><span style=\"text-align: justify;\"> porque los cambios que deseas realizar no son compatibles con el update del recurso. En este tipo de situaciones, es habitual que el update falle porque definistes un nombre a un recurso que tiene que ser reemplazado.<\/span><\/p>\n<p style=\"text-align: left;\">Si permites que CDK gestione el nombre de los recursos, en caso de que realices alg\u00fan cambio que implica el replace de un recurso, CDK autom\u00e1ticamente reemplaza el recurso y le asignar\u00e1 un nuevo nombre. Si por el contrario, has definido el nombre del recurso, lo m\u00e1s probable es que el <strong><a href=\"https:\/\/aws.amazon.com\/es\/premiumsupport\/knowledge-center\/cloudformation-custom-name\/\" target=\"_blank\" rel=\"noopener\">update falle<\/a><\/strong>.<\/p>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: left;\">Tagging<\/h2>\n<p style=\"text-align: left;\">A\u00f1adir tags a los recursos en AWS es fundamental e indispensable. Las <strong><a href=\"https:\/\/aws.amazon.com\/blogs\/apn\/how-better-tagging-can-help-organizations-optimize-expenses-and-improve-roi\/#:~:text=AWS%20Tagging%20Use%20Cases&amp;text=Tagging%20helps%20AWS%20users%20effectively,being%20used%20for%20varied%20purposes.\" target=\"_blank\" rel=\"noopener\">ventajas de utilizar tags<\/a><\/strong><span style=\"text-align: justify;\"> son muchas y los inconvenientes nulos<\/span>. En el caso de CDK esta m\u00e1xima tambi\u00e9n se cumple y adem\u00e1s os aseguramos que a\u00f1adir tags en CDK es muy f\u00e1cil como se muestra en la imagen siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8056 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-9.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"733\" height=\"482\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-9.png 733w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-9-300x197.png 300w\" sizes=\"(max-width: 733px) 100vw, 733px\" \/><\/p>\n<p style=\"text-align: left;\">Respecto a que tags utilizar, depende de varios factores, sin embargo, el tag Name se hace indispensable, sobre todo porque como hemos visto en la secci\u00f3n anterior, los identificadores que CDK asigna a los recursos pueden llegar a ser ininteligibles. A\u00f1adir un tag Name todos los recursos facilita mucho identificar recursos f\u00e1cilmente. Tambi\u00e9n podr\u00edamos utilizar el tag custom Owner para indicar el departamento que gestiona o que al menos paga la factura de AWS para los recursos creados. El tag Project es un cl\u00e1sico, se suele utilizar para identificar qu\u00e9 recursos pertenecen a qu\u00e9 proyecto. En cualquier caso, est\u00e9s o no de acuerdo con estas recomendaciones, el principal consejo que os podemos dar es que definas una pol\u00edtica de tagging que est\u00e9 alineado con el compliance de tu compa\u00f1\u00eda o equipo de trabajo porque te facilitar\u00e1 mucho la gesti\u00f3n de tu infraestructura, ya sea para localizar recursos o para identificar costes.<\/p>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: left;\">Testing<\/h2>\n<p style=\"text-align: left;\">Hacer testing de tu aplicaci\u00f3n es siempre una best practice y un buen consejo a seguir. Nos ayuda a encontrar errores con mayor facilidad, entregar software de mayor calidad e incluso puede ayudarnos a desarrollar con mayor agilidad si utilizamos metodolog\u00edas de desarrollo como TDD. Para CDK existen dos tipos de <strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/v2\/guide\/testing.html\" target=\"_blank\" rel=\"noopener\">testing<\/a><\/strong> que veremos a continuaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8058 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-10.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"682\" height=\"372\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-10.png 682w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-10-300x164.png 300w\" sizes=\"(max-width: 682px) 100vw, 682px\" \/><\/p>\n<p style=\"text-align: left;\">Para implementar test en CDK necesitar\u00e1s importar el m\u00f3dulo <strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/api\/v2\/docs\/aws-cdk-lib.assertions-readme.html\" target=\"_blank\" rel=\"noopener\">assertions<\/a><\/strong>. Si utilizas Python puedes utilizar <strong><a href=\"https:\/\/docs.pytest.org\/en\/7.1.x\/\" target=\"_blank\" rel=\"noopener\"><span style=\"text-align: justify;\">Pytest<\/span><\/a><\/strong> para implementar tus tests.<\/p>\n<p style=\"text-align: left;\">Por otro lado est\u00e1n los snapshot tests. Estos test se utilizan cuando quieres refactorizar el c\u00f3digo de tu aplicaci\u00f3n CDK. El objetivo de estos tests es que a medida que haces modificaciones sobre tu c\u00f3digo fuente verificar que todo sigue igual y que no hay cambios que puedan generar un problema a la hora de desplegar en producci\u00f3n porque el template de cloudformation que genera tu codigo CDK es el mismo que la \u00faltima vez que lo ejecutaste. Para ejecutar test de tipo snapshot en Python tendr\u00e1s que instalar la librer\u00eda de python <strong><a href=\"https:\/\/github.com\/tophat\/syrupy\" target=\"_blank\" rel=\"noopener\"><span style=\"text-align: justify;\">Syrupy<\/span><\/a><\/strong><span style=\"text-align: justify;\">. Una vez instalada ya puedes empezar a crear tus test de tipo snapshot:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8061 size-full aligncenter\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-11.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"578\" height=\"252\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-11.png 578w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-11-300x131.png 300w\" sizes=\"(max-width: 578px) 100vw, 578px\" \/><\/p>\n<p style=\"text-align: left;\">Este test tiene dos par\u00e1metros, por una parte est\u00e1 el <strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/v2\/guide\/environments.html\" target=\"_blank\" rel=\"noopener\"><span style=\"text-align: justify;\">environment<\/span><\/a><\/strong><span style=\"text-align: justify;\"> de CDK y por otro lado el par\u00e1metro snapshot que representa el template de cloudformation que se utilizar\u00e1 como referencia para ejecutar los test de tipo snapshot. Este par\u00e1metro lo gestiona la librer\u00eda Syrupy, tu solo tienes que definirlo. El test ejecuta el stack donde se encuentra mi instancia RDS, obtiene el template de cloudformation y lo compara con el snapshot. Si el template no es igual que el snapshot el test falla. Al ejecutar un test del tipo snapshot por primera vez hay que definir el flag \u2013snapshot-update, as\u00ed:<\/span><\/p>\n<p style=\"text-align: left;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8075\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-1024x70.jpg\" alt=\"\" width=\"1000\" height=\"69\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-1024x70.jpg 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-300x21.jpg 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-768x53.jpg 768w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura.jpg 1264w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p style=\"text-align: left;\">Al ejecutar este comando, Syrupy crear\u00e1 una folder llamada __snapshots__ en tu folder de tests.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8063 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-12.png\" alt=\"CDK geko consultor\u00eda cloud\" width=\"385\" height=\"355\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-12.png 385w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-12-300x277.png 300w\" sizes=\"(max-width: 385px) 100vw, 385px\" \/><\/p>\n<p style=\"text-align: left;\">Dentro de la folder se guardar\u00e1 el template de cloudformation generado por el stack CdkGekoStack. Las siguientes veces que quieras ejecutar el test de tipo snapshot hay que ejecutar el comando python -m pytest sin el flag \u2013snapshot-update. A partir de entonces, si el stack CdkGekoStack devuelve una template que no es igual que la template que Syrupy ha guardado en la folder __snapshot__ el test fallar\u00e1.<\/p>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: left;\">Resumen<\/h2>\n<p style=\"text-align: left;\">En este post hemos hablado de naming convention, tagging y testing. Conceptos tan b\u00e1sicos como necesarios. Os prometemos que en el <strong>pr\u00f3ximo post: Consejos pr\u00e1cticos para sacar mayor provecho a CDK [Parte 2],\u00a0 hablaremos de conceptos m\u00e1s complejos como gesti\u00f3n de propiedades y constructs<\/strong>.<\/p>\n<p style=\"text-align: left;\">\u00a1Estar muy atentos! Hasta entonces nos despedimos de vosotros.<\/p>\n<p style=\"text-align: left;\">Para m\u00e1s informaci\u00f3n no dud\u00e9is en <strong><a href=\"https:\/\/geko.cloud\/es\/contacto\/\" target=\"_blank\" rel=\"noopener\">contactar con nosotros.<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Consejos pr\u00e1cticos para sacar mayor provecho a CDK. El nuevo framework de infraestructura como c\u00f3digo que AWS ha desarrollado, CDK, est\u00e1 despertando mucho inter\u00e9s en el mundo DevOps por sus muchas ventajas. En Geko Cloud ya estamos utilizando CDK y consideramos que es una alternativa muy interesante a Cloudformation o Terraform.\u00a0 Para aquellos que [&hellip;]<\/p>\n","protected":false},"author":24,"featured_media":8002,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[18],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Consejos para sacar mayor provecho a CDK [Parte 1] - Geko Cloud<\/title>\n<meta name=\"description\" content=\"Consejos para sacar mayor provecho a CDK. En Geko ya utilizamos CDK y consideramos que es una buena alternativa a Cloudformation o Terraform.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Consejos para sacar mayor provecho a CDK [Parte 1] - Geko Cloud\" \/>\n<meta property=\"og:description\" content=\"Consejos para sacar mayor provecho a CDK. En Geko ya utilizamos CDK y consideramos que es una buena alternativa a Cloudformation o Terraform.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Geko Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-19T07:46:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-19T08:02:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1640\" \/>\n\t<meta property=\"og:image:height\" content=\"924\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Javier\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geko_cloud\" \/>\n<meta name=\"twitter:site\" content=\"@geko_cloud\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/\"},\"author\":{\"name\":\"Javier\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/7c019f6b932aa9a572eb16e0f57fd1b6\"},\"headline\":\"Consejos para sacar mayor provecho a CDK [Parte 1]\",\"datePublished\":\"2022-04-19T07:46:26+00:00\",\"dateModified\":\"2022-04-19T08:02:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/\"},\"wordCount\":1600,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\",\"articleSection\":[\"Labs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/\",\"url\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/\",\"name\":\"Consejos para sacar mayor provecho a CDK [Parte 1] - Geko Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\",\"datePublished\":\"2022-04-19T07:46:26+00:00\",\"dateModified\":\"2022-04-19T08:02:34+00:00\",\"description\":\"Consejos para sacar mayor provecho a CDK. En Geko ya utilizamos CDK y consideramos que es una buena alternativa a Cloudformation o Terraform.\",\"breadcrumb\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#primaryimage\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\",\"width\":1640,\"height\":924,\"caption\":\"Consejos pr\u00e1cticos para sacar mayor provecho a CDK\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/geko.cloud\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Consejos para sacar mayor provecho a CDK [Parte 1]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/geko.cloud\/es\/#website\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"name\":\"Geko Cloud\",\"description\":\"Servicios de consultor\u00eda cloud y devops\",\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/geko.cloud\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/geko.cloud\/es\/#organization\",\"name\":\"Geko Cloud\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"width\":1650,\"height\":809,\"caption\":\"Geko Cloud\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/geko_cloud\",\"https:\/\/www.instagram.com\/gekocloud\/\",\"https:\/\/www.linkedin.com\/company\/gekocloud\",\"https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/7c019f6b932aa9a572eb16e0f57fd1b6\",\"name\":\"Javier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/25d931800703a3703848377afd700a83?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/25d931800703a3703848377afd700a83?s=96&d=mm&r=g\",\"caption\":\"Javier\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Consejos para sacar mayor provecho a CDK [Parte 1] - Geko Cloud","description":"Consejos para sacar mayor provecho a CDK. En Geko ya utilizamos CDK y consideramos que es una buena alternativa a Cloudformation o Terraform.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/","og_locale":"es_ES","og_type":"article","og_title":"Consejos para sacar mayor provecho a CDK [Parte 1] - Geko Cloud","og_description":"Consejos para sacar mayor provecho a CDK. En Geko ya utilizamos CDK y consideramos que es una buena alternativa a Cloudformation o Terraform.","og_url":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/","og_site_name":"Geko Cloud","article_published_time":"2022-04-19T07:46:26+00:00","article_modified_time":"2022-04-19T08:02:34+00:00","og_image":[{"width":1640,"height":924,"url":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","type":"image\/png"}],"author":"Javier","twitter_card":"summary_large_image","twitter_creator":"@geko_cloud","twitter_site":"@geko_cloud","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#article","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/"},"author":{"name":"Javier","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/7c019f6b932aa9a572eb16e0f57fd1b6"},"headline":"Consejos para sacar mayor provecho a CDK [Parte 1]","datePublished":"2022-04-19T07:46:26+00:00","dateModified":"2022-04-19T08:02:34+00:00","mainEntityOfPage":{"@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/"},"wordCount":1600,"commentCount":0,"publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"image":{"@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","articleSection":["Labs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/","url":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/","name":"Consejos para sacar mayor provecho a CDK [Parte 1] - Geko Cloud","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#primaryimage"},"image":{"@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","datePublished":"2022-04-19T07:46:26+00:00","dateModified":"2022-04-19T08:02:34+00:00","description":"Consejos para sacar mayor provecho a CDK. En Geko ya utilizamos CDK y consideramos que es una buena alternativa a Cloudformation o Terraform.","breadcrumb":{"@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#primaryimage","url":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","width":1640,"height":924,"caption":"Consejos pr\u00e1cticos para sacar mayor provecho a CDK"},{"@type":"BreadcrumbList","@id":"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/geko.cloud\/es\/"},{"@type":"ListItem","position":2,"name":"Consejos para sacar mayor provecho a CDK [Parte 1]"}]},{"@type":"WebSite","@id":"https:\/\/geko.cloud\/es\/#website","url":"https:\/\/geko.cloud\/es\/","name":"Geko Cloud","description":"Servicios de consultor\u00eda cloud y devops","publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/geko.cloud\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/geko.cloud\/es\/#organization","name":"Geko Cloud","url":"https:\/\/geko.cloud\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/","url":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","width":1650,"height":809,"caption":"Geko Cloud"},"image":{"@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/geko_cloud","https:\/\/www.instagram.com\/gekocloud\/","https:\/\/www.linkedin.com\/company\/gekocloud","https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ"]},{"@type":"Person","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/7c019f6b932aa9a572eb16e0f57fd1b6","name":"Javier","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/25d931800703a3703848377afd700a83?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/25d931800703a3703848377afd700a83?s=96&d=mm&r=g","caption":"Javier"}}]}},"_links":{"self":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/7979"}],"collection":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/comments?post=7979"}],"version-history":[{"count":25,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/7979\/revisions"}],"predecessor-version":[{"id":8086,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/7979\/revisions\/8086"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media\/8002"}],"wp:attachment":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media?parent=7979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/categories?post=7979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/tags?post=7979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}