<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Emmanuel Rodríguez</title>
    <description>The latest articles on DEV Community by Emmanuel Rodríguez (@roremdev).</description>
    <link>https://dev.to/roremdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F520902%2Fe1a0af5b-5ac2-48f9-9ea5-0b747f132d4d.png</url>
      <title>DEV Community: Emmanuel Rodríguez</title>
      <link>https://dev.to/roremdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/roremdev"/>
    <language>en</language>
    <item>
      <title>Software Deployment Strategies</title>
      <dc:creator>Emmanuel Rodríguez</dc:creator>
      <pubDate>Mon, 09 Oct 2023 16:11:32 +0000</pubDate>
      <link>https://dev.to/roremdev/software-deployment-strategies-3011</link>
      <guid>https://dev.to/roremdev/software-deployment-strategies-3011</guid>
      <description>&lt;h2&gt;
  
  
  ℹ️ Introducción
&lt;/h2&gt;

&lt;p&gt;El mundo del desarrollo de software ha evolucionado a un ritmo sin precedentes. Lo que antes se consideraba un proceso secuencial y lineal, se ha transformado en un flujo continuo de integraciones, pruebas y despliegues. Este avance, aunque provee velocidad y eficiencia, también introduce desafíos propios de un paradigma recién emergente.&lt;/p&gt;

&lt;p&gt;Cuando hablamos de “Estrategias de despliegue de software”, nos referimos a las metodologías que permiten liberar el software al público con agilidad, y mínima intervención humana, después de cada modificación esencial en el producto.&lt;/p&gt;

&lt;p&gt;Sin embargo, actuar sin una estrategia de despliegue bien definida o acumular improvisaciones y deudas técnicas, puede sumir a las organizaciones en prácticas perjudiciales, por ejemplo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Despliegues manuales:&lt;/strong&gt; Donde la intervención manual puede elevar el riesgo de errores convirtiendo, lo que debería ser una operación sencilla, en un posible punto de fallo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Falta de pruebas:&lt;/strong&gt; Donde al omitir pruebas esenciales o no validar adecuadamente los criterios de aceptación, podría resultar en la liberación de software defectuoso en producción.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resistencia al cambio:&lt;/strong&gt; Donde las organizaciones que no abrazan una estrategia de despliegue robusta suelen resistirse a cambios, estancando la innovación, la creatividad y, consecuentemente, el progreso.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiempo de inactividad:&lt;/strong&gt; Porque sin una planificación adecuada, podrían surgir periodos inesperados de inactividad, afectando la experiencia del usuario y deteriorando la imagen del producto o de la organización.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Al comprender y abordar estos desafíos o malos hábitos, las organizaciones pueden garantizar que sus procesos de despliegue sean más fluidos, eficientes y, sobre todo, efectivos. Por ello, en esta publicación, nos adentraremos en estrategias de despliegue de software diseñadas para superar estos y otros obstáculos.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⌛️ Historia
&lt;/h2&gt;

&lt;p&gt;El despliegue de software no es un concepto nuevo, pero su forma y metodología han sufrido transformaciones radicales a lo largo de los años.&lt;/p&gt;

&lt;p&gt;En los primeros días de la computación, el software se distribuía físicamente. Esto podía ser en tarjetas perforadas, cintas magnéticas o, más tarde, en discos. El proceso de actualización era lento, manual y propenso a errores. Las versiones del software eran estáticas durante largos períodos, y cualquier modificación requería una re-configuración completa del sistema.&lt;/p&gt;

&lt;p&gt;Con la llegada de la era de Internet, la distribución de software comenzó a migrar hacia la descargas en línea. Esto permitió actualizaciones más frecuentes, pero aún requería intervención manual debido al caos generado por las solicitudes. Las organizaciones empezaron a experimentar con despliegues más regulares, pero sin una estrategia coherente.&lt;/p&gt;

&lt;p&gt;Hoy en día, podemos encontrar vestigios de algunas prácticas sin una implementación de un “Sistema de Gestión de Versiones” (VCS o Version Control System), donde se gestiona manualmente versiones de código o total de un producto digital.&lt;/p&gt;

&lt;p&gt;A medida que los equipos de desarrollo adoptaron metodologías ágiles (como SCRUM o Kanban), el ritmo de producción del software aumentó. La necesidad de despliegues más frecuentes y confiables, llevaron al surgimiento de la integración continua (CI) y, eventualmente, al despliegue continuo (CD), también conocido como DevOps. Estas prácticas buscan automatizar la mayoría, si no todos, los aspectos del proceso de despliegue, reduciendo errores y acelerando la entrega.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;DevOps, es un conjunto de prácticas, herramientas y una cultura organizacional que automatiza e integra procesos despliegue y entrega continua; a su vez, un rol en un equipo de desarrollo de software.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A medida que el despliegue continuo se volvía más común, la industria reconoció la necesidad de estandarizar y formalizar estas prácticas. Se han propuesto numerosos marcos y herramientas, buscando definir un conjunto de mejores prácticas y estándares. Este impulso hacia la estandarización, ha sido en parte motivado por la creciente complejidad del software y la infraestructura (adopción de tecnologías como cómputo remoto en la nube), así como por la necesidad de garantizar la calidad y seguridad en cada despliegue.&lt;/p&gt;




&lt;h2&gt;
  
  
  5 Estrategias más populares de despliegue de software
&lt;/h2&gt;

&lt;p&gt;Continuando con la evolución del despliegue de software, te presento las cinco estrategias más populares y utilizadas en el desarrollo moderno de software. Cada una ofrece un enfoque único, con sus propias ventajas, restricciones y complejidades.&lt;/p&gt;

&lt;h3&gt;
  
  
  💥 Bing-Bang
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dWnAuhSX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/snwrl32u6t81jncxnffa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dWnAuhSX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/snwrl32u6t81jncxnffa.png" alt="Bing-Bang (@roremdev)" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Es una estrategia de despliegue referida como “todo a la vez” (all-to-once). Refiriendo a la estrategia de despliegue de software que reemplaza por completo a la versión anterior en un solo paso.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficios:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Simplicidad:&lt;/strong&gt; Dada su naturaleza directa, no requiere de complejos procesos de implementación ni de herramientas avanzadas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rapidez:&lt;/strong&gt; Si todo va bien, esta estrategia permite una transición rápida entre versiones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Familiaridad:&lt;/strong&gt; Al ser una de las estrategias más antiguas y básicas, muchos equipos están familiarizados con ella y pueden implementarla sin una curva de aprendizaje significativa.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Restricciones:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Riesgo de Fallos:&lt;/strong&gt; Cualquier error en la nueva versión afectará a todos los usuarios inmediatamente después del despliegue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiempo de Inactividad:&lt;/strong&gt; Es probable que los usuarios experimenten interrupciones durante el cambio de versión.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reversión Compleja:&lt;/strong&gt; Si algo sale mal, volver a la versión anterior puede ser difícil y tomar tiempo.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;La estrategia es ideal para proyectos pequeños que buscan agilidad y rapidez, donde los riesgos entre versiones y/o tiempo de inactividad son tolerables. Su adopción en el equipo de desarrollo es rápido, ya que no involucra pasos complicados y su implementación suele estar delegada al proveedor host del producto (por ejemplo, Railway, Heroku, Render, entre otros).&lt;/p&gt;

&lt;p&gt;Por proyectos pequeños, me refiero a aquellos que buscan explorar ideas o implementar funcionalidades emergentes, también conocidos como MVE o Experimento Mínimo Viable (Minimum-viable-experiment). Sin embargo, proyectos intencionados para productos como MVP o Producto Mínimo Viable (Minimum-viable-product), se recomiendan otras estrategias más apropiadas, ofreciendo mayor control y, minimizando los riesgos asociados por versiones y cambios de funcionalidades críticas o esenciales.&lt;/p&gt;

&lt;h3&gt;
  
  
  📈 &lt;strong&gt;Rolling&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ygaxzOl---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9l6tcin24vm9nq1a3ig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ygaxzOl---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9l6tcin24vm9nq1a3ig.png" alt="Rolling (@roremdev)" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta estrategia de despliegue, conocida también como despliegue gradual, implementa la nueva versión en fases, reemplazando poco a poco las instancias de la versión antigua hasta que toda la aplicación ha sido actualizada.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficios:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Minimización de Riesgos:&lt;/strong&gt; Al desplegar en fases, es posible identificar y rectificar errores tempranamente, protegiendo así a la mayoría de los usuarios de fallos potenciales.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disponibilidad Continua:&lt;/strong&gt; Al no actualizar todas las instancias a la vez, se mantiene la disponibilidad del servicio durante el proceso de despliegue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feedback Temprano:&lt;/strong&gt; Al recibir respuestas de los usuarios en las primeras fases, se pueden hacer ajustes rápidos antes del despliegue total.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Restricciones:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Complejidad:&lt;/strong&gt; Requiere de herramientas y procesos más elaborados para gestionar los despliegues graduales y para revertir los cambios si es necesario.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiempo:&lt;/strong&gt; Puede llevar más tiempo completar el despliegue total comparado con estrategias como Big-Bang.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;La estrategia Rolling es muy adecuada para proyectos de tamaño medio a grande, donde la continuidad del servicio y la minimización de riesgos son prioritarias. Es ideal cuando se busca mantener una alta disponibilidad del servicio y se dispone del tiempo y las herramientas necesarias para gestionar el despliegue gradual.&lt;/p&gt;

&lt;p&gt;Los equipos de desarrollo podrían necesitar un tiempo de adaptación y formación para implementar y gestionar correctamente esta estrategia, siendo particularmente útil en entornos donde la calidad del servicio es crucial, como en aplicaciones de comercio electrónico (E-Commerce) o plataformas de streaming (como Netflix, Spotify, etc.).&lt;/p&gt;

&lt;h3&gt;
  
  
  🔁 Blue-Green
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PDjA0-p8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1xo6w53qlexhyfe122is.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PDjA0-p8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1xo6w53qlexhyfe122is.png" alt="Blue-Green (@roremdev)" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Blue-Green es una estrategia de despliegue que implica tener dos entornos de producción paralelos: "Blue", que es la versión actualmente en uso, y "Green", donde se prepara la nueva versión. Una vez que la versión "Green" está lista y probada, se cambia el tráfico de usuarios al entorno "Green", haciendo que esta se convierta en la versión activa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficios:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cero Tiempo de Inactividad:&lt;/strong&gt; Al cambiar el tráfico entre los entornos, las actualizaciones pueden realizarse sin interrupciones para los usuarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gestión de Versiones:&lt;/strong&gt; Si se detectan problemas en el entorno "Green", se puede volver rápidamente al entorno "Blue". Y viceversa, antes de hacer el cambio, se puede probar la versión "Green" en un entorno que es idéntico al de producción.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Restricciones:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Recursos Duplicados:&lt;/strong&gt; Se requiere mantener y gestionar dos entornos de producción, lo que puede aumentar los costos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complejidad de Coordinación:&lt;/strong&gt; Asegurar que ambos entornos sean idénticos y sincronizar bases de datos u otros recursos compartidos puede ser un desafío.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Blue-Green es altamente recomendado para proyectos donde el tiempo es crucial y la reversión de cambios, en caliente, es vital. Es especialmente útil para aplicaciones críticas, como sistemas bancarios en línea, ofreciendo a los usuarios una experiencia fluida y sin interrupciones, incluso durante las actualizaciones más grandes y críticas.&lt;/p&gt;

&lt;p&gt;Para los equipos de desarrollo, esta estrategia requiere una comprensión clara de cómo gestionar y coordinar dos entornos paralelos. Es apropiado para organizaciones que pueden invertir en infraestructura adicional para mantener la alta disponibilidad y calidad del servicio.&lt;/p&gt;

&lt;h3&gt;
  
  
  🐥 Canary
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XQo-dbBi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vu30bxm7w8g46dlhc7f8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XQo-dbBi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vu30bxm7w8g46dlhc7f8.png" alt="Canary (@roremdev)" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La estrategia de despliegue Canary toma su nombre de la antigua práctica minera de llevar canarios a las minas para detectar la presencia de gases tóxicos. En el contexto de despliegue de software, implica lanzar la nueva versión inicialmente solo a un pequeño grupo de usuarios (el "canario") antes de desplegarla al conjunto total de usuarios. Esto permite evaluar y monitorizar el comportamiento y el rendimiento de la actualización en un entorno real y con una muestra real de usuarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficios:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Detección Temprana de Problemas:&lt;/strong&gt; Al desplegar primero a un grupo pequeño, los problemas potenciales pueden identificarse antes de que afecten a toda la base de usuarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feedback Rápido:&lt;/strong&gt; Se obtiene una respuesta rápida de los usuarios "canarios" sobre la nueva versión.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mitigación de Riesgos:&lt;/strong&gt; Reduce el impacto de posibles fallos, ya que solo afectaría a un subconjunto de usuarios.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Restricciones:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Selección de Usuarios:&lt;/strong&gt; Es esencial elegir adecuadamente al grupo "canario" para asegurarse de que sea representativo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gestión de Versiones:&lt;/strong&gt; Puede ser complicado gestionar varias versiones del software simultáneamente si los despliegues canarios se extienden por largos períodos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complejidad Adicional:&lt;/strong&gt; Requiere herramientas y procesos más avanzados para dirigir el tráfico de usuarios y monitorizar el despliegue.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Canary es ideal para proyectos que buscan minimizar riesgos y obtener un feedback rápido en entornos vivos. Beneficiándose en aquellas aplicaciones con una gran base de usuarios donde los fallos pueden tener un impacto significativo.&lt;/p&gt;

&lt;p&gt;Los equipos de desarrollo deben estar preparados para actuar rápidamente en función del feedback y las métricas obtenidas del grupo "canario". Por lo que generar módulos o sistemas de monitoreo mediante soluciones &lt;a href="https://dev.to/roremdev/melt-la-observabilidad-web-4h5h"&gt;MELT&lt;/a&gt;, son vitales para su éxito.&lt;/p&gt;

&lt;p&gt;Esta estrategia es muy popular entre las grandes plataformas o productos web, ya que conocen sus audiencias poseen un conocimiento transversal de su valor diferencial. Con ello en mente, la estrategia les permite probar nuevas características de manera simultánea e incluso, completamente aislada de regiones enteras de una población.&lt;/p&gt;

&lt;h3&gt;
  
  
  👁️‍🗨️ A/B Testing
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NJs4p6sU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r4g6yvdml5xcfbcdfq2b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NJs4p6sU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r4g6yvdml5xcfbcdfq2b.png" alt="A/B Testing (@roremdev)" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A/B Testing, o prueba dividida, es una estrategia de despliegue que implica lanzar simultáneamente dos o más versiones de un software o de una característica específica a diferentes segmentos de usuarios. Estas versiones son evaluadas en función de métricas específicas, como tasas de conversión, tiempo de permanencia en la página, entre otras, para determinar cuál de ellas es más efectiva en términos de rendimiento, usabilidad o cualquier otro criterio de éxito definido.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beneficios:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Decisiones Basadas en Datos:&lt;/strong&gt; Permite tomar decisiones sobre características o cambios basándose en datos reales de comportamiento del usuario.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimización Constante:&lt;/strong&gt; Facilita la mejora continua del software al probar constantemente nuevas ideas y soluciones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reducción de Riesgos:&lt;/strong&gt; Al lanzar nuevas características a segmentos pequeños y controlados de usuarios, se puede evaluar su impacto y aceptación antes de un despliegue total.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Restricciones:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Complejidad Analítica:&lt;/strong&gt; Requiere herramientas de análisis robustas y la capacidad de interpretar correctamente los resultados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gestión de Versiones:&lt;/strong&gt; Manejar múltiples versiones en paralelo puede ser un desafío técnico y logístico.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Factores Externos:&lt;/strong&gt; Los resultados del A/B Testing pueden verse afectados por factores externos, donde es crucial aislar y entender estos factores para interpretar correctamente los resultados.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A/B Testing es particularmente útil para plataformas y aplicaciones centradas en el usuario donde se busca optimizar la experiencia del usuario.&lt;/p&gt;

&lt;p&gt;Los equipos de desarrollo, marketing y de producto, suelen colaborar estrechamente en estas pruebas para garantizar que las métricas analizadas sean relevantes y que los resultados se interpreten adecuadamente. Al adoptar el A/B Testing, las organizaciones pueden asegurarse de que sus despliegues y actualizaciones estén alineados con las necesidades y preferencias reales de sus usuarios, lo que a su vez puede llevar a una mayor retención, satisfacción y conversión.&lt;/p&gt;




&lt;h3&gt;
  
  
  🍻 &lt;strong&gt;Conclusión&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;La entrega de software es un arte que va más allá de simplemente escribir código. Es una amalgama de prácticas, herramientas y, sobre todo, estrategias que aseguran que cada lanzamiento sea fluido, eficiente y, lo más importante, efectivo. Como hemos visto, existen múltiples estrategias de despliegue, y cada una tiene sus fortalezas y contextos ideales de aplicación. Lo más crucial es entender profundamente el proyecto que estás desarrollando, sus necesidades y su audiencia. Eso te permitirá elegir la estrategia que mejor se alinee con tus objetivos.&lt;/p&gt;

&lt;p&gt;La Ingeniería de Software, constantemente te reta a emplear nuevas estrategias, a experimentar con ellas y a combinarlas si es necesario. No hay una talla única en el mundo; lo que funciona para un proyecto podría no ser adecuado para otro.&lt;/p&gt;

&lt;p&gt;Explora, pregunta y amplia tu conocimiento para que te beneficies como profesional y amplíes tu cartera de éxitos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Encuentra tu equilibrio en el mismo movimiento. Camina hacia el futuro.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>GitOps</title>
      <dc:creator>Emmanuel Rodríguez</dc:creator>
      <pubDate>Mon, 03 Oct 2022 16:27:26 +0000</pubDate>
      <link>https://dev.to/roremdev/gitops-go7</link>
      <guid>https://dev.to/roremdev/gitops-go7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Bfh5cLcP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/czsferm2phafh86ss60o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Bfh5cLcP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/czsferm2phafh86ss60o.png" alt="gitops" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;✨ Concepto clave&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;GitOps&lt;/strong&gt; es una práctica donde los equipos mantienen sus procesos DevOps (Integración Continua y Despliegue Continuo), en un único recurso de verdad, Git.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Vistazo General
&lt;/h2&gt;

&lt;p&gt;Como colaboradores de algún proyecto de software, muy posiblemente estén familiarizados con el uso de Git.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Un proyecto de software es un jardín, que necesita ser atendido y cuidado.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El objetivo de GitOps no solamente es el resultado de un DevOps coordinado, sino de aquellas etapas de integración, fases de revisión de código y estado de salud de nuestro proyecto en curso.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flujo de Trabajo (Workflow)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;✨ Concepto clave&lt;/strong&gt;&lt;br&gt;
Me refiero al &lt;strong&gt;flujo de trabajo&lt;/strong&gt;, a aquello que nos permite mover una aplicación en desarrollo a producción, el ciclo de vida de las aplicaciones y las configuraciones que caracterizan a nuestra infraestructura.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cada industria conoce sobre lo que es adecuado y/o las mejores prácticas concernientes a su mercado. En el software, podemos encontrar muchas estrategias, algunas veces llamadas patrones y/o frameworks, que expresan reglas como estándar, dejándolas a su interpretación e implementación.&lt;/p&gt;

&lt;p&gt;Por ello, te comparto algunas relacionadas al flujo de trabajo mediante Git.&lt;/p&gt;

&lt;h3&gt;
  
  
  Git Flow Branch Strategy
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ℹ️ Definición&lt;/strong&gt;&lt;br&gt;
En &lt;strong&gt;Branch Strategy&lt;/strong&gt;, la idea principal es aislar nuestro trabajo en diferentes tipos de ramas que generalmente entregan una cierta versión de nuestro producto.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Como colaboradores de proyectos en software, seguramente hemos trabajado con la estrategia de flujo mediante ramas, las cuales generalmente configuramos como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Master&lt;/strong&gt;
Cuyas alternativas pueden ser &lt;strong&gt;&lt;em&gt;Production&lt;/em&gt;&lt;/strong&gt; o &lt;strong&gt;&lt;em&gt;Main&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release&lt;/strong&gt;
Cuyas alternativas podemos tener &lt;strong&gt;&lt;em&gt;Development&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Testing&lt;/em&gt;&lt;/strong&gt; o &lt;strong&gt;&lt;em&gt;Staging&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action&lt;/strong&gt;
Cuyas alternativas podemos tener &lt;strong&gt;&lt;em&gt;Integration&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Hotfix&lt;/em&gt;&lt;/strong&gt; o &lt;strong&gt;&lt;em&gt;feature&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E0x2N1In--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f4nbynheqvnbtd66yyiv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E0x2N1In--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f4nbynheqvnbtd66yyiv.png" alt="branch_strategy" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Los beneficios que ganamos serían:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Al tener diversos tipos de ramas (principales o de apoyo), hacen que sea fácil e intuitivo organizar nuestro trabajo.&lt;/li&gt;
&lt;li&gt;Del efecto anterior, se puede proveer de un proceso de desarrollo de pruebas eficientes.&lt;/li&gt;
&lt;li&gt;Se puede soporta múltiples versiones de código.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Los retos, por su parte, dependerán de:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dependiendo de la complejidad, a veces de la madurez por concepción del producto o proyecto, podría complicar el proceso no lineal de desarrollo por falta de etiquetas de referencias.&lt;/li&gt;
&lt;li&gt;Debido al poco control o coordinación entre los colaboradores, el historial de commits podrá limitar la identificación del cambio, desde la descripción hasta la atomicidad de cambios por registro.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Git Flow Feature Strategy
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ℹ️ Definición&lt;/strong&gt;&lt;br&gt;
En &lt;strong&gt;Feature Strategy&lt;/strong&gt;, nuestras ramas principales contienen versiones finales que fueron integradas y/o desplegadas; en otras ramas (&lt;strong&gt;features&lt;/strong&gt;), tendremos acciones que se desplegarán y fusionarán a los entornos y ramas principales, respectivamente.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Como colaboradores, utilizamos esta estrategia de trabajo para liberar características, despreocupándonos del entorno a desplegar ya que la misma rama posee la capacidad de despliegue al entorno personalizado (&lt;strong&gt;feat.1.0-dashboard&lt;/strong&gt;) o como de release (&lt;strong&gt;production&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aR2u98xV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l6lhbhliqo68mkhc5dyq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aR2u98xV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l6lhbhliqo68mkhc5dyq.png" alt="feature_strategy" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como beneficios, tendríamos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Al aislar la característica en una rama, no mezclamos los historiales de origen, evitando el efecto dominó entre ramas.&lt;/li&gt;
&lt;li&gt;Con cada modificación, se puede desplegar, detalladamente, características al entorno deseado.&lt;/li&gt;
&lt;li&gt;Al ser una estrategia independiente entre características, en proyectos basados en sprints, se podrá agrupar y visualizar versiones y sus respectivos efectos individuales.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Los retos, por su parte, dependerán de:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Una estrategia madura en el versionado del código, por ejemplo Semantic-Version sobre Git.&lt;/li&gt;
&lt;li&gt;La falta de sincronización entre ramas origen, dejan sin comunicación entre características o dependencias relacionadas.&lt;/li&gt;
&lt;li&gt;Se requiere madurez en DevOps para personalizar tanto el despliegue como destrucción de entornos.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Beneficios de GitOps
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;✨ Concepto clave&lt;/strong&gt;&lt;br&gt;
Estamos de acuerdo que, cada cambio modificará el estado de la versión en nuestro repositorio, los cuales, una vez aprobados, se mezclaran a un destino que eventualmente marcará una nueva referencia de estado.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Experiencia de desarrollo (Development Experience XD)

&lt;ul&gt;
&lt;li&gt;Interiorice el proceso de desarrollo en su equipo u organización, vinculando a los colaboradores con herramientas familiares como Git, permitiendo su adopción de manera individual.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Resiliencia y tolerancia a errores (Site Reliability Engineering SRE)

&lt;ul&gt;
&lt;li&gt;Si su entorno está inactivo debido a la última implementación, simplemente puede usar Git para volver a la versión anterior.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Seguimiento de procesos (Issues Tracking)

&lt;ul&gt;
&lt;li&gt;Dado que todo tiene que suceder a través del repositorio de Git, todos los cambios en el sistema son completamente accesibles a través del registro de Git. Es fácil ver quién, cuándo y, exactamente, qué cambió de una versión a otra.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DevOps unificado

&lt;ul&gt;
&lt;li&gt;Con GitOps, las organizaciones pueden administrar toda su infraestructura y el ciclo de vida de desarrollo de aplicaciones utilizando una única herramienta unificada. Esto permite una mayor colaboración y coordinación entre los equipos, dando como resultado que haya menos errores y una pronta resolución de problemas más rápida.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;GitOps no es más que un sinónimo de automatización y registro, sus derivaciones hermanas pueden ser ChatOps e IssueOps, los cuales complementa nuestro flujo de trabajo y potencian nuestro ciclo de vida de software. Es por que el uso de una herramienta dependerá de la intención que conlleva en su implementación.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>git</category>
      <category>devops</category>
    </item>
    <item>
      <title>Contenedores y la nube</title>
      <dc:creator>Emmanuel Rodríguez</dc:creator>
      <pubDate>Mon, 15 Aug 2022 15:47:18 +0000</pubDate>
      <link>https://dev.to/roremdev/contenedores-y-la-nube-3je9</link>
      <guid>https://dev.to/roremdev/contenedores-y-la-nube-3je9</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VSLA2HBn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmws8gv0kf5h5agsm03v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VSLA2HBn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmws8gv0kf5h5agsm03v.png" alt="cloud" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✨ &lt;strong&gt;Concepto clave&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Los &lt;strong&gt;contenedores&lt;/strong&gt; son recursos informáticos encapsulables, transportables y repetibles que modernizan los ambientes de ejecución.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Antecedentes
&lt;/h3&gt;

&lt;p&gt;Los &lt;strong&gt;contenedores&lt;/strong&gt; surgieron como una tecnología que buscaba segmentar un sistema, compactable en subsistemas o procesos. Estas últimas, se pensaban como entornos seguros, administrados y compartibles entre los distintos usuarios dentro o fuera de una empresa.&lt;/p&gt;

&lt;p&gt;En 2008 surge Docker, un servicio del cual incorporaría una serie de conceptos y herramientas nuevas, como por ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Una interfaz de línea de comandos sencilla para ejecutar y diseñar imágenes nuevas en capas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Un daemon de servidor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Una biblioteca de imágenes en contenedores preestablecidas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;El concepto de un servidor de registros.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Es por ello que los &lt;strong&gt;contenedores&lt;/strong&gt; son considerados como una de las tecnologías revolucionarias en la ingeniería moderna, permitiendo que cada vez se combinen más tecnologías con mayor rapidez y menor complicación.&lt;/p&gt;

&lt;h3&gt;
  
  
  Docker, el inicio de las aplicaciones modernas
&lt;/h3&gt;

&lt;p&gt;Con &lt;strong&gt;Docker&lt;/strong&gt;, es posible automatizar el despliegue de aplicaciones dentro de contenedores de software, generando una abstracción del mismo y, al mismo tiempo, una automatización de virtualización distribuido llamado microservicios.&lt;/p&gt;

&lt;p&gt;Lo que hizo que &lt;strong&gt;Docker&lt;/strong&gt; fuera un recurso significativo en el desarrollo de cualquier proyecto, radica en el aislamiento de recursos primarios del kernel o corazón de una aplicación, permitiendo que ya sea independiente (llamado &lt;strong&gt;contenedor&lt;/strong&gt;) o en conjunto (llamado &lt;strong&gt;servicios&lt;/strong&gt;), puedan armonizar un entorno de aplicación.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;❓ &lt;strong&gt;Debate&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Actualmente, los proveedores de cómputo en la nube, como GCP, permiten el uso de contenedores.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Sin embargo, ¿sabes cuál es la nube que aporta, de manera considerable, al ecosistema de contenedores?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  El surgimiento de una era computacional
&lt;/h3&gt;

&lt;p&gt;A partir del 2010, las nubes empezaron a popularizarse como proveedores de servicios y de tecnología clave para la competitividad que se veía por venir.&lt;/p&gt;

&lt;p&gt;El creciente número de requerimientos por parte de una empresa que pretendía ser competitiva dentro de un mercado súper acelerad,  dependía de aquello que dejaría de ser responsable de la misma, es decir, delegar ciertas responsabilidad &lt;em&gt;"Made in House"&lt;/em&gt; (como la administración de servidores), a proveedores externos a la empresa, como lo son las nubes de cómputo.&lt;/p&gt;

&lt;p&gt;De esta necesidad, surgieron nuevas arquitecturas, enfoques descentralizados, entre muchos otros nuevos conceptos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Si de algo tenemos la certeza, es de que nunca sabremos lo que vamos a necesitar durante el desarrollo de un proyecto.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  La nube, proveedora de servicios
&lt;/h3&gt;

&lt;p&gt;La nube no es más que un sinónimo del uso, para obtener beneficios sobre la infraestructura como pago por uso (similar a una renta), liberando el monedero para inversión en otras dependencias.&lt;/p&gt;

&lt;p&gt;Dependiendo de su ámbito, considere 3 tipos de implementaciones de computo en la nube (variando entre autores):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nube Privada.&lt;/strong&gt; La cual hace referencia a aquellos recursos que se usan exclusivamente por una empresa u organización, abstraída en centro de datos internos (intranet) o en la nube en sí.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nube Pública.&lt;/strong&gt; La cual hace referencia a aquellos recursos de propiedad del proveedor externo, administrador por un tercero.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nube híbrida.&lt;/strong&gt; La cual hace referencia a un modelo de infraestructura donde son combinadas las 2 anteriores, conectando ambas abstracciones de recursos.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si bien, la computación de la nube muestra rumbos claros de modernización, no siempre es aplicable dichos efectos en nuestra arquitectura en cuestión.&lt;/p&gt;

&lt;p&gt;Por ello, se sugiere proyectar una planificación de migración, generalizando y segmentando nuestro monolito en aquellos servicios y/o módulos (generalmente como procesos temporales de acción), con la intención de desarrollar microservicios y serverless computacionales.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusión
&lt;/h3&gt;

&lt;p&gt;La nube es un tecnología que se sigue solicitando día con día, requiriendo que profesionales del campo sean más versátiles en cuanto a la implementación de múltiples recursos informáticos.&lt;/p&gt;

&lt;p&gt;Saber por dónde empezar, es una tarea compleja por la cantidad de información que encaras el primer día. Por suerte, &lt;em&gt;"todos los caminos llegan a Roma"&lt;/em&gt;, así que inicia familiarizándote con la terminología, realizando pequeñas prácticas que te retornen confianza con cada éxito en tu largo camino por descubrir.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>docker</category>
    </item>
    <item>
      <title>MELT: La observabilidad web</title>
      <dc:creator>Emmanuel Rodríguez</dc:creator>
      <pubDate>Tue, 26 Jul 2022 16:32:00 +0000</pubDate>
      <link>https://dev.to/roremdev/melt-la-observabilidad-web-4h5h</link>
      <guid>https://dev.to/roremdev/melt-la-observabilidad-web-4h5h</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;✨ &lt;strong&gt;Concepto clave&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;La &lt;strong&gt;Observabilidad&lt;/strong&gt; describe a aquello de lo que se puede entender y ocurrir dentro de un sistema, utilizando el marco tecnológico METL.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Antecedentes
&lt;/h3&gt;

&lt;p&gt;Saber el mejor rumbo para el desarrollo de una aplicación, es un tema de conversación para cualquier emprendimiento de un proyecto, inclusive, cuando se ha finalizado un MVP (Producto Mínimo Viable).&lt;/p&gt;

&lt;p&gt;Antes, al proceso de soporte y mejoramiento del producto, era responsabilidad de una persona llamada &lt;strong&gt;Web master&lt;/strong&gt;, ahora &lt;strong&gt;Full Stack&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;De la misma forma, los roles y culturas organizaciones han adoptado o modernizados sus prácticas tanto de desarrollo como de despliegue, llamándolas &lt;strong&gt;DevOps&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ℹ️ &lt;strong&gt;Definición&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;DevOps&lt;/strong&gt; es conocido como cultura organizacional, área o rol de profesión, así como también un proceso moderno de integración y despliegue.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El nacimiento de esta vertiente de desarrollo de soluciones, surge por el hecho mismo de la automatización.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Si el software nació para automatizar, entonces automaticemos nuestro proceso de desarrollo."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Identificación global
&lt;/h3&gt;

&lt;p&gt;Si bien, DevOps es una corriente versátil que colabora en el proceso de desarrollo, no quita la existencia de varios puntos ciegos, es decir, la aparición de anomalías, defectos, fallos y errores.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ℹ️ &lt;strong&gt;Definición&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Existen 4 grandes eventos ante una funcionalidad no esperada:&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- Anomalía, la descripción de un comportamiento no esperado.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- Defecto, situación que se puede reproducir por su origen replicable.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- Fallo, incapacidad del sistema dentro de los márgenes conocidos.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- Error, acción humana que genera el desperfecto en el sistema.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Digamos por ejemplo:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Contamos con un despertador que todas las mañanas a las 9 AM suena su alarma, pero desde hace unos días ya no lo hace, eso es una &lt;strong&gt;anomalía&lt;/strong&gt;, en caso de que hubiera llegado con una manecilla rota, seria &lt;strong&gt;defecto&lt;/strong&gt;, si necesita luz para funcionar que, por una tormenta, se nos va la luz y ya no sirve, es &lt;strong&gt;fallo&lt;/strong&gt; y por último si utilizas tu despertador para otro fin, es un &lt;strong&gt;error&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;De lo anterior, la observabilidad nos responde y pone en contexto de nuestro sistema y saber, a mediano plazo, los siguientes pasos a desarrollar para mejorar su competitividad y/o uso.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tendencia y contexto actual
&lt;/h3&gt;

&lt;p&gt;Los sistemas modernos se transforman rápidamente día a día, dentro de contextos complejos que, progresivamente, se van distorsionando y mutando las formas de probar y de aislar sus casos de usos, características, etc.&lt;/p&gt;

&lt;p&gt;Antes, las soluciones de software se presentaban con detalles, del modo y mecanismo para probarlas, teniendo la certeza del origen y efecto, cuando se presentaban fallas.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Construir "mejor" software, mediante prácticas de desarrollo moderno, no es la única solución.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nada es perfecto, aparecen nuevos defectos, la infraestructura esta caída y/o desactualizada, surgen errores que afectan al comportamiento final con el usuario; delegando la responsabilidad a los desarrolladores con crear software que sea más fácil de probar y arreglar, dejando ambigüedades e incertidumbres para liberar características o soluciones, urgentes para encarar un mercado altamente competitivo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Los 4 componentes fundamentales de la observability o MELT
&lt;/h3&gt;

&lt;p&gt;Actualmente, con la integración de múltiples servicios y modernizando los equipos de desarrollo mediante la especialización individual, podemos generar una observabilidad a través de 4 componentes, integrándolos individualmente o en conjunto.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✨ &lt;strong&gt;Concepto clave&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Las &lt;strong&gt;métricas&lt;/strong&gt; son medidas numéricas que pueden incluir un estado numérico, en un momento en el tiempo o agregaciones como promedios, totales, etc.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yNguthgl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.document360.io/da52b302-22aa-4a71-9908-ba18e68ffee7/Images/Documentation/image%2528533%2529.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yNguthgl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.document360.io/da52b302-22aa-4a71-9908-ba18e68ffee7/Images/Documentation/image%2528533%2529.png" alt="metric" width="800" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Se tienen un conjunto de valores calculados, los cuales representan diferentes métricas que comparten nombre, tiempo y valor.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Deseamos rastrear tanto el valor total de la compra como el valor promedio de la compra.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Con ello, podemos realizar ciertas preguntas:&lt;/em&gt;&lt;br&gt;
&lt;em&gt;¿Cuáles fueron mis ventas durante un período de tiempo en específico?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Para este registro, hemos perdido algunos detalles, ya que no sabemos cuáles fueron las tres compras específicas, ni tenemos acceso a sus valores individuales.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✨ &lt;strong&gt;Concepto clave&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Un &lt;strong&gt;evento&lt;/strong&gt; se puede definir como una acción discreta que sucede en un determinado momento.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mxWpjFAE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.document360.io/da52b302-22aa-4a71-9908-ba18e68ffee7/Images/Documentation/image%2528532%2529.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mxWpjFAE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.document360.io/da52b302-22aa-4a71-9908-ba18e68ffee7/Images/Documentation/image%2528532%2529.png" alt="event" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Se tienen un conjunto un conjunto de eventos de compras, de los cuales se ha registrado la compra de diferentes productos con un determinado precio o valor.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Con ello, podemos realizar preguntas como:&lt;/em&gt;&lt;br&gt;
&lt;em&gt;¿De cuánto fue la ganancia por ventas?&lt;/em&gt;&lt;br&gt;
&lt;em&gt;¿Cuál fue la preferencia de pago?&lt;/em&gt;&lt;br&gt;
&lt;em&gt;¿Cuál fue el promedio de selección por producto?&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✨ &lt;strong&gt;Concepto clave&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Los &lt;strong&gt;logs&lt;/strong&gt; son un repositorio de datos que, en su forma más fundamental, son sólo líneas de texto que un sistema produce.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xBL1GZAI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.document360.io/da52b302-22aa-4a71-9908-ba18e68ffee7/Images/Documentation/image%2528534%2529.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xBL1GZAI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.document360.io/da52b302-22aa-4a71-9908-ba18e68ffee7/Images/Documentation/image%2528534%2529.png" alt="event" width="800" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;El caso de uso más común para los registros es obtener un resumen detallado, paso a paso, de lo que sucedió en un momento determinado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9qSwPWx---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.document360.io/da52b302-22aa-4a71-9908-ba18e68ffee7/Images/Documentation/Screen%2520Shot%25202022-07-22%2520at%252020.39.17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9qSwPWx---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.document360.io/da52b302-22aa-4a71-9908-ba18e68ffee7/Images/Documentation/Screen%2520Shot%25202022-07-22%2520at%252020.39.17.png" alt="log" width="800" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A partir de esto, sabemos que se intentó y falló una compra donde podremos replicar el imprevisto, de manera específica.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusión
&lt;/h3&gt;

&lt;p&gt;Como leyó, con MELT es posible obtener un sistema observable que nos permite visualizar y analizar a lo largo de las diferentes capas de una aplicación.&lt;/p&gt;

&lt;p&gt;Se dice que un sistema es llamado &lt;strong&gt;Full Stack Observable&lt;/strong&gt;, cuando aplica MELT tanto al frontend como al backend, como al proceso de DevOps como el de infraestructura y, con ello, tener la certeza de aquellas anomalías, defectos, fallos y errores.&lt;/p&gt;

&lt;p&gt;Por último, no olvide que existen herramientas que nos permiten adoptar METL sin complicaciones de instalación (&lt;a href="https://analytics.google.com/"&gt;Google Analytics&lt;/a&gt;, &lt;a href="https://www.hotjar.com/"&gt;Hotjar&lt;/a&gt;, &lt;a href="https://newrelic.com/"&gt;New Relic&lt;/a&gt;, invitando a utilizar cada una y aprender de ella como una extensión de su stack tecnológico.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
