<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Software Engineering & AI]]></title><description><![CDATA[Ingeniería de software, arquitectura cloud y desarrollo con IA. Insights prácticos desde el liderazgo técnico.]]></description><link>https://www.jesushenriquez.com</link><image><url>https://substackcdn.com/image/fetch/$s_!YEoH!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c751b1-cba8-4d2d-8a72-01e505d258fe_1280x1280.png</url><title>Software Engineering &amp; AI</title><link>https://www.jesushenriquez.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 08 May 2026 12:00:57 GMT</lastBuildDate><atom:link href="https://www.jesushenriquez.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jesus Henriquez]]></copyright><language><![CDATA[es]]></language><webMaster><![CDATA[jesushenriquez@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jesushenriquez@substack.com]]></itunes:email><itunes:name><![CDATA[Jesus Henriquez]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jesus Henriquez]]></itunes:author><googleplay:owner><![CDATA[jesushenriquez@substack.com]]></googleplay:owner><googleplay:email><![CDATA[jesushenriquez@substack.com]]></googleplay:email><googleplay:author><![CDATA[Jesus Henriquez]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[C4 Model: Un modelo para documentar arquitecturas de software]]></title><description><![CDATA[Una forma sencilla, util y eficiente de plasmar tus proyectos.]]></description><link>https://www.jesushenriquez.com/p/c4-model-un-modelo-para-documentar</link><guid isPermaLink="false">https://www.jesushenriquez.com/p/c4-model-un-modelo-para-documentar</guid><dc:creator><![CDATA[Jesus Henriquez]]></dc:creator><pubDate>Wed, 03 May 2023 03:20:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4L0E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4L0E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4L0E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4L0E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4L0E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4L0E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4L0E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C4 Model: Un modelo para documentar arquitecturas de software&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C4 Model: Un modelo para documentar arquitecturas de software" title="C4 Model: Un modelo para documentar arquitecturas de software" srcset="https://substackcdn.com/image/fetch/$s_!4L0E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4L0E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4L0E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4L0E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ecd298b-7ef8-4283-bd1a-3ba9781f3a31_1600x840.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hace un par de a&#241;os recuerdo que mi manager en ese momento, me cont&#243; sobre un enfoque para dise&#241;ar y visualizar arquitectura de software en diferentes niveles, estuvimos hablando de <strong><a href="https://c4model.com/">C4 Model</a></strong> y realmente me sorprendi&#243; la facilidad con la que puedes dise&#241;ar una arquitectura en diferentes vistas/niveles. Lo interesante de todo esto es que el output de C4 son vistas de arquitectura que visualmente son sencillas y a la vez muestran mucha informaci&#243;n relevante para tus equipos, esto hace que sea extremadamente amigable y lo suficientemente &#250;til para utilizarlo entre los equipos de ingenier&#237;a.</p><p>C4 se basa en los mapas cartogr&#225;ficos donde partes de una vista muy general como lo puede ser la vista de un continente y luego puedes ir haciendo zoom para ver un pa&#237;s, posteriormente puedes seguir haciendo zoom y ver una ciudad en concreto, hasta un pueblo en particular. De la misma forma C4 busca implementar esto en los sistemas de informaci&#243;n, esto lo hace a trav&#233;s de diferentes niveles.</p><h1>Tipos y niveles</h1><p>C4 cuenta con varios niveles principales a trav&#233;s de los cuales podemos ir profundizando, estos niveles son los siguientes:</p><ul><li><p>Nivel 1 - Diagrama de Contexto.</p></li><li><p>Nivel 2 - Diagrama de Contenedores.</p></li><li><p>Nivel 3 - Diagrama de Componentes.</p></li><li><p>Nivel 4 - Diagramas UML a nivel de codigo, por ejemplo un diagrama de clases.</p></li></ul><p>En la siguiente imagen puedes visualizar exactamente en que consiste la navegaci&#243;n que C4 propone:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uhbM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uhbM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!uhbM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!uhbM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!uhbM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uhbM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;rewrg&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="rewrg" title="rewrg" srcset="https://substackcdn.com/image/fetch/$s_!uhbM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!uhbM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!uhbM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!uhbM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13915e0f-04cf-429c-9d43-9167da7560c2_1920x1080.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Estos niveles nacieron de abstracciones que se utilizaron para crear un lenguaje ubicuo y que se utiliz&#243; para crear la estructura est&#225;tica de un sistema de software, es as&#237; como naci&#243; C4. Entonces, es aqu&#237; donde podemos decir que un sistema de software tiene uno o m&#225;s <strong>contenedores</strong>, estos contenedores a su vez est&#225;n formados por uno o m&#225;s <strong>componentes</strong> y as&#237; mismo estos componentes est&#225;n formados por diferentes <strong>elementos de c&#243;digo</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cNO6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cNO6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!cNO6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!cNO6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!cNO6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cNO6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!cNO6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!cNO6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!cNO6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!cNO6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34a8edd9-8d1f-44a6-b490-70c6ff9e486f_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Nivel de Contexto</h2><p>En el nivel contexto vamos a plasmar nuestro sistema y su interacci&#243;n con los usuarios y otros sistemas externos, de esta forma podemos comunicar efectivamente a un muy alto nivel con qu&#233; sistemas interactuamos y que acciones realiza en general.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zocf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zocf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Zocf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Zocf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Zocf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zocf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg" width="1456" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Zocf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Zocf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Zocf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Zocf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb894f02d-9908-4750-94ac-ed3d3266f89f_1648x906.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Nivel de Contenedores</h2><p>En este nivel, vamos a enfocarnos en plasmar los contenedores de nuestro sistema, la interacci&#243;n entre s&#237; y la interacci&#243;n con sistemas externos. Es muy importante saber que cuando hablamos de contenedores no estamos hablando de un contenedor Docker, si no de un contenedor que representa una aplicaci&#243;n o un almac&#233;n de datos.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y85k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y85k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y85k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y85k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y85k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y85k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg" width="1182" height="1074" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1074,&quot;width&quot;:1182,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Y85k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y85k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y85k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y85k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b831e26-4663-4063-9f1f-3878f0bd3b2e_1182x1074.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Nivel de Componentes</h2><p>Ya en este nivel entramos a un nivel mucho m&#225;s t&#233;cnico donde vamos a profundizar en los componentes que conforman un contenedor, por ejemplo si tenemos un contenedor construido con Spring Boot, podemos ver componentes como Controladores, Servicios, Repositorios, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mdR5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mdR5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mdR5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mdR5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mdR5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mdR5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg" width="1430" height="1014" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1014,&quot;width&quot;:1430,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!mdR5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mdR5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mdR5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mdR5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc4044e9-fef7-4d3d-a151-6f1f0f260b4b_1430x1014.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Nivel de Codigo</h2><p>Por &#250;ltimo en este nivel podemos plasmar nuestro c&#243;digo, por ejemplo con un diagrama de clases (UML), el objetivo de este nivel es tener una vista de nuestro c&#243;digo bien documentada con un detalle de c&#243;digo espec&#237;fico. Este nivel en muchos casos es opcional, me refiero a que tienes que analizar si para tus proyectos quieres implementar todos los niveles o solo el de contexto, contenedores y componentes.</p><h1>Ventajas y experiencia utilizando C4</h1><p>Una de las ventajas que tiene C4 frente a otros lenguajes como UML, es que es muy amigable y sencillo de implementar para los desarrolladores, al final en unos cuantos pasos ya puedes empezar a utilizarlo.</p><p>Personalmente, lo he estado usando en conjunto con mi equipo de trabajo estos &#250;ltimos a&#241;os y ha sido un &#233;xito, volvi&#233;ndolo as&#237; un est&#225;ndar en el proceso de construcci&#243;n de software. Tambi&#233;n un punto positivo es que hay una amplia adaptaci&#243;n en la industria de este modelo y lo puedes empezar a implementar en herramientas como <strong><a href="http://draw.io/">Draw.io</a></strong> o Lucidchart donde ya puedes visualizar los componentes de C4.</p><h1>En conclusi&#243;n&#8230;</h1><p>Considero que implementar C4 es un enfoque practico para los equipos de ingenier&#237;a y falicitara el entendimiento de los proyectos. Al principio, como todo proceso de adaptaci&#243;n, tendr&#225;n que experimentar con el modelo, entender las abstracciones y notaciones, pero al final se encontraran en un estado donde cualquier arquitectura o dise&#241;o que est&#233;n definiendo lo podr&#225;n plasmar r&#225;pidamente.</p><p>Te recomiendo que si quieres saber m&#225;s sobre <strong><a href="https://c4model.com/">C4 model visites su p&#225;gina principal</a></strong>, ya que existen muchos diagramas adicionales que puedes implementar con diferentes objetivos.</p><p>Si te gusto este art&#237;culo y quieres enterarte de primera mano cuando publique nuevos art&#237;culos, te invito a que te suscribas a mi <strong>newsletter</strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.jesushenriquez.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.jesushenriquez.com/subscribe?"><span>Suscr&#237;bete ahora</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Integrando Spring Boot y Cloud SQL]]></title><description><![CDATA[En este articulo vamos a integrar Spring Boot con Cloud SQL de Google Cloud Platform (GCP), vamos a crear un servicio REST basico con Spring Boot y vamos a disponibilizar una base de datos a trav&#233;s de cloud sql utilizandola para persistir y leer informaci&#243;n de usuarios.]]></description><link>https://www.jesushenriquez.com/p/integrando-spring-boot-y-cloud-sql</link><guid isPermaLink="false">https://www.jesushenriquez.com/p/integrando-spring-boot-y-cloud-sql</guid><dc:creator><![CDATA[Jesus Henriquez]]></dc:creator><pubDate>Wed, 26 Apr 2023 20:52:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W2-4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W2-4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W2-4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png 424w, https://substackcdn.com/image/fetch/$s_!W2-4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png 848w, https://substackcdn.com/image/fetch/$s_!W2-4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png 1272w, https://substackcdn.com/image/fetch/$s_!W2-4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W2-4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Integrando Spring Boot y Cloud SQL&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Integrando Spring Boot y Cloud SQL" title="Integrando Spring Boot y Cloud SQL" srcset="https://substackcdn.com/image/fetch/$s_!W2-4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png 424w, https://substackcdn.com/image/fetch/$s_!W2-4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png 848w, https://substackcdn.com/image/fetch/$s_!W2-4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png 1272w, https://substackcdn.com/image/fetch/$s_!W2-4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b60709c-86ea-45e9-92d3-e4f008e3e5fe_1600x840.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>En este articulo vamos a integrar Spring Boot con <strong><a href="https://cloud.google.com/sql?hl=es">Cloud SQL</a></strong> de Google Cloud Platform (GCP), vamos a crear un servicio REST basico con Spring Boot y vamos a disponibilizar una base de datos a trav&#233;s de cloud sql utilizandola para persistir y leer informaci&#243;n de usuarios.</p><h1><strong>Nuestros microservicios</strong></h1><p>A lo largo de este articulo vamos a estar utlizando los recursos proporcionados en el siguiente repositorio de GitHub: <strong><a href="https://github.com/jesushenriquez/gcp-microservices-spring-boot/tree/main/gcp-demo-services">https://github.com/jesushenriquez/gcp-microservices-spring-boot/tree/main/gcp-demo-services</a></strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.jesushenriquez.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#161;Gracias por leer Substack de Jes&#250;s! Suscr&#237;bete gratis para recibir nuevas publicaciones y apoyar mi trabajo.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h1><strong>Conectandonos a GCP con el CLI</strong></h1><p>GCP ofrece un CLI por donde vas a poder interactuar con casi todos los servicios de tu consola.</p><ol><li><p>Primero que todo tienes que instalar el CLI, te puedes guiar desde la <strong><a href="https://cloud.google.com/sdk/docs/install">pagina principal</a></strong>.</p></li><li><p>Luego, es necesario que nos autentiquemos para poder conectarnos a nuestra cuenta de google y nuestra consola, para esto lo puedes hacer con el siguiente comando:</p></li></ol><pre><code><code>gcloud auth login</code></code></pre><p>Esto va a abrir un browser donde vas a poder autenticarte con tu cuenta de google.</p><blockquote><p><em><strong>Tambien puedes hacer la autenticaci&#243;n por medio de un <a href="https://cloud.google.com/iam/docs/service-account-overview">Service Account</a>, sin embargo, se sabe que los service account pueden ser un riesgo de seguridad si no se administran adecuadamente. <a href="https://cloud.google.com/docs/authentication">Puedes ver otros metodos de autenticaci&#243;n en la pagina oficial de gcp</a>.</strong></em></p></blockquote><p>Para verificar que ya estes autenticado, puedes ejecutar el siguiente comando:</p><pre><code><code>gcloud auth list</code></code></pre><p>Vas a poder visualizar tu correo electronico o service account en el output.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BFgf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BFgf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BFgf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BFgf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BFgf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BFgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg" width="688" height="256" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:256,&quot;width&quot;:688,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!BFgf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BFgf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BFgf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BFgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b557d85-af8c-49de-b633-c3ea3b852e48_688x256.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Creando nuestro proyecto</strong></h2><p>Dentro de GCP necesitamos crear o posicionarnos dentro de un proyecto, esto lo podemos hacer desde la consola web o desde el CLI, en nuestro casolo vamos a hacer desde el CLI:</p><pre><code><code>gcloud projects create gcp-demo-jesushenriquez --name="GCP DEMO"</code></code></pre><p>Luego vamos a setear dicho proyecto como proyecto por defecto:</p><pre><code><code>gcloud config set project gcp-demo-jesushenriquez</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zmOG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zmOG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zmOG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zmOG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zmOG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zmOG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg" width="844" height="110" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:110,&quot;width&quot;:844,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!zmOG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zmOG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zmOG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zmOG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd7391b-84fe-48cd-a9da-ef249330fd08_844x110.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Y puedes validar que efectivamente se configuro el default project ejecutando el siguiente comando:</p><pre><code><code>gcloud config list project</code></code></pre><p>Output:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8bLY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8bLY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8bLY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8bLY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8bLY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8bLY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg" width="646" height="186" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:186,&quot;width&quot;:646,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!8bLY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8bLY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8bLY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8bLY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa64dd659-dc52-4399-9944-e6443c3a29e1_646x186.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>Creando una instancia de Cloud SQL</strong></h2><blockquote><p><em><strong>Cloud SQL es un servicio de bases de datos completamente administrado que te ayuda a configurar, mantener y administrar tus bases de datos relacionales en Google Cloud Platform. Puedes usar Cloud SQL con MySQL, PostgreSQL o SQL Server.</strong></em></p></blockquote><p>Ahora, vamos a crear nuestra instancia de Cloud SQL, luego crearemos nuestra base de datos y posteriormente nuestras tablas.</p><ol><li><p>Lo primero que debemos hacer es habilitar las apis de administracion de Cloud SQL:</p></li></ol><pre><code><code>gcloud services enable sqladmin.googleapis.com</code></code></pre><p>Output:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zv3h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zv3h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zv3h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zv3h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zv3h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zv3h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg" width="1284" height="158" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:158,&quot;width&quot;:1284,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zv3h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zv3h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zv3h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zv3h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda4ec602-cf18-49f6-9090-819948a0073f_1284x158.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol start="2"><li><p>Validamos que efectivamente habilitamos el api:</p></li></ol><pre><code><code>gcloud services list | grep sqladmin</code></code></pre><p>Output:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uo2r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uo2r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uo2r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uo2r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uo2r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uo2r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg" width="1284" height="106" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:106,&quot;width&quot;:1284,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!uo2r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uo2r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uo2r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uo2r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ac1071-169b-445d-bd28-6c8a727e6b5c_1284x106.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol start="3"><li><p>Validamos que no tengamos instancias creadas (por ahora) en nuestra consola y proyecto:</p></li></ol><pre><code><code>gcloud sql instances list</code></code></pre><p>Output:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_SRj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_SRj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_SRj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_SRj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_SRj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_SRj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg" width="1290" height="110" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:110,&quot;width&quot;:1290,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!_SRj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_SRj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_SRj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_SRj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b502271-69eb-4434-8945-7e4fe3c33cc4_1290x110.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol start="4"><li><p>Ahora si, vamos a crear nuestra instancia, vamos a ejecutar el siguiente comando donde especificamos el nombre de la instancia <code>gcp-demo-sql</code> y le pasamos el flag <code>--region=us-central1</code> :</p></li></ol><pre><code><code>gcloud sql instances create gcp-demo-sql --region=us-central1
</code></code></pre><p>Veremos que por defecto Cloud SQL nos va a crear una instancia MySQL en mi caso v8.0, luego de unos minutos finalizara la creaci&#243;n de la instancia y visualizaras toda la informaci&#243;n de la instancia creada:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K9_M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K9_M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K9_M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K9_M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K9_M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K9_M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg" width="1456" height="115" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:115,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!K9_M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K9_M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K9_M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K9_M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe63c3efa-46e8-466e-bb86-f1a1893bae1d_1800x142.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>De hecho, podrias validarlo desde la consola web y de igual forma visualizarias toda la informaci&#243;n de tu instancia:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CROC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CROC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png 424w, https://substackcdn.com/image/fetch/$s_!CROC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png 848w, https://substackcdn.com/image/fetch/$s_!CROC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png 1272w, https://substackcdn.com/image/fetch/$s_!CROC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CROC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png" width="628" height="240" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/729f9728-b926-4231-a6c6-4db040ee823a_628x240.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:240,&quot;width&quot;:628,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CROC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png 424w, https://substackcdn.com/image/fetch/$s_!CROC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png 848w, https://substackcdn.com/image/fetch/$s_!CROC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png 1272w, https://substackcdn.com/image/fetch/$s_!CROC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729f9728-b926-4231-a6c6-4db040ee823a_628x240.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol start="5"><li><p>Como ya tenemos nuestra instancia, podemos empezar a operar dentro de ella, en este caso vamos a crear nuestra base de datos:</p></li></ol><p>Con el siguiente comando podemos visualizar que crearemos una base de datos llamada <code>gcp-demo</code> y le enviamos el flag <code>--instance</code> para indicarle el nombre de nuestra instancia <code>gcp-demo-sql</code>:</p><pre><code><code>gcloud sql databases create gcp-demo --instance gcp-demo-sql</code></code></pre><p>Luego de unos segundos, podr&#225;s visualizar un output con la informaci&#243;n de tu base de datos:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!18AH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!18AH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg 424w, https://substackcdn.com/image/fetch/$s_!18AH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg 848w, https://substackcdn.com/image/fetch/$s_!18AH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!18AH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!18AH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg" width="1022" height="214" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:214,&quot;width&quot;:1022,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!18AH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg 424w, https://substackcdn.com/image/fetch/$s_!18AH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg 848w, https://substackcdn.com/image/fetch/$s_!18AH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!18AH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5416fac4-5d26-4d80-bac0-be407cefe8c1_1022x214.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol start="6"><li><p>Vamos a crear el usuario mediante el cual nos conectaremos desde nuestro microservicio. En el siguiente comando podemos visualizar que vamos a crear el usuario <code>guest</code> en la instancia <code>gcp-demo-sql</code> y para efectos practivos vamos a asignarle el password <code>guest</code>.</p></li></ol><pre><code>gcloud sql users create guest --instance=gcp-demo-sql --host=% --password=guest</code></pre><ol start="7"><li><p>Luego de crear nuestra base de datos y nuestro usuario, vamos a conectarnos a nuestra instancia a trav&#233;s del CLI y vamos a crear nuestras tablas (esto puede tardar unos minutos) , posteriormente tambien le daremos permisos al usuario guest.</p></li></ol><pre><code><code>gcloud sql connect gcp-demo-sql</code></code></pre><p>Te va a pedir el password del usuario root, por defecto e inicialmente el password es vacio, es decir, con que presiones enter bastaria para conectarte.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q9zJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q9zJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q9zJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q9zJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q9zJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q9zJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg" width="1382" height="580" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:580,&quot;width&quot;:1382,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Q9zJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q9zJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q9zJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q9zJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76b6d7c-5f6f-4d5d-aeba-f3b6c9ddb209_1382x580.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>En este punto, ya podemos interactuar con nuestra instancia mysql, de hecho, podriamos listar las bases de datos que tenemos a disposici&#243;n y visualizaremos nuestra base de datos <code>gcp-demo</code>:</p><pre><code><code>show databases;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!boCX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!boCX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg 424w, https://substackcdn.com/image/fetch/$s_!boCX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg 848w, https://substackcdn.com/image/fetch/$s_!boCX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!boCX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!boCX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg" width="436" height="408" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7608756-4628-406d-ad02-299480537bbf_436x408.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:408,&quot;width&quot;:436,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!boCX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg 424w, https://substackcdn.com/image/fetch/$s_!boCX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg 848w, https://substackcdn.com/image/fetch/$s_!boCX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!boCX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7608756-4628-406d-ad02-299480537bbf_436x408.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Vamos a usar nuestra base de datos:</p><pre><code><code>use gcp-demo;</code></code></pre><p>Procedemos a crear nuestra tabla <code>user</code> :</p><pre><code><code>CREATE TABLE user (
  id BIGINT NOT NULL AUTO_INCREMENT,
  name CHAR(255) NOT NULL,
  PRIMARY KEY (id)
);</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SLyd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SLyd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SLyd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SLyd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SLyd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SLyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg" width="750" height="488" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:488,&quot;width&quot;:750,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!SLyd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SLyd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SLyd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SLyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d996f01-48be-4c9d-ad36-94158131cfe7_750x488.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Insertamos un usuario de prueba:</p><pre><code><code>INSERT INTO user (id, name)
VALUES (1, 'Jesus');</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xsJc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xsJc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xsJc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xsJc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xsJc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xsJc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg" width="608" height="424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:608,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!xsJc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xsJc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xsJc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xsJc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76455141-eb48-4ed6-be00-da7a055bf2ff_608x424.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Por ultimo, ejecutaremos el siguiente GRANT para darle todos los permisos sobre la base de datos al usuario guest:</p><pre><code><code>GRANT ALL ON gcp-demo.* TO 'guest'@'%';</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uLZ1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uLZ1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uLZ1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uLZ1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uLZ1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uLZ1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg" width="830" height="98" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:98,&quot;width&quot;:830,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!uLZ1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uLZ1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uLZ1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uLZ1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54f1f6f5-420b-4570-af09-9c45a5c2aad7_830x98.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Y listo, salimos de la instancia:</p><pre><code><code>exit</code></code></pre><h1><strong>Integrando Cloud SQL en nuestro microservicio</strong></h1><p>Ya tenemos nuestra instancia de Cloud SQL con nuestra base de datos y nuestra tabla de usuarios, ahora vamos a integrarlo con nuestro microservicio.</p><p>En este punto es importante saber que existen varios metodos de conexi&#243;n hacia Cloud SQL. En este articulo abordaremos <strong>Cloud SQL Starter</strong>.</p><h2>Cloud SQL Starter</h2><p>Cloud SQL Starter provee una autoconfiguraci&#243;n del object <code>Datasource</code>, y vamos a observar que no va a ser necesario definir propiedades como la url (jdbc path) que normalmente es necesario en un proyecto con spring data jpa.</p><ol><li><p>Lo primero que necesitamos hacer, es agregar una nueva <code>dependency</code> dentro de las <code>dependencies</code> de nuestro proyecto y dentro del <code>dependencyManagement</code>.</p></li></ol><pre><code><code>&lt;dependencies&gt;
    ...
    &lt;dependency&gt;
        &lt;groupId&gt;com.google.cloud&lt;/groupId&gt;
        &lt;artifactId&gt;spring-cloud-gcp-starter-sql-mysql&lt;/artifactId&gt;
    &lt;/dependency&gt;
    ...
&lt;/dependencies&gt;
...
&lt;dependencyManagement&gt;
    &lt;dependencies&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;com.google.cloud&lt;/groupId&gt;
            &lt;artifactId&gt;spring-cloud-gcp-dependencies&lt;/artifactId&gt;
            &lt;version&gt;2.0.4&lt;/version&gt;
            &lt;type&gt;pom&lt;/type&gt;
            &lt;scope&gt;import&lt;/scope&gt;
        &lt;/dependency&gt;
    &lt;/dependencies&gt;
&lt;/dependencyManagement&gt;</code></code></pre><blockquote><p><em><strong>Importante: como nuestra instancia es MySQL vamos a utilizar el artifact spring-cloud-gcp-starter-sql-mysql, sin embargo, en dado caso que quieras conectarte a una instancia PostgreSQL puedes usar el artifact spring-cloud-gcp-starter-sql-postgresql. Lamentablemente, SQL Server no tiene compatibilidad con Cloud SQL Starter.</strong></em></p></blockquote><ol start="2"><li><p>Ahora vamos a necesitar obtener el connection name de nuestra instancia ejecutando el siguiente comando:</p></li></ol><pre><code><code>gcloud sql instances describe gcp-demo-sql --format='value(connectionName)'</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4hkt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4hkt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4hkt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4hkt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4hkt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4hkt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg" width="1420" height="112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:112,&quot;width&quot;:1420,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!4hkt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4hkt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4hkt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4hkt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3d3b391-cd48-48f2-b8d6-837639d924dc_1420x112.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol start="3"><li><p>Luego, vamos a crear un archivo de propiedades con el profile <code>cloud</code> (application-cloud.yml). Dentro de nuestro archivo de propiedades vamos a escribir lo siguiente:</p></li></ol><pre><code><code>spring:
  cloud:
    gcp:
      sql:
        enabled: true
        database-name: &lt;database_name&gt;
        instance-connection-name: &lt;instance_connection_name&gt;
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      maximum-pool-size: 5
    username: &lt;username&gt;
    password: &lt;password&gt;
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect</code></code></pre><p>Para mi caso en particular el archivo properties se ve de la siguiente forma:</p><pre><code><code>spring:
  cloud:
    gcp:
      sql:
        enabled: true
        database-name: gcp-demo
        instance-connection-name: gcp-demo-jesushenriquez:us-central1:gcp-demo-sql
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      maximum-pool-size: 5
    username: guest
    password: guest
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect</code></code></pre><ol start="4"><li><p>Ahora es necesario agregar unas cuantes propiedades dentro de nuestro archivo de propiedades por default (application.yml):</p></li></ol><pre><code><code>server:
  port: 8080
spring:
  profiles:
    active: cloud</code></code></pre><p>Basicamente, le estamos diciendo que el profile que esta activo es <code>cloud</code>. Esto ultimo le puedes dar el manejo que prefieras, es decir, puedes utilizar el application.yml o puedes enviar el profile al momento de ejecutar tu aplicaci&#243;n.</p><p>Toda esta informaci&#243;n la puedes visualizar directamente en el proyecto <strong><a href="https://github.com/jesushenriquez/gcp-microservices-spring-boot/tree/main/gcp-demo-services">https://github.com/jesushenriquez/gcp-microservices-spring-boot/tree/main/gcp-demo-services</a></strong>.</p><h3>Creaci&#243;n de Service Acount</h3><p>Llegamos a un punto importante de nuestra implementaci&#243;n, ya que para poder conectarnos a nuestra instancia de base de datos vamos a necesitar un service account con los permisos necesario hacia Cloud SQL.</p><ol><li><p>Para ello, lo primero que vamos hacer es crear nuestor service account.</p></li></ol><pre><code><code>gcloud iam service-accounts create guestgcpdemo</code></code></pre><p>Aqui podemos ver que vamos a crear un service account con el account name <code>guestgcpdemo</code>.</p><ol start="2"><li><p>Procedemos a listar nuestros service accounts para obtener el email del sa que acabamos de crear:</p></li></ol><pre><code><code>gcloud iam service-accounts list</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uSKR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uSKR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uSKR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uSKR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uSKR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uSKR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg" width="1404" height="176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:176,&quot;width&quot;:1404,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!uSKR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uSKR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uSKR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uSKR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16f89579-58dd-47be-b777-43cc9f308f8f_1404x176.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ol start="3"><li><p>Ahora, vamos a asignarle el role cloudsql.client, para que pueda conectarse a nuestra instancia.</p></li></ol><pre><code><code>gcloud projects add-iam-policy-binding gcp-demo-jesushenriquez --member serviceAccount:guestgcpdemo@gcp-demo-jesushenriquez.iam.gserviceaccount.com --role roles/cloudsql.client</code></code></pre><ol start="4"><li><p>Necesitaremos exportar nuestro service account a un archivo JSON, el cual vamos a utilizar posteriormente.</p></li></ol><pre><code><code>gcloud iam service-accounts keys create guestgcpdemo.json --iam-account=guestgcpdemo@gcp-demo-jesushenriquez.iam.gserviceaccount.com</code></code></pre><p>Este comando nos va a generar el archivo <code>guestgcpdemo.json</code> en la ruta donde estes ubicado.</p><ol start="5"><li><p>Por ultimo, vamos a configurar la variable de entorno <code>GOOGLE_APPLICATION_CREDENTIALS</code> el valor de esta variable debe ser la ruta completa de tu archivo JSON del service account: /path/guestgcpdemo.json.</p></li></ol><p>De esta forma, utilizara el service account generado por defecto para cualquier operaci&#243;n con GCP que sea necesario. Tambien es posible enviarle la ruta directamente en el properties de nuestra aplicaci&#243;n.</p><h1>Probando nuestro servicio</h1><p>Para probar nuestra integraci&#243;n, vamos a utilizar el componente <strong><a href="https://github.com/jesushenriquez/gcp-microservices-spring-boot/tree/main/gcp-demo-services">https://github.com/jesushenriquez/gcp-microservices-spring-boot/tree/main/gcp-demo-services</a></strong> que cuenta con un endpoint para obtener todos los usuarios de nuestra base de datos.</p><h2>Ejecuci&#243;n</h2><p>Para ejecutar nuestro microservicio es necesario tener instalado el JDK 17 y ejecutar el siguiente commando:</p><pre><code><code>./mvnw spring-boot:run</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zp0d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zp0d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png 424w, https://substackcdn.com/image/fetch/$s_!Zp0d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png 848w, https://substackcdn.com/image/fetch/$s_!Zp0d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Zp0d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zp0d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png" width="1456" height="445" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84fac09e-b937-47ea-b533-444060afe406_2668x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:445,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="image" title="image" srcset="https://substackcdn.com/image/fetch/$s_!Zp0d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png 424w, https://substackcdn.com/image/fetch/$s_!Zp0d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png 848w, https://substackcdn.com/image/fetch/$s_!Zp0d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Zp0d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fac09e-b937-47ea-b533-444060afe406_2668x816.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Consumo de nuestro endpoint</h2><p>Ya tenemos nuestro componente ejecutandose, ahora solo nos falta hacer la prueba. Para consumir nuestro endpoint lo puedes hacer utilizando el siguiente curl:</p><pre><code><code>curl --location 'http://localhost:8080/users'</code></code></pre><p>Podemos ver que nos muestra la informaci&#243;n que tenemos en nuestra base de datos en Cloud SQL:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7idz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7idz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7idz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7idz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7idz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7idz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg" width="828" height="110" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:110,&quot;width&quot;:828,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!7idz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7idz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7idz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7idz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77dc24e5-eabe-4172-874e-4d2bf9245ac1_828x110.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>Importante: Eliminar la instancia de Cloud SQL</h3><p>Si generaste una instancia para ir siguiendo los pasos de este articulo, recuerda eliminarla al finalizar la prueba, ya que si la dejas activa esto te generara un cobro a tu metodo de pago que tengas configurado en GCP.</p><p>Para eliminar la instancia puedes usar el siguiente comando:</p><pre><code><code>gcloud sql instances delete gcp-demo-sql</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0ZM6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0ZM6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0ZM6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0ZM6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0ZM6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0ZM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg" width="1456" height="182" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:182,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!0ZM6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0ZM6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0ZM6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0ZM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c65b829-13eb-4fc3-a761-aa25f6c7f5e1_1854x232.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Con esto finalizamos nuestra integraci&#243;n. Espero que este articulo te haya gustado y te ayude a entender un poco mejor como integrar tus aplicaciones en Spring Boot con Cloud SQL.</p><p>Si tienes alguna duda, puedes dejar un comentario en este articulo o tambien me puedes contactar en mastodon: <strong><a href="https://mastodon.social/@jesushenriquez">https://mastodon.social/@jesushenriquez</a></strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.jesushenriquez.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#161;Gracias por leer Substack de Jes&#250;s! Suscr&#237;bete gratis para recibir nuevas publicaciones y apoyar mi trabajo.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Arquitectura monolítica vs Arquitectura de microservicios]]></title><description><![CDATA[Seguro que has o&#237;do hablar de la arquitectura monol&#237;tica, esta era una de las m&#225;s comunes y populares hace un tiempo, sin embargo, en esta arquitectura, hay varios problemas que son complejos o muy costosos de resolver y aqu&#237; es donde entra la arquitectura orientada a microservicios.]]></description><link>https://www.jesushenriquez.com/p/arquitectura-monolitica-vs-arquitectura</link><guid isPermaLink="false">https://www.jesushenriquez.com/p/arquitectura-monolitica-vs-arquitectura</guid><dc:creator><![CDATA[Jesus Henriquez]]></dc:creator><pubDate>Sun, 05 Jun 2022 22:54:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mAA8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mAA8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mAA8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif 424w, https://substackcdn.com/image/fetch/$s_!mAA8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif 848w, https://substackcdn.com/image/fetch/$s_!mAA8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif 1272w, https://substackcdn.com/image/fetch/$s_!mAA8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mAA8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0624d78-1f39-45d2-874f-dfa513d51568.avif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26209,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/avif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mAA8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif 424w, https://substackcdn.com/image/fetch/$s_!mAA8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif 848w, https://substackcdn.com/image/fetch/$s_!mAA8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif 1272w, https://substackcdn.com/image/fetch/$s_!mAA8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0624d78-1f39-45d2-874f-dfa513d51568.avif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Seguro que has o&#237;do hablar de la arquitectura monol&#237;tica, esta era una de las m&#225;s comunes y populares hace un tiempo, sin embargo, en esta arquitectura, hay varios problemas que son complejos o muy costosos de resolver y aqu&#237; es donde entra la arquitectura orientada a microservicios.</p><h1>Arquitectura monol&#237;tica</h1><p>Consiste en agrupar todas las funcionalidades y m&#243;dulos tanto de tu frontend como de tu backend dentro de un mismo proyecto. Esto significa que cuando termines tu desarrollo bajo esta arquitectura tendr&#225;s como resultado un ejecutable que podr&#225;s desplegar f&#225;cilmente en un servidor tradicional.</p><h2>Ventajas</h2><p>En la arquitectura monol&#237;tica se pueden encontrar ciertas ventajas como:</p><ul><li><p><strong>Facilidad de desarrollo:</strong> Al estar todos los componentes altamente acoplados, te resultar&#225; f&#225;cil desarrollar desde el inicio de tu proyecto.</p></li><li><p><strong>Despliegue y ejecuci&#243;n:</strong> Como mencion&#233; anteriormente, al final tu aplicaci&#243;n estar&#225; en un solo ejecutable (esto puede variar dependiendo del lenguaje de programaci&#243;n) el cual puedes desplegar f&#225;cilmente en un servidor tradicional (virtual o f&#237;sico) a trav&#233;s de un contenedor de aplicaciones.</p></li></ul><h2>Desventajas</h2><p>Al tener todos sus componentes dentro del mismo proyecto puede tener ciertos problemas como:</p><ul><li><p><strong>Escalabilidad (Crecimiento vertical):</strong> Si tu aplicaci&#243;n va a crecer cada a&#241;o en volumen, usuarios u operaciones, es probable que tengas que aumentar los recursos de tu infraestructura dando lugar a un crecimiento vertical. Es decir, ser&#225; necesario aumentar los recursos (CPU, almacenamiento, ram, etc) de tu servidor y por tanto este crecimiento vertical ser&#225; muy costoso en el tiempo.</p></li><li><p><strong>Dificultad para a&#241;adir nuevas funcionalidades:</strong> Resulta que dentro de una arquitectura monol&#237;tica existe un alto acoplamiento entre cada componente, esto genera un problema a largo plazo ya que el desarrollador deber&#225; conocer la aplicaci&#243;n en su totalidad para poder agregar nuevas funcionalidades sin da&#241;ar las existentes.</p></li></ul><h1>Arquitectura orientada a microservicios</h1><p>Esta arquitectura est&#225; orientada a construir aplicaciones distribuidas, es decir, los componentes son descentralizados, independientes y aut&#243;nomos. Estos componentes se denominan microservicios y, por lo general, deben proporcionar una funcionalidad empresarial completa.</p><p>Cada microservicio puede desarrollarse en un lenguaje diferente si se desea, principalmente porque se comunican entre s&#237; a trav&#233;s de APIs. Tambi&#233;n disponen de su propio almacenamiento y recursos, lo que evita sobrecargas y ca&#237;das del servicio.</p><h2>Ventajas</h2><ul><li><p><strong>Modularidad:</strong> Cada uno de tus microservicios se ejecuta por separado y es aut&#243;nomo, al estar aislado significa que si uno de ellos falla no afecta a los dem&#225;s. De esta forma se consigue un nivel adecuado de disponibilidad del servicio.</p></li><li><p><strong>Escalabilidad (Crecimiento Horizontal):</strong> Al ser una aplicaci&#243;n distribuida, permite crecer horizontalmente seg&#250;n las necesidades. Por ejemplo, en un momento dado si tu aplicaci&#243;n tiene un alto volumen de peticiones puedes desplegar m&#225;s instancias de tu microservicio permitiendo una respuesta &#243;ptima a estas peticiones.</p></li></ul><h2>Desventajas</h2><ul><li><p><strong>Alto consumo de recursos:</strong> Como cada microservicio est&#225; aislado y se ejecuta de forma independiente, consumen muchos m&#225;s recursos (memoria y CPU).</p></li><li><p><strong>Tiempo inicial:</strong> Esta arquitectura requiere m&#225;s tiempo ya que es necesario realizar un an&#225;lisis para fragmentar las diferentes funcionalidades en microservicios y luego implementar la comunicaci&#243;n entre ellos.</p></li></ul><p>Estas son s&#243;lo algunas ventajas y desventajas de ambas arquitecturas, sin embargo, hay m&#225;s caracter&#237;sticas que son realmente interesantes. Al final, todo depender&#225; de la necesidad del negocio, y a partir de ah&#237; deber&#225;s definir qu&#233; arquitectura se adapta mejor a las necesidades de tu soluci&#243;n.</p><p>Si te ha gustado este post puedes dar clic en el bot&#243;n me gusta y suscribirte a mi blog, tambien puedes encontrarme en mastodon en el siguiente <a href="https://mastodon.social/@jesushenriquez">enlace</a>.</p>]]></content:encoded></item></channel></rss>