<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>codigo &#8211; Webmago Dev</title>
	<atom:link href="https://webmago.dev/tag/codigo/feed/" rel="self" type="application/rss+xml" />
	<link>https://webmago.dev</link>
	<description>Creando codigo desde 1990</description>
	<lastBuildDate>Thu, 15 Apr 2021 17:36:58 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Pulumi (IaC) con Digital Ocean</title>
		<link>https://webmago.dev/pulumi-iac-con-digital-ocean/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pulumi-iac-con-digital-ocean</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Thu, 04 Mar 2021 03:41:00 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[infraestructura]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[pulumi]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[digital ocean]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=778</guid>
					<description><![CDATA[La administración de la infraestructura puede ser manejada a partir de generar código, es decir, Infraestructura como Código también conocida como IaC en ingles. &#160; Puedes usar una gran variedad de software para llevarlo a cabo, lo que implica en algunos casos aprender un nuevo lenguaje, algo que Pulumi ha tomado en cuenta para su [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>La administración de la infraestructura puede ser manejada a partir de generar código, es decir, Infraestructura como Código también conocida como IaC en ingles.</p>
<p>&nbsp;</p>
<p>Puedes usar una gran variedad de software para llevarlo a cabo, lo que implica en algunos casos aprender un nuevo lenguaje, algo que <a title="Pulumi" href="https://www.pulumi.com/" target="_blank" rel="noopener noreferrer">Pulumi</a> ha tomado en cuenta para su rápida adopción, por lo que si sabes Typescript, Go, Python, Javascript o .Net reducirás enormemente la curvatura de aprendizaje.</p>
<p>&nbsp;</p>
<p>Había escuchado de <a title="Pulumi" href="https://www.pulumi.com/" target="_blank" rel="noopener noreferrer">Pulumi</a> hace un año, hace unas semanas tome dos webinars  y las dudas que tenia sobre su uso, escenarios me animo a probarlo con una <a title="Promo Digital Ocean" href="https://m.do.co/c/82e9086ec3ae" target="_blank" rel="noopener noreferrer">promo</a> que obtuve en <a title="Digital Ocean" href="https://digitalocean.com" target="_blank" rel="noopener noreferrer">Digital Ocean</a> por lo que inicie con la creación de un cluster <a title="Kubernetes" href="https://kubernetes.io/" target="_blank" rel="noopener noreferrer">Kuberntes</a> usando Typescript. <a title="Pulumi" href="https://www.pulumi.com/" target="_blank" rel="noopener noreferrer">Pulumi</a> te ofrece una version <a title="Pricing" href="https://www.pulumi.com/pricing/" target="_blank" rel="noopener noreferrer">gratuita</a> si únicamente tú usas el entorno.</p>
<p>&nbsp;</p>
<p>La ventaja de esto que puedes ir haciéndolo poco a poco y esta es la lista ordenada de lo que fui administrando con mi código.</p>
<p>&nbsp;</p>
<ol>
<li>Creación del Cluster Kubernetes.</li>
<li>Creación de algunos namespaces, ex: staging, website</li>
<li>Creación de un primer Deployment con nginx en el namespace de staging.</li>
<li>Creación de un ClusterIP Service para el Deployment creado en el punto 3.</li>
<li>Una gran pausa para instalar Istio (muy complicado y tomaría mas horas) o nginx como Ingress</li>
<li>Después de decidirme en el punto 5 por nginx, procedí a crear el código para instalarlo como Ingress, con su namespace usando el <a title="Hlem" href="https://helm.sh/" target="_blank" rel="noopener noreferrer">Helm v3</a> Chart; esto me genero un LoadBalancer en <a title="Digital Ocean" href="https://digitalocean.com" target="_blank" rel="noopener noreferrer">Digital Ocean</a> a su vez asignándome la IP Publica.</li>
<li>Creación de un Service Ingress para dirigir el tráfico del ingress-nginx creado en el punto 6 hacia el ClusterIP creado en el punto 4, puedes verlo en <a title="do.webmago.dev" href="http://do.webmago.dev" target="_blank" rel="noopener noreferrer">do.webmago.dev</a> (puede no estar disponible en el futuro).</li>
</ol>
<div id="attachment_785" style="width: 1034px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-785" class="size-large wp-image-785" src="https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-1024x265.png" alt="Ejecucion Paso 1 Pulumi" width="1024" height="265" srcset="https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-1024x265.png 1024w, https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-300x78.png 300w, https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-768x199.png 768w, https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1-1536x397.png 1536w, https://webmago.dev/buvytsan/2021/03/pulumi-do-step-1.png 1894w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-785" class="wp-caption-text">Ejecucion Paso 1 Pulumi</p></div>
<p>&nbsp;</p>
<div id="attachment_784" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-784" class="size-large wp-image-784" src="https://webmago.dev/buvytsan/2021/03/do-step-1-1024x595.png" alt="Revision Dashboard Digital Ocean" width="1024" height="595" srcset="https://webmago.dev/buvytsan/2021/03/do-step-1-1024x595.png 1024w, https://webmago.dev/buvytsan/2021/03/do-step-1-300x174.png 300w, https://webmago.dev/buvytsan/2021/03/do-step-1-768x446.png 768w, https://webmago.dev/buvytsan/2021/03/do-step-1-1536x893.png 1536w, https://webmago.dev/buvytsan/2021/03/do-step-1-2048x1191.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-784" class="wp-caption-text">Revision Dashboard Digital Ocean</p></div>
<p>&nbsp;</p>
<div id="attachment_786" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-786" class="size-large wp-image-786" src="https://webmago.dev/buvytsan/2021/03/pulumi-step-1-1024x597.png" alt="Dashboard Pulumi paso 1" width="1024" height="597" srcset="https://webmago.dev/buvytsan/2021/03/pulumi-step-1-1024x597.png 1024w, https://webmago.dev/buvytsan/2021/03/pulumi-step-1-300x175.png 300w, https://webmago.dev/buvytsan/2021/03/pulumi-step-1-768x448.png 768w, https://webmago.dev/buvytsan/2021/03/pulumi-step-1-1536x896.png 1536w, https://webmago.dev/buvytsan/2021/03/pulumi-step-1-2048x1195.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-786" class="wp-caption-text">Dashboard Pulumi paso 1</p></div>
<p>&nbsp;</p>
<p>Cabe señalar que para mantener mi entorno aislado y no interferir con mis configuraciones de mi equipo trabaje desde un contenedor de <a title="Docker" href="https://docker.com" target="_blank" rel="noopener noreferrer">docker</a>.</p>
<p>&nbsp;</p>
<p>Tengo que aclarar que tuve algunos glitches con Pulumi al aplicar/actualizar cambios y al parecer es un comportamiento algo raro que tiene <a title="Digital Ocean" href="https://digitalocean.com" target="_blank" rel="noopener noreferrer">Digital Ocean</a>, por lo que recibía errores y tenia que volver a ejecutar la actualización de cambios.</p>
<p>&nbsp;</p>
<p>En mi experiencia, puedo decir que <a title="Pulumi" href="https://www.pulumi.com/" target="_blank" rel="noopener noreferrer">Pulumi</a> reduce considerablemente su curvatura de aprendizaje y adopción permitiéndote administrar tu Infraestructura como Código con los lenguajes antes mencionados.</p>
<p>&nbsp;</p>
<div class="style-80 style-local-23-m39 position-relative" data-colibri-id="14-m39">
<div class="h-global-transition-all colibri-post-content">
<p>Si requieres de mi ayuda para administrar tu infraestructura <a href="https://webmago.dev/#contact">contáctame</a>.</p>
</div>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>La importancia de la calidad del código</title>
		<link>https://webmago.dev/la-importancia-de-la-calidad-del-codigo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=la-importancia-de-la-calidad-del-codigo</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Tue, 01 Dec 2020 15:52:11 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[calidad]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[proyectos]]></category>
		<category><![CDATA[registros]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=649</guid>
					<description><![CDATA[Durante meses un sitio con miles de visitas al día estuvo trabajando sin caídas en la pagina principal, como medida preventiva implemente monitoreo en las secciones principales, es decir, las de mayor visitas para darme cuenta si alguna de ellas dejaba de responder con el  Código HTTP 200 OK. Posterior a un cambio hecho en [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Durante meses un sitio con miles de visitas al día estuvo trabajando sin caídas en la pagina principal, como medida preventiva implemente monitoreo en las secciones principales, es decir, las de mayor visitas para darme cuenta si alguna de ellas dejaba de responder con el  <code>Código HTTP 200 OK</code>.</p>
<p>Posterior a un cambio hecho en el código iniciaron las caídas de secciones en cascada y finalmente la página de inicio, el momento en que esto sucedía era aleatorio, el único patrón detectado era la caída de secciones y finalmente la página de inicio.</p>
<p>El equipo externo de desarrollo nos responsabilizaba por qué seguramente habíamos hecho algún cambio no autorizado al sistema de cache; algo que tenia mas de un año sin ser modificado.</p>
<p>Algunos desarrolladores no cuentan con un disciplina para documentar, hacer pruebas unitarias, este era el caso de el equipo externo, incluso había detectado código duplicado o no optimizado en el inicio del proyecto y lo peor, habían silenciado los registros, es decir, si algo mal ocurría simplemente era &#8220;ocultado&#8221; o no registrado, algo que el mismo programador hizo a propósito.</p>
<p>En algún momento trabaje con un equipo ordenado que documentaba y generaba sus pruebas unitarias, al momento de hacer el proceso de integración estas pruebas unitarias validaban en parte que el código no tendría errores, así también la detección de código duplicado entre otros.</p>
<p>Es mi costumbre documentar y tener estadísticas de incidencias, por lo que estuve buscando cómo validar su código y con ello respaldarnos para descartar que era nuestra responsabilidad la caída de secciones y página principal.</p>
<p>En el camino encontré <a href="https://www.codacy.com/" target="_blank" rel="noopener noreferrer">Codacy,</a> una buena opción con muchas características, lamentablemente solicitar una autorización para el incremento del presupuesto tomaría tiempo y nos quedaríamos sin funciones PRO en el corto tiempo, así que opte por <a href="https://www.sonarqube.org/" target="_blank" rel="noopener noreferrer">Sonarqube.</a></p>
<p>Con <a href="https://www.sonarqube.org/" target="_blank" rel="noopener noreferrer">Sonarqube</a> implemente un bash script para escanear el código del proyecto indicado, para mi fortuna Sonarqube cuenta con una versión Docker Comunitaria gratuita la cual puedes tener lista y operando en 5 minutos; esta versión solo te permite escanear la rama <strong><em>master</em></strong> de tu proyecto, si requieres algo mejorado tendrás que optar por la versión de <a href="https://sonarcloud.io/pricing" target="_blank" rel="noopener noreferrer">Sonar Cloud</a> y te cobrara en base a las lineas de código que tenga tu proyecto.</p>
<p>Usando mis estadísticas desde que dejaron de presentarse caídas y al momento de su re-aparición busque en el histórico de Sonarqube y encontré las fechas en las que habían hecho los cambios y Sonarqube nos indicaba la mala calidad del código que había detectado en esos cambios, con ello descartaron que había sido un descuido de nuestro lado al modificar un componente fuera de su alcance.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
