<?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>microservicios Archives - Software Evolutivo</title>
	<atom:link href="https://softwareevolutivo.com.ec/tag/microservicios/feed/" rel="self" type="application/rss+xml" />
	<link>https://softwareevolutivo.com.ec/tag/microservicios/</link>
	<description>Consultora de Software Empresarial</description>
	<lastBuildDate>Thu, 22 Feb 2024 16:15:00 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://softwareevolutivo.com.ec/wp-content/uploads/2024/03/cropped-Perfil-Redes-Iso-32x32.png</url>
	<title>microservicios Archives - Software Evolutivo</title>
	<link>https://softwareevolutivo.com.ec/tag/microservicios/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Descubriendo a Quarkus: ¿Que es, Características y por qué utilizarlo?</title>
		<link>https://softwareevolutivo.com.ec/descubriendo-a-quarkus/</link>
					<comments>https://softwareevolutivo.com.ec/descubriendo-a-quarkus/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Diaz]]></dc:creator>
		<pubDate>Thu, 23 Mar 2023 15:43:36 +0000</pubDate>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Infrarestructura de Software]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Tendencias]]></category>
		<category><![CDATA[Aplicaciones nativas de la nube.]]></category>
		<category><![CDATA[Java & Kotlin Framework]]></category>
		<category><![CDATA[microservicios]]></category>
		<category><![CDATA[Quarkus]]></category>
		<guid isPermaLink="false">https://softwareevolutivo.com.ec/?p=7074</guid>

					<description><![CDATA[<p>En la actualidad, Quarkus representa la pila tecnológica de Java Nativa de Kubernetes (una colección de herramientas, marcos, lenguajes de programación y bibliotecas) diseñada para GraalVM y OpenJDK HotSpot (Máquinas Virtuales de Java). </p>
<p>The post <a href="https://softwareevolutivo.com.ec/descubriendo-a-quarkus/">Descubriendo a Quarkus: ¿Que es, Características y por qué utilizarlo?</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="7074" class="elementor elementor-7074">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-e0e6db6 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e0e6db6" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9de646c" data-id="9de646c" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap">
							</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-2ba9e87 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="2ba9e87" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b753beb" data-id="b753beb" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-8384d36 elementor-widget elementor-widget-text-editor" data-id="8384d36" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p dir="ltr" style="line-height: 1.38;text-align: center;margin-top: 0pt;margin-bottom: 3pt"><span style="font-size: 23pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Descubriendo a Quarkus: ¿Que es, Características y por qué utilizarlo?</span></p><p><b style="font-weight: normal"> </b></p><p dir="ltr" style="line-height: 1.38;text-align: center;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><span style="border: none;overflow: hidden;width: 225px;height: 225px"><img fetchpriority="high" decoding="async" style="margin-left: 0px;margin-top: 0px" src="https://lh6.googleusercontent.com/gkV80UWiso2OXVNhJfMbHlkFVS4TAgb0S2gBsM5H19vp_2DTD83hWCXvpRtP1yJ0QtKzAtq37Fz3ojdIbhmmZYsm6-_7f2iKUfLpJsZcbuJJqo83hDNwgI2I0dc-8v9uY4lk5PB3VdnJyR4-eDlAkEQ" width="225" height="225" /></span></span></p><p><b style="font-weight: normal"><br /><br /></b></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En la actualidad, Quarkus representa la pila tecnológica de Java Nativa de Kubernetes (una colección de herramientas, marcos, lenguajes de programación y bibliotecas) diseñada para GraalVM y OpenJDK HotSpot (Máquinas Virtuales de Java). </span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Los desarrolladores pueden crear aplicaciones con el mismo Stack (Estructura de Datos) y microservicios más ligeros, rápidos y escalables gracias a las mejores bibliotecas y estándares de Java utilizados en su creación. Esta herramienta permite a los desarrolladores escribir código en Java/Kotlin mientras proporciona funciones de gestión de memoria y escalabilidad. Por lo tanto, &#8220;Quarkus&#8221; ayuda a los desarrolladores a trabajar de manera proactiva y eficiente si buscan una forma eficiente de desarrollar una determinada aplicación o microservicio Java, ya que es una de las mejores opciones disponibles.</span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Quarkus es más que un proyecto de código abierto presentado por Red Hat (Que conquistó a la comunidad Java y el primer release fué presentado en el 2019), por el hecho de que combina la productividad y la alegría del desarrollador (similar a Node.js), con la velocidad y rendimiento de GO, puesto que aquello le permite a los desarrolladores Java crear soluciones tecnológicas y arquitecturas modernas futuristas. </span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Turețchi (2022) muestra que Quarkus es una pila de Java nativa para la nube, basada en contenedores y diseñada para mejorar la productividad de los desarrolladores, reducir la huella de memoria de las aplicaciones y microservicios Java. Esta herramienta brinda a los desarrolladores una experiencia de tiempo de ejecución unificada y liviana mediante el uso de GraalVM, HotSpot y otros lenguajes como Kotlin, lo que permite el desarrollo eficiente de aplicaciones modernas nativas de la nube, con un enfoque en la escalabilidad y la gestión de la memoria. En consecuencia, Quarkus, como parte de un conjunto de herramientas tecnológicas, facilita la creación rápida de servicios modernos nativos en la nube.</span></p><h1 dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 20pt;margin-bottom: 6pt"><span style="font-size: 19pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></h1><h1 dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 20pt;margin-bottom: 6pt"><span style="font-size: 19pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Aplicaciones de Quarkus y por qué es actualmente el marco más popular</span></h1><div><span style="font-size: 19pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></div><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Quarkus es uno de los marcos de desarrollo nativos en la nube más populares en la industria tecnológica debido a sus características notables. Ofrece un tiempo de arranque rápido, una pequeña huella de memoria y una gestión escalable de la memoria. Por esta razón, el marco Quarkus con Kotlin es ampliamente utilizado en la industria. Su capacidad para reducir los tiempos de desarrollo también ayuda a mantener un alto rendimiento con servidores y redes de baja gama.</span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Cabe recalcar que, todos estos elementos claves, inciden en la creación  de aplicaciones con un alto grado de rapidez/eficiencia, ya que se pueden implementar y escalar fácilmente en varias arquitecturas de la nube. </span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Con las capacidades de Quarkus, las organizaciones ahora pueden desarrollar servicios modernos con mayor velocidad y eficiencia que nunca, y usando Java o Kotlin proporciona una experiencia de desarrollo fluida con un modelo de programación reactivo moderno.</span></p><p><b style="font-weight: normal"> </b></p><h1 dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 20pt;margin-bottom: 6pt"><span style="font-size: 19pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Arquitectura Empresarial Tradicional vs. Arquitectura Contenerizada.</span></h1><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En Quarkus, puedes desarrollar aplicaciones Java y ejecutarlas directamente en el sistema operativo subyacente sin necesidad de una máquina virtual de Java intermedia. Esto reduce significativamente el tiempo de ejecución, el consumo de memoria y otros recursos, lo que se traduce en una ejecución más eficiente y rápida de la aplicación. Quarkus lleva poco más de tres años en el mercado y ofrece una propuesta de valor para la creación de aplicaciones Java de última generación. Además, proporciona arquitecturas escalables para ejecutar aplicaciones Java y Serverless en la nube.</span></p><p><b style="font-weight: normal"> </b></p><p dir="ltr" style="line-height: 1.38;margin-top: 0pt;margin-bottom: 16pt"><span style="font-size: 15pt;font-family: Arial;color: #666666;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Arquitectura Tradicional</span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En la arquitectura tradicional, el primer nivel consta del hardware esencial para ejecutar el segundo nivel, que es el sistema operativo, como por ejemplo una Mac OS o Linux. En el tercer nivel, se requería la instalación de la popular Máquina Virtual de Java (JVM), mientras que en el último nivel, comúnmente utilizado en entornos empresariales, se instalaba un servidor de aplicaciones. Para ello, era necesario contar con una máquina virtual de Java capaz de comunicarse con el sistema operativo subyacente y traducir toda la aplicación al sistema operativo. Esta arquitectura era común en empresas, pero con el tiempo ha dejado de ser una buena práctica debido a sus implicaciones en el desarrollo, la agilidad y la complejidad en su mantenimiento. Actualmente, existen otras arquitecturas que ofrecen soluciones más ligeras y eficientes.</span></p><p dir="ltr" style="line-height: 1.38;text-align: center;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><span style="border: none;overflow: hidden;width: 308px;height: 321px"><img decoding="async" style="margin-left: -10.474049996130287px;margin-top: 0px" src="https://lh3.googleusercontent.com/ZJBtiVJmQVYJLQ0r6p1AB3b4Vaq_yvPbx-kYxcyFW6GxzCpBeBHyfo9EK1dKtX8xSSYkKdLPYzanN7h1hUSht4lGwOYqVeELHOnybCQyALhpwzIyCMB1dhdK3o8shTFzqwsfumnDxksGsf0Z6kATcn4" width="334.0261041431586" height="362.72693754855516" /></span></span></p><p dir="ltr" style="line-height: 1.38;text-align: center;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Figura 1: Arquitectura Java Tradicional</span></p><p><b style="font-weight: normal"> </b></p><p dir="ltr" style="line-height: 1.38;margin-top: 0pt;margin-bottom: 16pt"><span style="font-size: 15pt;font-family: Arial;color: #666666;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Arquitectura Contenerizadas.</span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En la actualidad, la arquitectura contenerizada se ha vuelto cada vez más popular gracias a la presencia de nuevas tecnologías en el mercado. Entre ellas, la tecnología Docker (Si te interesa, en un artículo anterior compartimos los </span><a style="text-decoration: none" href="https://softwareevolutivo.com.ec/docker-primeros-pasos/"><span style="font-size: 12pt;font-family: Arial;color: #1155cc;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: underline;vertical-align: baseline">Primeros pasos en Docker.</span></a><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">) ha tomado un gran protagonismo en la mayoría de las empresas. Docker nos permite construir y empaquetar aplicaciones de forma portable, lo que significa que pueden ejecutarse en diferentes sistemas operativos y entornos sin necesidad de compilar la aplicación para un sistema operativo en particular. En esencia, Docker realiza una tarea similar a la que la máquina virtual de Java realizaba, pero aplicable a cualquier tipo de aplicación.</span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En la arquitectura contenerizada, el primer nivel es el hardware, seguido por el sistema operativo, que puede ser cualquiera que tenga la capacidad de ejecutar contenedores. En el siguiente nivel, se debe instalar Docker para poder colocar nuestras aplicaciones en contenedores y ejecutarlas. Gracias a esta arquitectura, podemos tener diferentes versiones de aplicaciones sin que esto suponga un problema, ya que cada una se ejecuta en un contenedor independiente. Esto nos brinda una ventaja significativa en términos de mantenimiento y evita conflictos entre versiones de aplicativos.</span></p><p><b style="font-weight: normal"> </b></p><p dir="ltr" style="line-height: 1.38;text-align: center;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><span style="border: none;overflow: hidden;width: 321px;height: 333px"><img decoding="async" style="margin-left: 0px;margin-top: 0px" src="https://lh6.googleusercontent.com/Kz3MHw-1B25dIW4mcqnLwgYUP7Z1auXI4zZIn9Tw0Tz26gNsOYf06zw1-CYwwi6KQKhQHJVThCiFNErCaSL25sIcma7BQig69xlzFnmc8AIHAXoPXaeJ6AuUT8aMCO7Z2SHaaTSZ7tF1hD7-w4y3New" width="321" height="333" /></span></span></p><p dir="ltr" style="line-height: 1.38;text-align: center;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Figura 2: Arquitectura Contenerizadas</span></p><p><b style="font-weight: normal"> </b></p><p dir="ltr" style="line-height: 1.38;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Quarkus representa una mejora significativa en la arquitectura contenerizada al eliminar la necesidad de tener una JVM en cada contenedor para la ejecución de nuestras aplicaciones. Esto permite un despliegue más rápido y una menor utilización de recursos, lo que se traduce en una mayor eficiencia y ahorro de costos. </span></p><p><b style="font-weight: normal"> </b></p><p dir="ltr" style="line-height: 1.38;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 19pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Superpoderes de Quarkus: Gestión de Memoria y Escalabilidad</span></p><p dir="ltr" style="line-height: 1.38;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 19pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Los desarrolladores pueden utilizar Quarkus, un marco Java que les brinda las herramientas necesarias para administrar la memoria de manera efectiva y escalar sus aplicaciones. Quarkus cuenta con una variedad de herramientas de optimización de memoria, como administración de memoria dinámica, recolección de elementos no utilizados y dimensionamiento de almacenamiento dinámico. Además, Quarkus proporciona soluciones de escalabilidad para aplicaciones que necesitan escalar rápidamente hacia arriba o hacia abajo, a través de herramientas de escalabilidad como orquestación de contenedores, escalado automático y equilibrio de carga. Estas características permiten a los desarrolladores asegurarse de que sus aplicaciones puedan manejar grandes cantidades de tráfico sin problemas de rendimiento. Con la administración de memoria dinámica de Quarkus, los desarrolladores pueden realizar cambios en sus aplicaciones sobre la marcha sin necesidad de reiniciar la aplicación, lo que les permite probar rápidamente los cambios y optimizar el uso de la memoria. Es importante destacar que la variedad de herramientas de escalabilidad permite la escalabilidad horizontal, lo que permite a las aplicaciones manejar fácilmente una mayor carga de usuarios.</span></p><p><b style="font-weight: normal"> </b></p><h1 dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 20pt;margin-bottom: 6pt"><span style="font-size: 19pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Características y ventajas de Quarkus sobre los marcos tradicionales de Java</span></h1><div><span style="font-size: 19pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></div><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Quarkus es un marco independiente del tiempo de ejecución diseñado para proporcionar una forma eficiente y rentable de desarrollar aplicaciones nativas de la nube. Ofrece una gestión inteligente de la memoria y herramientas que facilitan a los desarrolladores la creación de aplicaciones con menos recursos y tiempo de arranque más rápidos que los marcos de Java tradicionales, lo que permite que las aplicaciones sean escalables de forma rápida y eficiente. Además, Quarkus tiene ventajas sobre los marcos de Java tradicionales en cuanto a la gestión inteligente de la memoria, la escalabilidad y el rendimiento mejorado, y brinda a los desarrolladores la capacidad de escribir código en cualquier idioma que elijan e implementarlo como una aplicación en contenedores, lo que lo convierte en una excelente opción para aquellos que buscan aprovechar los beneficios de la computación en la nube manteniendo el control sobre sus aplicaciones.</span></p><p><span style="background-color: transparent;color: #000000;font-family: Arial;font-size: 19pt;text-align: justify"> </span></p><p><span style="background-color: transparent;color: #000000;font-family: Arial;font-size: 19pt;text-align: justify">Desventajas de Quarkus sobre los marcos tradicionales de Java</span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Aunque Quarkus tiene muchas ventajas para el desarrollo de aplicaciones en la nube, también tiene algunas desventajas a tener en cuenta. Una de ellas es que, al ser un marco relativamente nuevo, puede haber una curva de aprendizaje para los desarrolladores que no estén familiarizados con él. Además, debido a que Quarkus utiliza tecnologías de vanguardia, puede haber algunos problemas de compatibilidad con bibliotecas y frameworks más antiguos. Por último, aunque Quarkus es altamente escalable, puede ser menos adecuado para aplicaciones que no necesiten escalabilidad horizontal, ya que esta característica puede agregar complejidad y costo al desarrollo y la implementación.</span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></p><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">El tamaño de la imagen nativa de Quarkus puede ser una desventaja para algunos usuarios, por el hecho de que puede resultar más grande que el tamaño de la imagen de una aplicación Java tradicional. Esto se debe a que la imagen nativa incluye todo lo necesario para que la aplicación se ejecute sin depender de una máquina virtual, lo que aumenta su tamaño. Sin embargo, es importante tener en cuenta que esta desventaja puede ser mitigada mediante la optimización de la imagen y la eliminación de componentes innecesarios. Además, el tamaño de la imagen puede ser compensado por las ventajas en cuanto a rendimiento y eficiencia que ofrece Quarkus.</span></p><h1 dir="ltr" style="line-height: 1.38;margin-top: 20pt;margin-bottom: 6pt"><span style="font-size: 20pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> </span></h1><h1 dir="ltr" style="line-height: 1.38;margin-top: 20pt;margin-bottom: 6pt"><span style="font-size: 20pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Conclusiones</span></h1><p dir="ltr" style="line-height: 1.38;text-indent: 36pt;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En resumen, Quarkus es un nuevo marco de desarrollo de Java de alto rendimiento que permite a los desarrolladores crear aplicaciones empresariales de manera fácil y rápida. Con sus características únicas como la eficiencia del tiempo de ejecución, el soporte de Java y la integración con tecnologías empresariales, Quarkus es una opción atractiva para los desarrolladores que buscan crear aplicaciones rápidas y escalables. Por esa razón, vale la pena explorar Quarkus como una opción para su próximo plan de desarrollo de aplicaciones.</span></p><p><b style="font-weight: normal"> </b></p><h1 dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 20pt;margin-bottom: 6pt"><span style="background-color: transparent;color: #000000;font-family: Arial;font-size: 20pt;font-weight: 400"> </span></h1><h1 dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 20pt;margin-bottom: 6pt"><span style="background-color: transparent;color: #000000;font-family: Arial;font-size: 20pt;font-weight: 400">Referencias</span></h1><p> </p><ul style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px"><li dir="ltr" style="list-style-type: disc;font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">https://quarkus.io/</span></p></li><li dir="ltr" style="list-style-type: disc;font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Gascó Compte, A. (2022). Sistema de ayuda a las pruebas de fragilidad. Obtenido de: </span><a style="text-decoration: none" href="https://repositori.uji.es/xmlui/handle/10234/200566"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">https://repositori.uji.es/xmlui/handle/10234/200566</span></a></p></li><li dir="ltr" style="list-style-type: disc;font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Turețchi, G., &amp; Cerbu, O. (2022). Aplicarea frameworkului Quarkus în cadrul arhitecturii bazate pe microservicii. In </span><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">Conferinţa tehnico-ştiinţifică a studenţilor, masteranzilor şi doctoranzilor</span><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: #ffffff;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> (Vol. 1, pp. 56-59).</span></p></li></ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softwareevolutivo.com.ec/descubriendo-a-quarkus/">Descubriendo a Quarkus: ¿Que es, Características y por qué utilizarlo?</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softwareevolutivo.com.ec/descubriendo-a-quarkus/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Arquitectura de Microservicios: qué es, ventajas y desventajas</title>
		<link>https://softwareevolutivo.com.ec/arquitectura-de-microservicios/</link>
					<comments>https://softwareevolutivo.com.ec/arquitectura-de-microservicios/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Thu, 21 Jul 2022 19:57:23 +0000</pubDate>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[microservicios]]></category>
		<category><![CDATA[software development]]></category>
		<guid isPermaLink="false">http://softwareevolutivo.com.ec/?p=6347</guid>

					<description><![CDATA[<p>Existen dos grandes paradigmas a la hora de diseñar Software: la Arquitectura Monolítica y la Arquitectura de Microservicios. En este artículo vamos a revisar qué es la Arquitectura de Microservicios, y cuáles son sus ventajas y desventajas. Qué es la Arquitectura de Microservicios Características de los Microservicios Ventajas de la Arquitectura de Microservicios Desventajas de [&#8230;]</p>
<p>The post <a href="https://softwareevolutivo.com.ec/arquitectura-de-microservicios/">Arquitectura de Microservicios: qué es, ventajas y desventajas</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="6347" class="elementor elementor-6347">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-4f2c10a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4f2c10a" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3f546e59" data-id="3f546e59" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1c4a4f0b elementor-widget elementor-widget-text-editor" data-id="1c4a4f0b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									
<p>Existen dos grandes paradigmas a la hora de diseñar Software: la Arquitectura Monolítica y la Arquitectura de Microservicios. En este artículo vamos a revisar qué es la Arquitectura de Microservicios, y cuáles son sus ventajas y desventajas.</p>



<ul class="wp-block-list"><li><a href="#que-es">Qué es la Arquitectura de Microservicios</a></li><li><a href="#caracteristicas">Características de los Microservicios</a></li><li><a href="#ventajas">Ventajas de la Arquitectura de Microservicios</a></li><li><a href="#desventajas">Desventajas de la Arquitectura de Microservicios</a></li></ul>



<h2 class="wp-block-heading" id="que-es">Qué es la Arquitectura de Microservicios</h2>



<p>Antes de hablar de la Arquitectura de Microservicios, vamos a partir identificando a su predecesor que es la Arquitectura Monolítica.</p>



<p>La <strong>Arquitectura Monolítica</strong>, es un enfoque en donde todos los conceptos y dominios de negocio de un producto de Software se implementan como componentes completamente acoplados, por lo que, tanto las entradas como las salidas de cada componente tienen su razón y especificación en contexto de un único producto de Software que es indivisible.</p>



<p>Iniciando desde la interfaz del usuario (en algunos casos), pasando por una o varias capas de lógica de negocio, la capa de persistencia, y, hasta la base de datos, el producto de Software se construía como un solo concepto, y a menudo se ejecuta como un solo binario o unidad entregable (JAR, WAR, EAR, Folder, etc.).</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="373" height="303" src="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/Arquitectura-Monolitica-y-Microservicios-Monolitica.jpg" alt="Arquitectura Monolítica" class="wp-image-6349" srcset="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/Arquitectura-Monolitica-y-Microservicios-Monolitica.jpg 373w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/Arquitectura-Monolitica-y-Microservicios-Monolitica-300x244.jpg 300w" sizes="(max-width: 373px) 100vw, 373px" /></figure>



<p>La <strong>Arquitectura de Microservicios</strong> es un enfoque para el desarrollo de un producto de Software, en donde cada concepto específico de negocio es construido en una unidad pequeña de código accesible a través de una API liviana y bien definida.</p>



<p>El TODO del producto de Software entonces, constituye la ejecución sincronizada de un conjunto de estos servicios, cada uno con su propia e independiente definición, para el proceso de una transacción padre disparada desde una interfaz de usuario o sistema.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="611" height="301" src="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/Arquitectura-Monolitica-y-Microservicios-Microservicios.jpg" alt="Arquitectura de Microservicios" class="wp-image-6350" srcset="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/Arquitectura-Monolitica-y-Microservicios-Microservicios.jpg 611w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/Arquitectura-Monolitica-y-Microservicios-Microservicios-300x148.jpg 300w" sizes="(max-width: 611px) 100vw, 611px" /></figure>



<h2 class="wp-block-heading" id="caracteristicas">Características de los Microservicios</h2>



<p>Aunque parece no existir una especificación única para crear Microservicios, y más depende del caso de negocio y/o planificación; generalmente se sugiere que deban cumplir las siguientes características:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" src="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/interface-icon.png" alt="" class="wp-image-6352" width="150" srcset="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/interface-icon.png 899w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/interface-icon-300x252.png 300w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/interface-icon-768x646.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<h3 class="wp-block-heading">Interfaz Única</h3>



<p>Cada Microservicio debe proveer una interfaz ligera y bien definida para consumo, que aísle todos los detalles técnicos, estructura de datos y datos de la capacidad de negocio que maneja, a sus clientes.</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" src="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/specialized_icon.png" alt="" class="wp-image-6354" width="150" srcset="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/specialized_icon.png 512w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/specialized_icon-300x300.png 300w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/specialized_icon-150x150.png 150w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/specialized_icon-450x450.png 450w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/specialized_icon-106x106.png 106w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/specialized_icon-70x70.png 70w" sizes="(max-width: 512px) 100vw, 512px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<h3 class="wp-block-heading">Especializado</h3>



<p>Cada servicio es diseñado con un conjunto limitado de capacidades que resuelvan uno y solo un problema de negocio, y que incluye su propia estructura de datos persistentes.</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" src="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/autonomuos.png" alt="" class="wp-image-6353" width="150" srcset="https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/autonomuos.png 492w, https://softwareevolutivo.com.ec/wp-content/uploads/2022/07/autonomuos-300x261.png 300w" sizes="(max-width: 492px) 100vw, 492px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<h3 class="wp-block-heading">Autónomo</h3>



<p>Cada servicio puede ser desarrollado, desplegado, operado y escalado sin afectar o depender de otros servicios o sistemas, o, de otros datos fuera de su especialización.</p>
</div>
</div>



<p>Claramente una Arquitectura de Microservicios es una aplicación del paradigma de <a href="https://es.wikipedia.org/wiki/Computación_distribuida" target="_blank" rel="noreferrer noopener">Cómputo Distribuido,</a> lo que representa muchas ventajas para el negocio pero también muchos retos en la operación y mantenimiento.</p>



<h2 class="wp-block-heading" id="ventajas">Ventajas de la Arquitectura de Microservicios</h2>



<figure class="wp-block-table setdverticaltop is-style-stripes"><table><tbody><tr><td><strong>Agilidad</strong><br>Este paradigma de desarrollo permite crear equipos pequeños e independientes que se apropian de la especialización de los servicios, acelerando el tiempo de desarrollo, facilitando la auto-organización e incluso el soporte post-producción.</td><td><strong>Escalamiento</strong><br>Esta división de funcionalidad hace más fácil la medición y observabilidad de la implementación, permitiendo planificar mejor la disponibilidad y escalabilidad.</td></tr><tr><td><strong>Simplificación de Despliegue</strong><br>Una unidad pequeña de implementación, permite ciclos de CI/CD más simples, reduciendo el tiempo de despliegue de la misma y el rollback en caso de fallos. Esto agiliza las operaciones y al mismo tiempo reduce el riesgo de innovación con nuevas características.</td><td><strong>Resiliencia</strong><br>A diferencia de una Arquitectura Monolítica, un fallo en una Arquitectura de Microservicios compete a un componente específico, lo que hace más fácil su recuperación y no desestabiliza el producto de Software por completo, sino la capacidad de negocio concreta que le compete.</td></tr><tr><td><strong>Independencia Tecnológica</strong><br>El uso de una sola tecnología no es una restricción en la Arquitectura de Microservicios, dado que su interfaz de consumo abstrae los detalles de implementación y habilita a la selección de la mejor herramienta de acuerdo a la especialización del servicio.</td><td><strong>Reutilización de Código</strong><br>Evidentemente una vez construido un servicio que atiende una capacidad de negocio, el mismo puede ser utilizado por otros productos de Software de forma que su construcción aproveche la funcionalidad ya implementada.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading" id="desventajas">Desventajas de la Arquitectura de Microservicios</h2>



<p>Más que desventajas, se puede hablar de retos a la hora de adoptar una Arquitectura de Microservicios, y entre los principales tenemos:</p>



<figure class="wp-block-table setdverticaltop is-style-stripes"><table><tbody><tr><td><strong>Versionamiento</strong><br>Un Microservicio, al ser autónomo, suele evolucionar independientemente del producto o de los productos de Software a los cuales provee funcionalidad. Esto significa que su interfaz API y la validación del esquema de datos varía continuamente, sin embargo para no afectar la estabilidad de sus clientes antiguos debe mantener un versionamiento de los mismos y obviamente mantenerlos operando. Esto tanto para áreas de operaciones y de desarrollo implica una tarea adicional en su implementación.</td><td><strong>Pruebas</strong><br>Si bien un Microservicio por sí solo es más simple de probar, su orquestación con otros servicios (test de integración) y las pruebas integrales (pruebas end to end) son mucho más complejas. Esto resulta a menudo en una cobertura incompleta de escenarios de pruebas y un esfuerzo redoblado en su desarrollo.</td></tr><tr><td><strong>Rollback y Sistemas Distribuidos</strong><br>El reto más grande, para mí, es el diseño de sistemas distribuidos, puesto que hay que definir qué sucede en caso de fallos esperados o inesperados en la orquestación de los servicios, analizar patrones de resiliencia y recuperación de transacciones, mirar la atomicidad de operaciones y consistencia de datos, entre otros. Claro está, que para esto nos podemos apoyar en conceptos como “<a href="https://www.enterpriseintegrationpatterns.com" target="_blank" rel="noreferrer noopener">Patrones de Integración Empresarial</a>”, “<a href="https://www.redhat.com/es/topics/microservices/what-is-a-service-mesh" target="_blank" rel="noreferrer noopener">Mallas de servicios</a>” o similares, pero sin duda estas decisiones son extremadamente relevantes no solo para el desarrollo sino para el soporte post-producción.</td><td><strong>Coordinación de equipos</strong><br>Si bien, al desarrollar un Microservicio, paradigmas como la Agilidad y un equipo responsable puede representar una gran ventaja para generar valor e innovación constante en su implementación, al tener decenas o centenas de microservicios con decenas o centenas de equipos responsables, la cooperación y comunicación de estos equipos es un reto, pues el TODO de un Sistema y su evolución se puede poner en riesgo cuando se carece de una acción combinada.</td></tr><tr><td><strong>Sobrecarga de infraestructura</strong><br>En la Arquitectura Monolítica un operador a menudo mira un servidor y un Software correspondiente con su archivo log; en un paradigma de Arquitectura de Microservicios puede enfrentarse a escenarios donde un Software tiene 100 servicios y centenas de servidores, con uno o varios balanceadores, muchos archivos de logs y decenas de formatos. Aunque hoy existen esquemas de contenerización como <a href="https://softwareevolutivo.com.ec/docker-primeros-pasos/" target="_blank" rel="noreferrer noopener">Docker</a> y Kubernetes, la administración sigue siendo un reto y se necesita varias tecnologías complementarias para enfrentarlo.</td><td><strong>Tiempo y esfuerzo 1x</strong><br>A este punto del artículo ya hemos descrito muchas actividades adicionales en el diseño, implementación, operación y mantenimiento de la Arquitectura de Microservicios, por su característica de Sistema Distribuido. Por este motivo es importante sopesar el beneficio de este paradigma en contraste con el caso de negocio y los resultados esperados a corto, medio y largo plazo; del mismo modo debemos pensar en el soporte post implementación, en relación al equipo, sus capacidades.</td></tr><tr><td><strong>Despliegue</strong><br>¡Si!, desplegar un solo microservicio es simple, sin embargo desplegar cientos de ellos de forma manual se vuelve imposible. El orden de despliegue, los cambios de base de datos que implica, la estratégia de entrega (Blue-Green, Canary, etc.), entre otros, son cosas a planificar y deben estar automatizadas, con prácticas DevOps entre otras como Integración Continua (CI) y entrega Continua (CD).</td><td><strong>Logs y Monitoreo</strong><br>De la misma manera, un producto de Software Monolítico deja un solo log de operación y se puede medir su performance centralizadamente. En una Arquitectura de Microservicios, vamos a tener tantos logs como servicios implementados para el producto de Software y además si estos son redundantes, tendremos logs multiplicados por cada servicio. Debemos planificar una estratégia para rastrear errores, identificar la salud de cada servicio y del sistema como tal.</td></tr><tr><td><strong>Debug</strong><br>Encontrar un problema no siempre va a ser posible revisando logs (que al ser tantos ya nos agrega una complejidad), a veces vamos a tener que depurar la implementación y esto en un sistema distribuido no va a ser factible, por lo que se requerirá de otras técnicas y patrones que permitan repetir ciertas ciclos de transacciones.</td><td></td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Pensamientos Finales</h2>



<p>A este punto del artículo, puede sonar complejo decidir por microservicios, y la verdad lo es; sin embargo, esta complejidad no se evidencia desde el momento cero de una implementación, sino que irá apareciendo gradualmente mientras vamos creando más microservicios y escalándolos.</p>



<p>Son muchas sus ventajas, y aunque hay retos, en una estratégia digital a largo plazo es sin duda el camino a adoptar, y así mismo, debe venir acompañada de un soporte directivo dado que la estructura organizacional, técnica y de costos va a tener que evolucionar también.</p>



<p>¿Debo usar Microservicios? La realidad es que muchos desarrollos de Software nacen con este enfoque, sin abordar en un primer momento las soluciones a estos desafíos, pero eventualmente lo harán. Les invito a ver una interesante conversación entre <a href="https://youtu.be/GBTdnfD6s5Q" target="_blank" rel="noreferrer noopener">Martin Fowler y Sam NewMan sobre cuando usar microservicios y cuando no</a>.</p>



<p>El soporte de este tipo de aplicaciones es complejo, pues detectar un fallo en una Arquitectura de Microservicios requiere de un entrenamiento en el flujo de negocio, en los puntos de integración y en la interpretación de los logs de información. En muchos casos al soporte de primera línea le faltan insumos para responder y el escalamiento de las incidencias es muy rápido al equipo técnico, resultando en una sobrecarga de operación y costo.</p>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softwareevolutivo.com.ec/arquitectura-de-microservicios/">Arquitectura de Microservicios: qué es, ventajas y desventajas</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softwareevolutivo.com.ec/arquitectura-de-microservicios/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[:es]Microservicios en aplicaciones empresariales[:]</title>
		<link>https://softwareevolutivo.com.ec/microservicios-en-aplicaciones-empresariales/</link>
					<comments>https://softwareevolutivo.com.ec/microservicios-en-aplicaciones-empresariales/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Mon, 18 Jul 2016 14:40:00 +0000</pubDate>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[microservicios]]></category>
		<category><![CDATA[monolítica]]></category>
		<category><![CDATA[soa]]></category>
		<guid isPermaLink="false">https://softwareevolutivo.com.ec/?p=103</guid>

					<description><![CDATA[<p>El concepto de Microservicios está a la orden del día y muchas empresas miran o estudian esta alternativa para la implementación de su Software. Este artículo trata de analizar tres temas principales de esta tecnología para que los CIO de la empresas tengan más elementos a la hora de tomar decisiones: Concepto de Microservicios Escenarios</p>
<p>The post <a href="https://softwareevolutivo.com.ec/microservicios-en-aplicaciones-empresariales/">[:es]Microservicios en aplicaciones empresariales[:]</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="103" class="elementor elementor-103">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5ddfddf8 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5ddfddf8" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5d678a3c" data-id="5d678a3c" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-26adf16e elementor-widget elementor-widget-text-editor" data-id="26adf16e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>[:es]<a href="https://softwareevolutivo.com.ec/wp-content/uploads/2016/07/word-image-1.jpg"><img loading="lazy" decoding="async" class="aligncenter" title="Microservicios en aplicaciones empresariales" src="https://softwareevolutivo.com.ec/wp-content/uploads/2016/07/word-image-1.jpg" alt="https://en.wikipedia.org/wiki/Burr_puzzle#/media/File:Burr_Puzzles.jpg" width="430" height="286"></a></p>
<p>El concepto de Microservicios está a la orden del día y muchas empresas miran o estudian esta alternativa para la implementación de su Software. Este artículo trata de analizar tres temas principales de esta tecnología para que los CIO de la empresas tengan más elementos a la hora de tomar decisiones:</p>
<ul>
<li>Concepto de Microservicios</li>
<li>Escenarios para adopción de este diseño de Software</li>
<li>Características de la arquitectura y retos de implementación</li>
</ul>
<p>&nbsp;</p>
<p><strong>Concepto de Microservicios</strong></p>
<p>No existe una definición única, pero en general al hablar de microservicios nos enfocamos en una arquitectura en donde se implementa la funcionalidad en silos de programación específicos definidos por el dominio del negocio (DDD). Estos servicios en conjunto, unos con otros, sirven cierta funcionalidad que podríamos denominar el Software producto. Así, en un clásica aplicación de compras en línea podríamos decir que el Software producto está dividido en dominios como inventario de productos, carrito de compras, procesamiento de pagos, sistema de entregas, servicio al cliente, etc., cada uno de ellos se concibe como una micro aplicación que se despliega independientemente de las otras en su proceso y que en la mayoría de casos en general tiene su propio repositorio de datos.</p>
<p>Delante de ellos y por la dinámica de los negocios en la actualidad se construyen los “front-end” que van desde páginas web, aplicaciones móviles, etc., hasta aplicaciones de consolas como Xbox, los cuales interactúan con estas micro aplicaciones a través de API gateway. Muchas de estas aplicaciones se intercomunican entre sí para proveer su funcionalidad, de una forma auto-gestionada, natural en una práctica conocida como coreografía. (Esto a diferencia del concepto de orquestación que se define en SOA[1]).</p>
<p>Existen muchos comparaciones o símiles con una arquitectura SOA (incluso inicialmente Netflix llamaba a esta arquitectura como SOA finamente desglosado[3]), y de un lado y del otro las opiniones tienen puntos válidos acerca de las razones.</p>
<p>En esta perspectiva ponemos a consideración dos puntos:</p>
<ol>
<li>SOA es una estrategia empresarial que busca alinear la tecnología con la visión estratégica del negocio a través de la orientación a servicios.</li>
<li>Los Microservicios están pensados para simplificar la complejidad de una aplicación empresarial buscando productividad, escalabilidad y reutilización en base al diseño de funcionalidades en silos de programación concebidos como servicios.</li>
</ol>
<p>&nbsp;</p>
<p><strong>Escenarios para adopción de este diseño de Software</strong></p>
<p>La arquitectura de Microservicios en la mayoría de casos puede no ser necesaria pues las aplicaciones con la arquitectura monolítica tradicional funcionan y se vuelven menos complejas de administrar, siendo esta dinámica la más común en las empresas que no tienen un portafolio grande de aplicaciones y/o requerimientos funcionales.</p>
<p>En las empresas de mayor volumen la realidad es diferente, el negocio ha requerido un portafolio grande de software que cubre requerimientos operacionales y comerciales. Aquí la propuesta del uso de esta arquitectura tiene que ver con dos aspectos:</p>
<ul>
<li>Estrategia del negocio: En este contexto el negocio presenta una dinámica en la cual muchas funcionalidades son requeridas por otros sistemas propios o de terceros. Este podría ser el caso del sistema para emisión de boletos aéreos, el cual es requerido por diferentes canales como kioscos, la página web, los centros de servicio, los sistemas de las agencias de viajes, cajeros automáticos de bancos, etc. , aquí es importante poder cumplir con todos ellos y no perder la oportunidad. En un esquema monolítico donde existe un sistema principal, la disponibilidad de este producto estratégico depende de este sistema principal en donde existen otras funcionalidades no interesantes para el negocio como la administración de usuarios por ejemplo, y presenta riesgos asociados con su evolución, disponibilidad y escalabilidad como tal. Es razonable pensar en abstraer este producto del sistema principal, buscando responder al negocio y su dinámica de forma ágil con un enfoque apropiado buscando su innovación y escalabilidad, en consecuencia podemos pensarlo como un servicio.</li>
<li>Complejidad: En un sistema monolítico sumamente extenso, por toda la funcionalidad que provee, es complejo el mantenimiento porque conceptos como pruebas, validación, despliegue y el conocimiento en sí del negocio se entiende como un todo. Ponemos como ejemplo la adición del campo &#8220;referencia&#8221; en un formulario de datos de direcciones de los clientes, parte de un sistema de seguros; aquí la tarea se identificada como sencilla, pero dado a que el módulo de clientes es parte de una aplicación monolítica, el cambio tiene un impacto en todo el software, y como tal sus procesos de validación y puesta en producción son extensos, demorados y restringidos. En este escenario se evidencia que la administración debe dividirse para responder al negocio a la velocidad que lo requiere y evitar sobre esfuerzos en tareas simples. Si abstraemos este dominio del negocio y los demás es más probable que este requerimiento sea atendido con prontitud y evitar incluso costos asociados.</li>
</ul>
<figure style="width: 660px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="https://softwareevolutivo.com.ec/wp-content/uploads/2016/07/word-image-2.png" alt="Escalamiento Horizontal Aplicaciones Monolíticas, @Copyleft www.softwareevolutivo.com.ec" width="660" height="445"><figcaption class="wp-caption-text">Escalamiento Horizontal Aplicaciones Monolíticas, Copyleft www.softwareevolutivo.com.ec</figcaption></figure>
<figure style="width: 660px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="https://softwareevolutivo.com.ec/wp-content/uploads/2016/07/word-image-3.png" alt="Escalamiento Vertical Microservicios, @Copyleft www.softwareevolutivo.com.ec" width="660" height="394"><figcaption class="wp-caption-text">Escalamiento Vertical Microservicios, Copyleft www.softwareevolutivo.com.ec</figcaption></figure>
<p>&nbsp;</p>
<p><strong>Características de la arquitectura y retos de implementación</strong></p>
<p>La adopción de la arquitectura en Microservicios requiere además, del análisis de varios aspectos técnicos y organizacionales que debe prever la empresa para no verse inmersa en problemas de gestión y en consecuencia implementaciones no exitosas y llenas de problemas.</p>
<p>Ponemos a consideración las siguientes características:</p>
<ul>
<li>La concepción de un servicio debe ser en función de un dominio específico y bien delimitado del negocio, generalmente organizados alrededor de una capacidad del negocio.</li>
<li>Los servicios deben ser independientes, disponibles en su propio proceso lo cual nos permite una escalabilidad vertical y no como en las aplicaciones monolíticas que es horizontal.</li>
<li>A un servicio se lo entiende como un producto, por tanto evoluciona como tal y cuenta con un equipo multidisciplinario de desarrollo, su objetivo siempre es mejorar la capacidad de negocio.</li>
<li>Un servicio tiene un punto de conexión inteligente que es capaz de reconocer el mensaje y el mecanismo de acceso con protocolos simples como HTTP básico.</li>
<li>La plataforma tecnológica de un servicio está pensada en la solución correcta y no en estándares corporativos, así podemos crear servicios con diferentes lenguajes de programación y con diferentes repositorios de datos como bases de datos relacionales. documentales o clave-valor.</li>
<li>Esta arquitectura al tener varios servicios requiere varios procesos de despliegue, por lo que es crítico tener un plan de automatización de los mismos evitando sobrecargas de esfuerzo y errores manuales, son muy útiles las tendencias de despliegue como Devops.</li>
<li>La transaccionalidad debe estar preparada para fallos, estamos en un escenario que básicamente es programación distribuida y este concepto requiere experiencia. La atomicidad de la transacción no existe debido al riesgo de falla por la latencia en redes o cortes de servicio, así mismo por otros temas como errores de ejecución</li>
<li>La sobre-arquitectura es una tendencia que puede afectar al diseño de servicios, la idea es crearlos simples pero con una visión evolutiva que crezca a la par del requerimiento de negocio. Aunque la tendencia es desarrollar servicios que toleran cambios en sus proveedores es probable que se requiera de estrategias/políticas más formales como versionamiento y niveles de servicio.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Conclusión</strong></p>
<p>Este artículo presenta tres conceptos principales a tomar en cuenta para la adopción de la arquitectura Microservicios, si bien su adopción puede ser parcial o total se requiere planificar otros aspectos para que la empresa esté preparada para su implementación. Animamos a todos a exponer en este medio sus puntos de vista y su conocimiento para mejorar este contenido y crear elementos de decisión sobre el paradigma.</p>
<p><em>Casos de éxito:</em></p>
<p>Finalmente queremos dejar dos enlaces a casos de éxito en la implementación de esta arquitectura para su evaluación y como elemento de decisión:</p>
<ul>
<li>From a Monolith to Microservices + REST: the Evolution of LinkedIn&#8217;s Service Architecture[4]</li>
<li>A Microscope on Microservices[5]</li>
</ul>
<p><strong>Referencias:</strong></p>
<ol>
<li><a href="https://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios">https://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios</a></li>
<li><a href="http://martinfowler.com/articles/microservices.html">http://martinfowler.com/articles/microservices.html</a></li>
<li><a href="http://techblog.netflix.com/2013/03/karyon-nucleus-of-composable-web-service.html">http://techblog.netflix.com/2013/03/karyon-nucleus-of-composable-web-service.html</a></li>
<li><a href="https://www.infoq.com/presentations/linkedin-microservices-urn">https://www.infoq.com/presentations/linkedin-microservices-urn</a></li>
<li><a href="http://techblog.netflix.com/2015/02/a-microscope-on-microservices.html">http://techblog.netflix.com/2015/02/a-microscope-on-microservices.html</a></li>
</ol>
<p>&nbsp;[:]</p>
<p><br>
<!-- /wp:shortcode --></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softwareevolutivo.com.ec/microservicios-en-aplicaciones-empresariales/">[:es]Microservicios en aplicaciones empresariales[:]</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softwareevolutivo.com.ec/microservicios-en-aplicaciones-empresariales/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
