<?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>Contenedores &#8211; Cloud IO Strategy</title>
	<atom:link href="https://cloudiostrategy.com/tag/contenedores/feed/" rel="self" type="application/rss+xml" />
	<link>https://cloudiostrategy.com</link>
	<description></description>
	<lastBuildDate>Fri, 02 Aug 2024 16:07:06 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://cloudiostrategy.com/wp-content/uploads/2023/06/cropped-favicon-32x32.png</url>
	<title>Contenedores &#8211; Cloud IO Strategy</title>
	<link>https://cloudiostrategy.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Despliegue de una Aplicación Java con Spring Boot y Docker en Elastic Beanstalk</title>
		<link>https://cloudiostrategy.com/despliegue-de-una-aplicacion-java-con-spring-boot-y-docker-en-elastic-beanstalk/</link>
					<comments>https://cloudiostrategy.com/despliegue-de-una-aplicacion-java-con-spring-boot-y-docker-en-elastic-beanstalk/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Thu, 01 Aug 2024 21:41:02 +0000</pubDate>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[AWS Elastic Beanstalk]]></category>
		<category><![CDATA[Contenedores]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=3280</guid>

					<description><![CDATA[En este tutorial vamos a ver el despliegue de una Aplicación Java con Spring Boot y Docker en Elastic Beanstalk de AWS, paso a paso y estudiando los temas principales […]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">En este tutorial vamos a ver el despliegue de una Aplicación Java con Spring Boot y Docker en Elastic Beanstalk de AWS, paso a paso y estudiando los temas principales de este servicio.</p>



<h2 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-0f0542c934550aea46e386dd01df8722">¿Qué es Elastic Beanstalk?</h2>



<p class="wp-block-paragraph">Elastic Beanstalk es un servicio de AWS que simplifica el despliegue de aplicaciones en la nube. ¿Cómo lo hace? Este servicio tiene más de 100 servicios asociados y es compatible con aplicaciones desarrolladas en los lenguajes Go, Java, .NET, Node.js, PHP, Python y Ruby, y los orquesta creando una infraestructura basada en el código desplegado de la aplicación y archivos de configuración adicionados en el despliegue.</p>



<p class="wp-block-paragraph">El desarrollador no tiene que aprovisionar nada.. o casi nada manualmente.</p>



<h2 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-56d65a66c4ef39f428b38e4a10c0bd6d">¿Porqué este tutorial?</h2>



<p class="wp-block-paragraph">Actualmente, existen muchos ejemplos de cómo desplegar aplicaciones en Elastic Beanstalk, y los puedes encontrar <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/tutorials.html" rel="nofollow noopener" target="_blank">aquí</a>. Sin embargo, ninguno de ellos aborda específicamente el despliegue de una aplicación Java con Spring Boot y Docker en Elastic Beanstalk. Este artículo asume que tienes conocimientos básicos de este servicio, por lo que si aún no estás familiarizado con el mismo, revisa <a href="https://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/Welcome.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h2 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-d94aa0534dd43a5a5312895e4b4ab341">Contenido</h2>



<p class="wp-block-paragraph">En este tutorial, vamos a ver cómo desplegar una aplicación de ejemplo desarrollada con Java, utilizando el framework Spring Boot y diseñada para ser desplegada como contenedor Docker. </p>



<p class="wp-block-paragraph">Además, realizaremos el proceso manualmente (por línea de comandos) y no a través de la consola web de AWS, ya que interactuar con la consola web cada vez que queremos hacer cambios en una aplicación y subirla a la nube, no es automatizable y puede ser largo y complejo.</p>



<p class="wp-block-paragraph">Por lo tanto, los pasos a seguir son:</p>



<ol class="wp-block-list">
<li>Descargar la aplicación y probarla localmente.</li>



<li>Instalar y configurar el cliente Elastic Beanstalk CLI.</li>



<li>Desplegar una primera versión en desarrollo (dev).</li>



<li>Desplegar una versión en QA (próximamente).</li>
</ol>



<h3 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-ffa1d60609aa3c83d13fa5eca73cd5ae">Descargar la aplicación y probarla localmente</h3>



<p class="wp-block-paragraph">La aplicación de ejemplo es un simple CRUD, que puedes descargar <a href="https://github.com/pazfernando/crud-spring-boot-example" rel="nofollow noopener" target="_blank">aquí</a> con el comando:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-353bd963de96f8af2187cff817f5282a"><code>git clone https://github.com/pazfernando/crud-spring-boot-example.git</code></pre>



<p class="wp-block-paragraph">Ve a la carpeta donde se descargó y compílala con (requieres tener instalado Java 17+):</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-ad79f40a87cddd1efc1bbba320eb14cd"><code>cd crud-spring-boot-example
./mvnw clean install</code></pre>



<p class="wp-block-paragraph">Ejecuta la aplicación con:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a93961128fa231458b89989426196a8a"><code>java -jar target/crud-0.0.1-SNAPSHOT.war</code></pre>



<p class="wp-block-paragraph">Prueba la aplicación en tu navegador con: </p>



<p class="wp-block-paragraph"><a href="http://localhost:8080/" rel="nofollow noopener" target="_blank">http://localhost:8080/</a></p>



<h3 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-e37d6d9947b20bd54fafd16ebbe966fb">Instalar y configurar el cliente Elastic Beanstalk CLI</h3>



<p class="wp-block-paragraph"><strong>IMPORTANTE:</strong> El procedimiento a continuación es para ambiente Linux, ya que tiene mejor soporte para herramientas y frameworks de desarrollo en general. Si no tienes Linux o Mac, instala WSL en Windows. Mira las instrucciones <a href="https://learn.microsoft.com/es-mx/windows/wsl/install" rel="nofollow noopener" target="_blank">aquí</a>. Por defecto tendrás un Ubuntu instalado en Windows y podrás usarlo ejecutando en PowerShell lo siguiente:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-6b320e48590f1b78928a7d7b9554446e"><code>wsl</code></pre>



<p class="wp-block-paragraph">Listo, asumimos desde aquí que tienes Linux, Mac o WSL en Windows.</p>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-53d696e7e44e8b361e0a0516a219d238">Instalación de pyenv</h4>



<p class="wp-block-paragraph">Empezamos instalando un manejador de versiones de Python llamado pyenv. Encuentra cómo <a href="https://github.com/pyenv/pyenv#basic-github-checkout" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h5 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-090330abbf7897197fb9f1d6cbc62abd">Post instalación de pyenv</h5>



<p class="wp-block-paragraph">Añade o verifica estas líneas en .bashrc de $HOME:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-42f00763f2ea9271df904cf4cc0b0b62"><code>export PYENV_ROOT="$HOME/.pyenv"
&#091;&#091; -d $PYENV_ROOT/bin ]] &amp;&amp; export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"</code></pre>



<p class="wp-block-paragraph">Actualiza tu .bashrc con:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-ba2a4e69ad9708425f853d7191805498"><code>source ~/.bashrc</code></pre>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-5d50a13f5f2afa2d41ad1490adae17be">Instala la última versión estable de Python</h4>



<p class="wp-block-paragraph">Encuentra la documentación de versiones estables en <a href="https://devguide.python.org/versions/" rel="nofollow noopener" target="_blank">https://devguide.python.org/versions/</a>. La instalación es con el comando:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-3cf0fa226a6542dc0853fc0774bbb543"><code>pyenv install 3.11</code></pre>



<p class="wp-block-paragraph"><strong>IMPORTANTE:</strong> A la fecha de creación de este artículo, puedes usar Python 3.11 máximo.</p>



<p class="wp-block-paragraph">Configura esta versión como la de defecto en tu ambiente:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a5a25d87cf9490cf7ebc3aa4e3f21047"><code>pyenv global 3.11</code></pre>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-8441201c381c559f507acaff115d6b64">Instala virtualenv para aislar tu ambiente de Python</h4>



<p class="wp-block-paragraph">Encuentra cómo hacerlo <a href="https://virtualenv.pypa.io/en/latest/installation.html#via-pip" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-61c50b8b91a672872e5fce27a235f68e">Instala Elastic Beanstalk CLI</h4>



<p class="wp-block-paragraph">Encuentra cómo hacerlo <a href="https://github.com/aws/aws-elastic-beanstalk-cli-setup" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<p class="wp-block-paragraph">Actualiza tu <code>.bash_profile</code> para incluir los ejecutables de Elastic Beanstalk CLI en tu PATH:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-aedd48dc5e16de73b389832b7b4d94b0"><code>echo 'export PATH="/home/pazfernando/.ebcli-virtual-env/executables:$PATH"' &gt;&gt; ~/.bash_profile</code></pre>



<p class="wp-block-paragraph">Refresca tus archivos de ambiente en tu <code>$HOME</code>:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-5d6b232e7f70fec71c70ebb19b60da44"><code>source ~/.bash_profile
source ~/.profile</code></pre>



<h3 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-6efb651eab5873eab9d401687ba782d3">Desplegar una primera versión en desarrollo (dev)</h3>



<p class="wp-block-paragraph">Ve a la carpeta del proyecto (donde se descargó).</p>



<p class="wp-block-paragraph">Configura el Elastic Beanstalk CLI, mira cómo hacerlo <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-e8418abcb52c17b65c6148f03dd995e4">Aspectos importantes previos</h4>



<p class="wp-block-paragraph">Antes de desplegar la aplicación, hay ciertos puntos esenciales a entender acerca de Elastic Beanstalk, ya que este conocimiento nos dará el entendimiento de por qué se despliega una aplicación de una forma u otra.</p>



<p class="wp-block-paragraph"><strong>Ignorando archivos con .ebignore</strong></p>



<p class="wp-block-paragraph">Cuando desplegamos aplicaciones con Elastic Beanstalk CLI, debemos saber qué archivos son ejecutables, cuáles son de configuración, cuáles son de apoyo, etc. Esto se debe a que CLI empaqueta dichos archivos en un archivo <code>.zip</code> para luego extraerlo y desplegarlo en la instancia o instancias de la infraestructura que sirve la aplicación.</p>



<p class="wp-block-paragraph">Por defecto, Elastic Beanstalk CLI busca el archivo <code>.gitignore</code> para saber, desde la carpeta donde se están ejecutando los comandos, qué archivos debe excluir de este archivo <code>.zip</code>. Pero como sabemos, para los proyectos Java, el archivo <code>.gitignore</code> excluye el directorio <code>target/</code>, el cual es esencial pues tiene el artefacto compilado del proyecto, y en su lugar empaqueta <code>src/</code> y otros archivos que son fuentes de la aplicación, y que en este caso no aplican.</p>



<p class="wp-block-paragraph">Esta estrategia funciona muy bien en proyectos tipo Python o PHP donde no hay compilados, pero no en el caso de Java. Aquí aparece otro archivo, <code><strong>.ebignore</strong></code>, que es otro recurso que busca por defecto Elastic Beanstalk CLI ante la ausencia de un archivo <code>.gitignore</code> o incluso lo precede si existiera. Por esta razón, el archivo <code>.ebignore</code> en este tipo de proyectos es tan importante, y por eso nosotros tenemos en los fuentes este contenido:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-5dc9257befada7b79cb42ca738f8e645"><code>HELP.md
src/
*
!Dockerfile
!target/
!.ebextensions</code></pre>



<p class="wp-block-paragraph">Esto asegura y le dice a Elastic Beanstalk CLI qué ignorar y por ende qué sí empaquetar. En nuestro caso, es importante <code>Dockerfile</code>, <code>target/</code> y <code>.ebextensions</code>.</p>



<p class="wp-block-paragraph"><strong>Configuración avanzada con .ebextensions</strong></p>



<p class="wp-block-paragraph">Desplegar una aplicación con Elastic Beanstalk no es siempre, o nunca lo es, algo tan simple como desplegar un artefacto. Si bien la infraestructura se aprovisiona automáticamente, la aplicación suele requerir de variables de ambiente, datos de conexión con servicios externos, capacidades mínimas, etc.</p>



<p class="wp-block-paragraph">¿Cómo especificamos esto sin tocar el código? La respuesta es con archivos de configuración o archivos <code><strong>.ebextensions</strong></code>.</p>



<p class="wp-block-paragraph">En nuestro caso, tenemos el archivo <code>env-vars.config</code> donde configuramos ciertas variables de ambiente para que funcione la aplicación:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-7ea978c726f039fde67d3ddaf22e9b62"><code>option_settings:
  aws:elasticbeanstalk:application:environment:
    SPRING_PROFILES_ACTIVE: dev
    CRUD_DB_URL: 'jdbc:postgresql://${RDS_ENDPOINT}/crud_spring_boot_example'
    CRUD_DB_USERNAME: ebroot
    CRUD_DB_PASSWORD: clave</code></pre>



<p class="wp-block-paragraph">Algo a destacar es <code>SPRING_PROFILES_ACTIVE</code> que determina cómo va a funcionar la aplicación Java + Spring Boot. En la vida real, tenemos cientos de configuraciones posibles que podemos hacer a través de estos archivos. Puedes aprender más <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<p class="wp-block-paragraph">La documentación es un poco confusa, por eso te dejo dos enlaces más de los tipos de opciones: <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html" rel="nofollow noopener" target="_blank">comando opciones</a> y de las opciones a detalle <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<p class="wp-block-paragraph"><strong>Trabajando con aplicaciones del tipo Docker</strong></p>



<p class="wp-block-paragraph">Para empezar, necesitas un <code>Dockerfile</code> que en nuestro caso contiene:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-ce5121ce18b95d70226e37db736c01d1"><code>FROM amazoncorretto:17.0.11-alpine
ARG JAR_FILE=target/*.war
COPY ${JAR_FILE} app.jar
EXPOSE 8080
CMD &#091;"java", "-jar", "/app.jar"]</code></pre>



<p class="wp-block-paragraph">Muy simple y claro, y que será incluido en el archivo <code>.zip</code> gracias a nuestro archivo <code>.ebignore</code>.</p>



<p class="wp-block-paragraph">No tenemos en este caso Docker Compose y lo haremos a partir de ese archivo. Sin embargo, si quieres saber más de las opciones de despliegue, puedes mirarlo <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/docker.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<p class="wp-block-paragraph"><strong>IMPORTANTE:</strong> Hay otra forma de hacerlo en un clúster de Amazon ECS (Elastic Container Service), que está fuera de esta explicación pero que puedes consultarla <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-91d0f00e8e0f879e5b9e78a281651244">Despliega la aplicación</h4>



<p class="wp-block-paragraph">Excelente, ahora para desplegar vamos a ejecutar el comando:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-35e5416c17c138e1809f5eb489c403ac"><code>eb create --single</code></pre>



<p class="wp-block-paragraph">El <code>--single</code> nos ayuda a desplegar una infraestructura simple, sin redundancia y alta disponibilidad, y que aplica en este caso del tutorial.</p>



<p class="wp-block-paragraph">Verás algo como:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-7460199a80ee33a00af60e8f96d6207b"><code>Enter Environment Name
(default is crud-spring-boot-example-dev): 
Enter DNS CNAME prefix
(default is crud-spring-boot-example-dev): 

Would you like to enable Spot Fleet requests for this environment? (y/N): 
Creating application version archive "app-0048-240801_111838855018".
Uploading: &#091;##################################################] 100% Done...
...
2024-08-01 16:21:52    INFO    Application available at crud-spring-boot-example-dev.us-east-1.elasticbeanstalk.com.
2024-08-01 16:21:54    INFO    Successfully launched environment: crud-spring-boot-example-dev</code></pre>



<p class="wp-block-paragraph"><strong>IMPORTANTE</strong>: Si no eliges <code>--single</code>, adicionalmente te preguntarán alguna información necesaria para el despliegue, sigue las siguientes recomendaciones:</p>



<ul class="wp-block-list">
<li>Usa Application Load Balancer ALB (por defecto)</li>



<li>Di que no a Spot Fleet (por defecto)</li>



<li>Todo lo demás que no sepas deja por defecto.</li>
</ul>



<p class="wp-block-paragraph">Prueba tu aplicación visitando precisamente el url de la salida:</p>



<p class="wp-block-paragraph"><a href="http://crud-spring-boot-example-dev.us-east-1.elasticbeanstalk.com/" target="_blank" rel="noreferrer noopener nofollow">http://crud-spring-boot-example-dev.us-east-1.elasticbeanstalk.com/</a></p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="472" src="https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824-1024x472.png" alt="" class="wp-image-3293" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824-1024x472.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824-300x138.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824-768x354.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824.png 1068w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Finaliza el despliegue <strong>IMPORTANTE</strong> <strong>IMPORTANTE</strong> <strong>IMPORTANTE</strong></p>



<p class="wp-block-paragraph">Si fallas este paso tu <strong><span style="text-decoration: underline;">factura puede salir muy alta</span></strong>, especialmente si no usaste <code>--single</code>, así que ejecuta este comando para finalizar el tutorial:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-b87a52ee7dc1699ac6540e507f44bd0c"><code>eb terminate</code></pre>



<h2 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-ecc7229c9a6201903bcbb934ebce2fdb">Pensamientos finales</h2>



<p class="wp-block-paragraph">Desplegar una aplicación Java con Spring Boot en Elastic Beanstalk de AWS utilizando Docker es algo más complejo, pero siguiendo estos pasos detallados, el proceso se vuelve manejable y entendible, por lo que espero que sea de valor para ustedes.</p>



<p class="wp-block-paragraph">Elastic Beanstalk de AWS simplifica enormemente el proceso de despliegue y gestión de aplicaciones, permitiendo enfocarte en el desarrollo sin preocuparte por la infraestructura. Utilizar Docker agrega una capa de consistencia y portabilidad, asegurando que tu aplicación funcione de la misma manera en cualquier entorno.</p>



<p class="wp-block-paragraph">Es vital seguir entender prácticas como el uso adecuado de archivos <code>.ebignore</code> y <code>.ebextensions</code> para asegurar que solo los archivos necesarios se incluyan en el despliegue y que la configuración de tu aplicación sea flexible y segura. Además, siempre finaliza los entornos no utilizados para evitar costos innecesarios.</p>



<p class="wp-block-paragraph">Usar perfiles de Maven es un poco más complicado, pero la idea es trabajar con <code>.ebextension</code> para configurar los valores requeridos, si hay recursos relacionados como bases de datos servicios colas y demás, la recomendación es que se creen fuera de el scope de la aplicación.</p>



<p class="wp-block-paragraph">La implementación de una aplicación en la nube es un proceso iterativo. A medida que te familiarices con Elastic Beanstalk y Docker, encontrarás formas de optimizar y mejorar tu flujo de trabajo. Comparte tus experiencias y cualquier obstáculo que encuentres, y sigue aprendiendo de la documentación y la comunidad de AWS.</p>


		<div data-elementor-type="wp-post" data-elementor-id="2262" class="elementor elementor-2262">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-c716dfe elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c716dfe" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fe781c2" data-id="fe781c2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3d599a0 elementor-widget elementor-widget-text-editor" data-id="3d599a0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Las empresas en su Industria ya están innovando</strong>.  El Lead Time y el Time to Market son la diferencia entre las empresas que perdurarán en el mercado.  Conozca que posibilidades le ofrece AWS para su Transformación Digital en un <strong>entrenamiento gratuito</strong> para usted y su equipo de TI.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e9a0648 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e9a0648" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-014da33" data-id="014da33" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d893d0c elementor-widget elementor-widget-html" data-id="d893d0c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<div class="wp-block-button is-style-fill" style="text-align: center"><a class="wp-block-button__link has-black-color has-luminous-vivid-amber-background-color has-text-color has-background" href="https://cloudiostrategy.com/entrenamiento-gratuito-transformacion-digital-en-aws/" target="_blank" rel="noopener"><strong>Registrarme al Entrenamiento Gratuito: Transformación Digital en AWS</strong></a></div>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/despliegue-de-una-aplicacion-java-con-spring-boot-y-docker-en-elastic-beanstalk/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Acelerando la contenerización con el servicio AWS App Runner</title>
		<link>https://cloudiostrategy.com/contenerizacion-con-el-servicio-aws-app-runner/</link>
					<comments>https://cloudiostrategy.com/contenerizacion-con-el-servicio-aws-app-runner/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Tue, 10 Aug 2021 22:24:40 +0000</pubDate>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Tecnologías]]></category>
		<category><![CDATA[AWS App Runner]]></category>
		<category><![CDATA[Computación en la Nube]]></category>
		<category><![CDATA[Contenedores]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=2505</guid>

					<description><![CDATA[La contenerización de aplicaciones ha sido sin duda una estrategia adoptada por la mayoría de empresas en su Arquitectura de Soluciones de Software al día de hoy, sin embargo, la […]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">La contenerización de aplicaciones ha sido sin duda una estrategia adoptada por la mayoría de empresas en su Arquitectura de Soluciones de Software al día de hoy, sin embargo, la provisión, administración y mantenimiento en el tiempo de soluciones como Kubernetes, Docker Swarm o Nomad requiere de muchos recursos en personas y dinero; AWS ha lanzado en Mayo del 2021 un servicio que implementa todos los detalles de un esquema contenerizado con las <a href="https://cloudiostrategy.com/buena-arquitectura-en-aws/" target="_blank" rel="noreferrer noopener">mejores prácticas de arquitectura, disponibilidad y seguridades</a>, acelerando la contenerización con el servicio AWS App Runner.</p>



<figure class="wp-block-image"><img decoding="async" src="https://d1.awsstatic.com/product-marketing/apprunner/product-page-diagram_AWS-App-Runner_HIW.3206453884bfe9b7cb4200eaaa0366143ccad94a.png" alt="AWS App Runner - How It Works Diagram"/><figcaption><a href="https://aws.amazon.com/apprunner/" target="_blank" rel="noreferrer noopener nofollow">https://aws.amazon.com/apprunner/</a></figcaption></figure>



<p class="wp-block-paragraph">No quiere decir que el enfoque de contenerización de una infraestructura propia y manualmente gestionado sea incorrecto, más bien tiene que ver con la <span style="text-decoration: underline;"><strong>estrategia que ha decidido la organización como adecuada para los fines de negocio</strong></span>. Así mientras que una empresa tiene razones para invertir en una implementación Docker Swarm o Kubernetes on-promises o en la nube por ejemplo, otras pueden querer simplificar la carga de trabajo accediendo a un servicio autogestionado que les permita usar la contenerización y sus beneficios de una forma ágil y con poca administración. </p>



<h2 class="wp-block-heading">Beneficios</h2>



<p class="wp-block-paragraph">El servicio AWS APP Runner ha sido diseñado para aportar el siguiente valor a las Empresas:</p>



<ul class="wp-block-list"><li>Es un servicio completamente administrado por AWS sin requerir del Cliente.</li><li>Auto escalable (up/down) de acuerdo al tráfico que esté procesando.</li><li>No requiere de experiencia previa de los desarrolladores.</li><li>Está integrado a <a href="https://cloudiostrategy.com/herramientas-para-desarrollar-software-en-aws/" target="_blank" rel="noreferrer noopener">herramientas de CI/CD</a> para compilación y despliegue de contenedores, incluyendo herramientas de registro de imágenes.</li><li>Balancea y encripta el tráfico hacia los contenedores.</li><li>Proporciona registros detallados de compilación, implementación y tiempo de ejecución y está integrado a las herramientas de métricas y monitoreo de AWS como CloudWatch, lo que permite la &#8220;<a href="https://aws.amazon.com/es/cloudwatch/container-monitoring/" target="_blank" rel="noreferrer noopener nofollow">observabilidad</a>&#8220;. </li><li>Incluye la administración automática completa de certificados TLS por AWS sin necesidad de configuración, renovando automáticamente los certificados antes de su fecha de vencimiento.</li><li>Permite al equipo de desarrollo estar completamente centrado en la aplicación :).</li></ul>



<p class="wp-block-paragraph">Solo la gestión de certificados TLS en un ambiente contenerizado gestionado manualmente, supone una carga importante de trabajo y suele ser susceptible a errores o descuidos en los departamentos de TI.  AWS tiene una infraestructura sólida de certificados en la cual se apoya AWS App Runner y es una de las grandes ventajas de este esquema, junto al balanceo, encriptación y auto escalamiento.</p>



<h2 class="wp-block-heading">Costos</h2>



<p class="wp-block-paragraph">Como la política de AWS es siempre reducir el costo, AWS App Runner no es la excepción y en este servicio se paga de acuerdo a las siguientes premisas:</p>



<ul class="wp-block-list"><li>Pago por memoria y CPU (vCPU) utilizado al procesar cada requerimiento en el contenedor que atendió tal requerimiento.</li><li>Si el contenedor no está atendiendo (idle) solo se paga por la memoria provisionada para el contenedor (claro con un costo muy inferior a cuando está activo).</li><li>Las tarifas del costo de memoria y vCPU están definidas por hora, pero se factura proporcionalmente al número de segundos en los que se usó los contenedores.</li><li>Si el número de contenedores crece se paga por los recursos de cada contenedor.</li><li>Otros servicios de AWS usados con AWS AppRunner se cobran de acuerdo al uso de cada uno.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">Conclusiones</h3>



<p class="wp-block-paragraph">Muchas empresas en el mundo han logrado mejorar el Time-to-Market de sus Soluciones Software, acelerando la contenerización con el servicio AWS App Runner.  Sin duda una gran oportunidad para estas organizaciones que con menos recursos y más simplicidad han adoptado la tecnología de contenedores y paradigmas como la arquitectura orientada a servicios como solución para impulsar su innovación tecnológica y adaptar su tecnología al mercado.</p>



<p class="wp-block-paragraph">Es verdad que existen otros actores al implementar una solución, como bases de datos o almacenamiento, que representan un reto para poder adoptar una solución en la Nube como AWS App Runner o Amazon EKS; sin embargo AWS cuenta con varias alternativas para resolver estos restos, desde soluciones de conectividad como VPN, Private Link o Direct Connect, hasta soluciones de baja o cero administración como S3 y Amazon RDS.</p>



<p class="wp-block-paragraph">Para las otras empresas que por políticas internas o restricciones tecnológicas no pueden ir a la nube Amazon, AWS ofrece servicios en Outpost como Amazon Elastic Container Service o Amazon Elastic Kubernetes Service.  Si estás interesado en saber todas las posibilidades de contenedores que tiene AWS tanto on-promises como en la Nube encuentra más información en &#8220;<a href="https://cloudiostrategy.com/introduccion-a-las-contenedores-en-aws/" target="_blank" rel="noreferrer noopener">Introducción a los contenedores en AWS</a>&#8220;.</p>


		<div data-elementor-type="wp-post" data-elementor-id="2262" class="elementor elementor-2262">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-c716dfe elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c716dfe" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fe781c2" data-id="fe781c2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3d599a0 elementor-widget elementor-widget-text-editor" data-id="3d599a0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Las empresas en su Industria ya están innovando</strong>.  El Lead Time y el Time to Market son la diferencia entre las empresas que perdurarán en el mercado.  Conozca que posibilidades le ofrece AWS para su Transformación Digital en un <strong>entrenamiento gratuito</strong> para usted y su equipo de TI.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e9a0648 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e9a0648" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-014da33" data-id="014da33" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d893d0c elementor-widget elementor-widget-html" data-id="d893d0c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<div class="wp-block-button is-style-fill" style="text-align: center"><a class="wp-block-button__link has-black-color has-luminous-vivid-amber-background-color has-text-color has-background" href="https://cloudiostrategy.com/entrenamiento-gratuito-transformacion-digital-en-aws/" target="_blank" rel="noopener"><strong>Registrarme al Entrenamiento Gratuito: Transformación Digital en AWS</strong></a></div>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/contenerizacion-con-el-servicio-aws-app-runner/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Introducción a los contenedores en AWS</title>
		<link>https://cloudiostrategy.com/introduccion-a-los-contenedores-en-aws/</link>
					<comments>https://cloudiostrategy.com/introduccion-a-los-contenedores-en-aws/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Wed, 18 Nov 2020 17:00:29 +0000</pubDate>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Amazon ECS]]></category>
		<category><![CDATA[Amazon EKS]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Contenedores]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=1527</guid>

					<description><![CDATA[Es esta introducción a los contenedores en AWS presentamos una  vista de las opciones que Amazon dispone para que pueda tomar una decisión informada]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1527" class="elementor elementor-1527">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-808d669 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="808d669" 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-109336d" data-id="109336d" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-5f238e6 elementor-widget elementor-widget-text-editor" data-id="5f238e6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>La tecnología de contenedores o contenerización de aplicaciones ha ganado popularidad en los últimos años, y aunque el concepto de contenedores es mucho más antiguo en el mundo Linux (<u>LXC</u>), desde el anuncio oficial del proyecto Docker (dotcloud) en la conferencia <a href="https://www.youtube.com/watch?v=wW9CAH9nSLs" target="_blank" rel="noopener nofollow">PyCon del 2013</a> la adopción en la industria ha sido masiva.  Pero cuáles son las opciones de contenerización en AWS?, en esta introducción a los contenedores en AWS revisaremos las mismas así como sus implicaciones.</p><h2>Contenedores e implicaciones</h2><div>Si su empresa usa o requiere usar tecnologías de contenerización, enfrenta ciertos retos comunes en la implementación.</div><div> </div><div>Así tenemos cuestiones a considerar como:</div><div> </div><ul><li><b>Cuál es mi escenario exacto de implementación?</b> carga de trabajo (aplicación) y sus <u>características de negocio</u>, ambientes, seguridad, integraciones, alta disponibilidad, RTO, RPO, etc.</li><li><b>Qué tecnología de contenerización debo usar?</b> soporte, licencias, portabilidad, monitorización, administración, etc.</li><li><b>Tengo los recursos?</b> servidores, ancho de banda, almacenamiento, resiliencia, gobierno, <u>presupuesto</u>, etc.</li><li><b>El equipo de TI está listo?</b> la formación de operaciones y de desarrollo, los procesos de integración y despliegue continuo (CI/CD), la estrategia <u>DevOps</u>, el gobierno y la estructura organizacional, cultura, etc.</li></ul><p>El análisis de estas cuestiones son fundamentales a la hora de definir una estrategia, y aunque es un camino de mejora continua, es importante marcar el mismo y empezar.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-aef6e03 elementor-widget elementor-widget-image" data-id="aef6e03" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="300" height="257" src="https://cloudiostrategy.com/wp-content/uploads/2020/11/docker-vertical-logo-monochromatic-300x257.png" class="attachment-medium size-medium wp-image-1650" alt="docker" srcset="https://cloudiostrategy.com/wp-content/uploads/2020/11/docker-vertical-logo-monochromatic-300x257.png 300w, https://cloudiostrategy.com/wp-content/uploads/2020/11/docker-vertical-logo-monochromatic-1024x876.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2020/11/docker-vertical-logo-monochromatic-768x657.png 768w, https://cloudiostrategy.com/wp-content/uploads/2020/11/docker-vertical-logo-monochromatic.png 1316w" sizes="(max-width: 300px) 100vw, 300px" />															</div>
				</div>
				<div class="elementor-element elementor-element-507a9cf elementor-widget elementor-widget-text-editor" data-id="507a9cf" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Tecnologías de Contenedores</h2><p>Hoy las tecnologías de contenerización van más allá de comparaciones entre “Contenedores vs Virtualización” y están enfocadas en los beneficios que aportan a la Agilidad de su Empresa frente a Time to Market.</p><p>En una solución de contenerización existen <b>capas de arquitectura diseñadas para diferentes propósitos</b> y en cada una de ellas dispone de opciones tecnológicas para su implementación.</p><blockquote><p>“En una solución de contenerización existen capas de arquitectura diseñadas para diferentes propósitos.”</p></blockquote><h3>Formatos y Runtime de Contenedores</h3><p>La base misma de contenerización es un servicio que gestiona esas unidades aisladas de cómputo y cuyo formato y diseño está estandarizado en un esfuerzo conjunto de la comunidad a través del <a href="https://opencontainers.org" target="_blank" rel="noopener nofollow">Open Container Initiative</a>.</p><p>Entre las principales tecnologías que subscriben este estándar tenemos:</p><ul><li>Docker</li><li>CRI-O</li><li>containerd</li><li>Microsoft Containers</li></ul><h3>Orquestación de los Contenedores</h3><p>Es normal que en un ambiente resiliente se implemente estrategias de alta disponibilidad y de escalabilidad, que involucran tener decenas, cientos o miles de  contenedores, y en donde, una administración manual de los mismos se torna imposible.</p><div><p>Otras cuestiones como la <b>seguridad</b>, la red, los recursos compartidos, el versionamiento y el balanceo requeridos en un esquema resiliente se vuelven críticas y sensibles de administrar.</p></div><div><p>Aquí es donde requerimos soluciones que nos permitan gestionar las aplicaciones contenerizadas, sus interacciones, sus recursos, sus permisos, etc. y para esto existen las tecnologías de orquestación, entre las cuales tenemos:</p></div><ul><li><b>Amazon ECS (Elastic Container Service) y Amazon EKS (Elastic Kubernetes Service)</b></li><li>Kubernetes</li><li>Docker Swarm</li><li>(Marathon) Apache Mesos</li></ul><p>Cada solución de orquestación tiene su propio enfoque de arquitectura, basados todos en la conformación de clusters de servidores.  Además tienen varias ventajas adicionales a la orquestación en sí, e integran otros servicios complementarios para la solución completa de contenerización.</p><h3>Observabilidad de Contenedores</h3><p>El término “<b>observabilidad</b>” es una visión más holística del funcionamiento de un sistema que va más allá de monitorización de recursos y más hacia el funcionamiento total del servicio que provee el sistema.</p><p>Algunas cuestiones relacionadas son rastreo de operaciones, tráfico, métricas, logs, auditorías, etc. y tiene términos relacionados con indicadores del nivel de servicio, objetivos del nivel de servicio y los acuerdos de nivel de servicio. (un término muy aplicado a la observabilidad es la telemetría).</p><p>Aunque muchos orquestadores de contenedores tienen embebidos o integrados servicios que permiten la observabilidad, otros no los traen por defecto.</p><p>Algunas tecnologías relacionadas son:</p><ul><li><b>Amazon CloudWatch, AWS App Mesh y Amazon X-Ray</b></li><li>Istio</li><li>Prometheus</li><li>Jaeger</li></ul><blockquote><p>“Elegir entre uno u otro depende de RTO (Objetivo de Tiempo de Recuperación) y RPO (Objetivo de Punto de Recuperación) del caso de negocio, del escenario exacto de la implementación, la estrategia, los recursos y el equipo en TI, y, el presupuesto y carga administrativa que podemos asignar.”</p></blockquote><p>Podríamos estar de acuerdo que no es lo mismo pensar en resiliencia para un sistema POS de un Retail que para sistema de Mesa de Ayuda para una empresa de Servicios.</p>								</div>
				</div>
				<section class="elementor-section elementor-inner-section elementor-element elementor-element-4de0f60 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4de0f60" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-1d78246" data-id="1d78246" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-64ce49e elementor-widget elementor-widget-image" data-id="64ce49e" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="300" height="300" src="https://cloudiostrategy.com/wp-content/uploads/2020/11/Amazon-Elastic-Container-Service@4x.png" class="attachment-large size-large wp-image-1563" alt="Amazon Elastic Container Service" srcset="https://cloudiostrategy.com/wp-content/uploads/2020/11/Amazon-Elastic-Container-Service@4x.png 300w, https://cloudiostrategy.com/wp-content/uploads/2020/11/Amazon-Elastic-Container-Service@4x-150x150.png 150w" sizes="(max-width: 300px) 100vw, 300px" />															</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-caf108d" data-id="caf108d" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-129c0d3 elementor-widget elementor-widget-image" data-id="129c0d3" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="300" height="300" src="https://cloudiostrategy.com/wp-content/uploads/2020/11/Amazon-Elastic-Kubernetes-Service@4x.png" class="attachment-large size-large wp-image-1626" alt="Amazon Elastoc Kubernetes Service" srcset="https://cloudiostrategy.com/wp-content/uploads/2020/11/Amazon-Elastic-Kubernetes-Service@4x.png 300w, https://cloudiostrategy.com/wp-content/uploads/2020/11/Amazon-Elastic-Kubernetes-Service@4x-150x150.png 150w" sizes="(max-width: 300px) 100vw, 300px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<div class="elementor-element elementor-element-508f3a9 elementor-widget elementor-widget-text-editor" data-id="508f3a9" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Tecnologías de Contenedores en AWS</h2><p>AWS ofrece una gran variedad de tecnologías que permite la contenerización de aplicaciones, y al mismo tiempo posibilitan su adopción en diferentes escenarios empresariales.</p><blockquote><p>“80% de las aplicaciones contenerizadas corren en la Nube AWS”</p></blockquote><p>*https://nucleusresearch.com/research/single/guidebook-containers-and-kubernetes-on-aws/</p><p>Desde soluciones completamente administrables (fully managed) hasta soluciones Serverless las posibilidades que oferta AWS para contenedores son muy amplias, y por esta razón presentamos una introducción de acuerdo a los posibles casos de uso.</p><h3>Servicios de Orquestación de Contenedores</h3><p>Se trata de las soluciones que ofrece AWS como PaaS (Plataforma como Servicio) y en donde la administración de los servidores esta completamente en control de su equipo de TI.</p><p>En este conjunto encontramos las soluciones <b>Amazon Elastic Kubernetes Service (EKS) y Amazon Elastic Container Service (ECS)</b> como soluciones de orquestación de contenedores.</p><h4>Amazon Elastic Kubernetes Service (EKS)</h4><p>Es una solución <b>Kubernetes</b> completamente administrable y una solución Kubernetes Certificada.</p><p>Puede migrar sin problemas sus cargas de trabajo de su Kubernetes local a la Nube sin ninguna necesidad de ajustes adicionales o cambios.</p><p>AWS trabaja activamente e intensamente con Kubernetes por lo que es completamente compatible con otras soluciones o herramientas que funcionan con él, además de mantener automáticamente aplicadas las actualizaciones liberadas para este producto.</p><h4>Amazon Elastic Container Service (ECS)</h4><p>Es la solución de orquestación de contenedores base de los servicios de Amazon, mucho más integrada y extensivamente probada con cientos de miles de servidores y carga de procesamiento.</p><p>Por excelencia es la opción que “<b>optimiza el costo</b>” de mejor forma, esto debido a que funciona en el ambiente On-Demand (a demanda), Instancias Spot y Serverless; y además tiene una regulación de capacidad autogestionada asegurando al máximo la optimización de recursos.</p><p>Cohesionada completamente con los otros servicios de Amazon, su seguridad, red y alta disponibilidad están soportadas en una amplia y completa tecnología de la Nube, además de poder usar integrada y fácilmente soluciones de BigData, Machine Learning o Bases de Datos entre otras.</p><h3>Clusters, Servidores y Provisionamiento</h3><p>Tanto las soluciones Amazon Elastic Kubernetes Service (EKS) y Amazon Elastic Container Service (ECS) orquestan contenedores que entregan varios servicios de Software a la compañía, pero dichos contenedores están en servidores y organizados en clusters.</p><p>Para la provisión de estos clusters y sus servidores correspondientes Amazon nos provee de tres enfoques:</p><h4>Servidores administrados</h4><p><b>Amazon EC2</b> es la solución de cómputo por excelencia de Amazon, en donde podemos provisionar instancias con diferentes características, estas instancias son usadas para conformar la infraestructura necesaria que se va a orquestar con estas soluciones.</p><p>En el caso de Amazon Elastic Container Service (ECS) tenemos la gran ventaja de trabajar con instancias On-Demand y Spot, con lo cual los costos estarían en relación con el número de horas que se utiliza esa capacidad de cómputo.</p><h4>Serverless</h4><p>Una de las extraordinarias ventajas de Amazon es la posibilidad de provisionar la capacidad de cómputo requerida por los contenedores con cero administración.</p><p><b>AWS Fargate</b> permite especificar y pagar recursos por aplicación y mejora la seguridad mediante el aislamiento de aplicaciones por diseño.</p><p>Esta tecnología puede ser orquestada tanto desde Amazon Elastic Kubernetes Service (EKS) como de Amazon Elastic Container Service (ECS).</p><h4>On-promise</h4><p>Existen escenarios donde la latencia o las regulaciones de las empresas requieren de soluciones On-promise, en este sentido tanto Amazon Elastic Kubernetes Service (EKS) como Amazon Elastic Container Service (ECS) están en capacidad de ser ejecutadas en su Data Center.</p><p>Así mismo, en su Data Center, puede optar por correr el Servicio de cómputo Amazon EC2 para trabajar en conjunto con su solución Amazon EKS o Amazon ECS; incluso podría decidir crear una nube híbrida donde use capacidad su cómputo On-promise y en la Nube de Amazon.</p><blockquote><p>“Amazon Web Services provee soluciones para correr ambientes de contenerización completos en la Nube de Amazon, en ambientes Híbridos o en ambientes On-promise.”</p></blockquote><h3>Registro de imágenes</h3><p>En el mundo de contenedores, cada uno representa una unidad funcional de Software, por lo que nuevas versiones de ese Software, vienen a estar disponibles en nuevas versiones del contenedor.</p><p>Así mismo existen diferentes unidades de Software que proveen diferentes servicios a la compañía y que están disponibles en diferentes contenedores, cada uno con su propia definición.</p><p>Tanto la definición en sí del contenedor como su unidad de Software cohesionada requieren de una administración de versiones en el tiempo, que permite entre otras cosas desplegar nuevas características del software, ejecutar procesos de rollback e implementar estrategias de entrega continua (CD continuous delivery).</p><blockquote><p>“Tanto la definición en sí del contenedor como su unidad de Software cohesionada requieren de una administración de versiones en el tiempo.”</p></blockquote><p>Para la gestión de este versionamiento, en el mundo de contenedores existen herramientas “repositorio de imágenes” que funcionan en conjunto con los orquestadores de imágenes y que son la base del gobierno TI y DevOps en una compañía.</p><p><b>Amazon Elastic Container Registry (ECR)</b> es la solución de registro de imágenes que nos ofrece Amazon, completamente administrable donde su equipo de TI tiene el control absoluto.</p><p>Está diseñada para ser <u>escalable, redundante y durable</u>, pero principalmente es una solución completamente <b>segura</b>, ya que trabaja sobre HTTPS y con encriptación de las imágenes en su repositorio por defecto.</p><p>Trabaja integrado a servicios como Amazon EKS y Amazon ECS, pero lo más importante es que es compatible con <a href="https://docs.docker.com/engine/reference/commandline/cli/" target="_blank" rel="noopener nofollow">Docker CLI</a> esto quiere decir que puede usarse como alternativa de repositorio de imágenes sin restricciones de usarlo desde tecnologías de Amazon.</p><h3>Observabilidad y Red</h3><p>Hablando del concepto “observabilidad” en Tecnología de Información, Amazon provee varias soluciones que permiten implementar una adecuada estrategia;  y aunque estas soluciones no son exclusivas de un ambiente de contenerización, están completamente integradas al funcionamiento de la Nube de Amazon.</p><h4>Amazon CloudWatch</h4><p><b>Amazon CloudWatch</b> es el servicio de Amazon que permite <b>monitorear, recopilar, analizar y actuar</b> sobre la información del desempeño de los recursos de hardware así como sobre los logs de las aplicaciones en un ambiente seguro y encriptado.  </p><p>Entre las grandes ventajas de Amazon CloudWatch, está la reacción preventiva y correctiva que es capaz de gestionar brindando respuestas para disponer de alta disponibilidad, recuperación de desastres y resiliencia en sus soluciones.  Sin duda es un servicio transversal a toda la Nube de Amazon.</p><h4>Amazon X-Ray</h4><p>La trazabilidad del sistema o lo que podríamos llamar el análisis de inicio a fin (end to end) se puede gestionar a través de <b>Amazon X-Ray</b>, una solución de Amazon que permite mirar como se comporta el sistema en sus diferentes fases de ejecución así obteniendo respuestas para corrección de errores, y, mejoras de performance y arquitectura.</p><p>Amazon X-Ray, es además la solución principal a la hora de depurar microservicios por sus mismas características, y funciona integradamente con estilos de aplicaciones Serverless como el uso combinado de Amazon API Gateway y Amazon Lambda.</p><h4>AWS App Mesh</h4><p>En un ambiente contenerizado las interacciones entre contenedores, servidores y clusters tienen retos en su gestión dada su naturaleza, puertos, protocolos, etc. y a medida en que su número se incrementa el reto de visibilizar su flujo se vuelve complejo.  </p><p><b>AWS App Mesh</b> es un servicio de Amazon que permite estandarizar esta gestión de forma que las comunicaciones provean una visibilidad de inicio a fin de las transacciones, asegurando siempre la posibilidad de controlar el tráfico, auditar seguridades, realizar enrutamientos y entregar en general una alta disponibilidad.</p><p>AWS App Mesh es ideal para los sistemas contenerizados, y además utiliza tecnología Open Source <a href="https://www.envoyproxy.io" target="_blank" rel="noopener nofollow">Envoy</a> que asegura una compatibilidad con otros servicios y una independencia de tecnología.</p><h3>Herramientas de Implementación</h3><p>Sin duda toda herramienta de gestión y desarrollo que nos permita reducir los esfuerzos de implementación, de automatización, de gestión y en general de carga administrativa son un importante punto de decisión a la hora de implementar una estrategia de contenerización.</p><p>No es lo mismo implementar un Software manualmente de archivo en archivo que usar una ambiente integrado de desarrollo (IDE)&#8230; si bien es posible, es más óptimo tener ayudas y servicios que agilicen los temas técnicos y nos dejen concentrar en el negocio.</p><blockquote><p>“No es lo mismo implementar un Software manualmente de archivo en archivo que usar una ambiente integrado de desarrollo (IDE).”</p></blockquote><p>Amazon oferta múltiples herramientas para la gestión e implementación de contenedores, entre las cuales tenemos AWS CloudFormation, AWS Copilot y AWS App2Container, y, Amazon ECS CLI.</p><h4>AWS CloudFormation</h4><p>Es la herramienta por excelencia de Amazon para provisionar infraestructura como código (IaC), e incluye las definiciones relacionadas con esquemas contenerizados.</p><p>Esta herramienta le va a permitir automatizar la provisión de su infraestructura en caso de replicación de ambientes, implementación de esquemas de alta disponibilidad o recuperación de desastres.</p><p>Una de las grandes ventajas es que puede funcionar con la semántica del producto <a href="https://www.terraform.io" target="_blank" rel="noopener nofollow">Terraform</a>, con lo que podrá provisionar sus ambientes en su tecnología preferida.</p><h4>AWS Copilot y AWS App2Container</h4><p><b>AWS Copilot</b> es una herramienta de línea de comandos, que permite lanzar y gestionar aplicaciones contenerizadas rápidamente.  Con AWS Copilot puede automatizar el despliegue de su aplicación de Software hacia un ambiente contenerizado con las mejores prácticas a partir de un archivo Dockerfile.</p><p>Para al caso de aplicaciones legadas .NET o Java, Amazon nos provee de la herramienta de línea de comandos <b>AWS App2Container</b>, la cual analiza la aplicación objetivo, identificando las dependencias y las tecnologías necesarias para provisionar automáticamente la infraestructura requerida en un cluster Amazon ECS o Amazon EKS.</p><h4>Amazon ECS CLI</h4><p>Como la mayor parte de tecnologías, Amazon ECS incluye una herramienta de administración a través de la línea de comandos llamada Amazon ECS CLI, y es importante remarcarla en esta introducción a los contenedores en AWS ya que simplifica la creación, actualización y monitoreo de los cluster y los contenedores (tasks) desde un ambiente de desarrollo.</p><p>Esta herramienta CLI soporta archivos de Docker Compose con lo que se puede contenerizar aplicaciones que requieren múltiples contenedores.</p><p>Una importante característica es que Amazon ECS CLI es una herramienta Open Source con su código fuente disponible en GitHub con lo que usted puede extender su funcionalidad y explorar la actual.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-07c7be2 elementor-widget elementor-widget-text-editor" data-id="07c7be2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>Pensamientos Finales</h2><p>La contenerización de aplicaciones nos provee de muchas ventajas en la resiliencia de los servicios Software, la maximización de recursos de Infraestructura y más importante en la Agilidad que la empresa tiene frente a un mercado tan cambiante.</p><p>Sin embargo, en el mundo de la contenerización, a medida que el número de aplicaciones de Software va creciendo, el departamento de Tecnología de Información debe definir una estrategia que permita gestionar adecuadamente esta plataforma y su crecimiento de modo que no tenga costo de negocio y/o económico por fallos.</p><p>La selección de tecnología para esta plataforma obedece a la estrategia en sí de la empresa para su crecimiento y específicamente a la característica del problema u oportunidad de negocio que estamos automatizando.</p><p>Una estrategia de la implementación en la Nube de AWS sin duda nos da posibilidad de uso, que sería mucha más compleja de implementar On-premise por costos y recursos, y, además se puede ajustar a un presupuesto y alcance definido con una amplia oferta de posibilidades tecnológicas.</p><p>Hemos querido aportarle a usted como Líder Tecnológico, en esta introducción a los contenedores en AWS, una completa vista de las opciones que Amazon dispone para que pueda tomar una decisión informada.  Es importante recalcar que en el mundo de la Nube la arquitectura de aplicaciones es diferente a la arquitectura On-premise y siempre se recomienda el acompañamiento de un Consultor preparado en estos temas de forma que se tome en cuenta siempre una Solución bien Diseñada.</p><p>Gracias por su tiempo y si tiene más dudas continuemos la conversación <a href="https://cloudiostrategy.com/contacto/">aquí</a>.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/introduccion-a-los-contenedores-en-aws/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AWS Copilot potencia AWS CLI</title>
		<link>https://cloudiostrategy.com/aws-copilot-potencia-aws-cli/</link>
					<comments>https://cloudiostrategy.com/aws-copilot-potencia-aws-cli/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Mon, 27 Jul 2020 20:30:00 +0000</pubDate>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Contenedores]]></category>
		<category><![CDATA[Deploy]]></category>
		<category><![CDATA[ec2]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=1410</guid>

					<description><![CDATA[El servicio de Amazon Elastic Compute Cloud (EC2) es uno de los primeros y más eficaces servicios de AWS, que disponía de la opción de administración a través de la […]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">El servicio de Amazon Elastic Compute Cloud (EC2) es uno de los primeros y más eficaces servicios de AWS, que disponía de la opción de administración a través de la interfaz de comando llamada AWS CLI (AWS Command Line Interface); hoy AWS Copilot potencia AWS CLI.</p>



<p class="wp-block-paragraph">AWS ha venido desde hace algún tiempo trabajando en mejorar la forma de desplegar aplicaciones en Amazon EC2, dado que este proceso tenía muchas oportunidades de mejora ha creado una nueva herramienta pensada desde cero para hacer simple y rápido el despliegue de aplicaciones en Amazon EC2.  </p>



<p class="wp-block-paragraph">La idea es pasar de nuestra visión de la infraestructura hacia la implementación rápidamente y dejar los conceptos comunes de una arquitectura en la nube como red, blanaceadores, pipelines, storage, etc. se autogeneren de forma confiable y eficiente.</p>



<p class="wp-block-paragraph">Más en: <a aria-label="undefined (opens in a new tab)" href="https://aws.amazon.com/blogs/containers/introducing-aws-copilot/" target="_blank" rel="noreferrer noopener nofollow">Introducing AWS Copilot</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/aws-copilot-potencia-aws-cli/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
