<?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>DynamoDB &#8211; Cloud IO Strategy</title>
	<atom:link href="https://cloudiostrategy.com/tag/dynamodb/feed/" rel="self" type="application/rss+xml" />
	<link>https://cloudiostrategy.com</link>
	<description></description>
	<lastBuildDate>Tue, 30 Jan 2024 21:35:47 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://cloudiostrategy.com/wp-content/uploads/2023/06/cropped-favicon-32x32.png</url>
	<title>DynamoDB &#8211; Cloud IO Strategy</title>
	<link>https://cloudiostrategy.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Explorando Límites de AWS Lambda</title>
		<link>https://cloudiostrategy.com/explorando-limites-de-aws-lambda/</link>
					<comments>https://cloudiostrategy.com/explorando-limites-de-aws-lambda/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Tue, 30 Jan 2024 21:28:05 +0000</pubDate>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Amazon API Gateway]]></category>
		<category><![CDATA[AWS Lambda]]></category>
		<category><![CDATA[DynamoDB]]></category>
		<category><![CDATA[serverless]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=3241</guid>

					<description><![CDATA[En este post Explorando Límites de AWS Lambda, les traemos un proyecto Playbook OpenSource base que puede ayudarlos a crear y preparar su infraestructura para probar los límites de Lambda […]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">En este post Explorando Límites de AWS Lambda, les traemos un proyecto Playbook OpenSource base que puede ayudarlos a crear y preparar su infraestructura para probar los límites de Lambda para sus casos de uso.</p>



<h2 class="wp-block-heading">Explorando Límites de AWS Lambda &#8211; Porque</h2>



<p class="wp-block-paragraph">Es muy común implementar una solución Serverless en AWS utilizando los servicios API Gateway, AWS Lambda y DynamoDB, y, probar esta arquitectura para nuestro caso de uso es crucial al diseñar una solución.  </p>



<p class="wp-block-paragraph">Así, cuando trabajamos la charla <a href="https://speakerdeck.com/pazfernando/como-manejar-100k-conexiones-simultaneas-en-aws" target="_blank" rel="noreferrer noopener nofollow">¿Como manejar 100K conexiones simultáneas en AWS?</a> en Serverless o probamos los nuevos límites de AWS Lambda de acuerdo al anuncio <a href="https://aws.amazon.com/blogs/aws/aws-lambda-functions-now-scale-12-times-faster-when-handling-high-volume-requests/" target="_blank" rel="noreferrer noopener nofollow">Las funciones de AWS Lambda ahora escalan 12 veces más rápido cuando manejan solicitudes de gran volumen</a>, nos vimos en la necesidad de crear recursos y ambientes, una y otra vez hasta crear el escenario perfecto.</p>



<p class="wp-block-paragraph">Por eso decidimos crear un proyecto base como infraestructura como código que pueda apoyarlos para sus propias pruebas.  El repositorio es público y de código abierto, y lo pueden encontrar aquí <a href="https://github.com/pazfernando/serverless-limits-playbook-test" target="_blank" rel="noreferrer noopener nofollow">serverless-limits-playbook-test</a>.</p>



<figure class="wp-block-image aligncenter size-large"><a href="https://github.com/pazfernando/serverless-limits-playbook-test" target="_blank" rel="noreferrer noopener nofollow"><img fetchpriority="high" decoding="async" width="1024" height="409" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-1024x409.webp" alt="" class="wp-image-3253" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-1024x409.webp 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-300x120.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-768x307.webp 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-1536x614.webp 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55.webp 1591w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



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



<p class="wp-block-paragraph">La idea principal en esta versión es crear una arquitectura de un API RESTful con API Gateway integrado a un función AWS Lambda para llamadas sincrónicas, y crear una instancia EC2 con una instalación de JMeter para lanzar pruebas de carga.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a3980d5359fd&quot;}" data-wp-interactive="core/image" data-wp-key="6a3980d5359fd" class="wp-block-image aligncenter size-full wp-lightbox-container"><img decoding="async" width="736" height="369" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/AWS-Lambda-Limits-Test.webp" alt="" class="wp-image-3258" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/AWS-Lambda-Limits-Test.webp 736w, https://cloudiostrategy.com/wp-content/uploads/2024/01/AWS-Lambda-Limits-Test-300x150.webp 300w" sizes="(max-width: 736px) 100vw, 736px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">Aunque en el código podrán observar también:</p>



<ul class="wp-block-list">
<li>Habilitación de CORS</li>



<li>Bloque de código para llamadas asincrónicas (comentado)</li>



<li>Configuración para <strong>reserve concurrency</strong> en AWS Lambda.</li>



<li>El script <code>setup.sh</code> para adicionar configuraciones a su instancia EC2.</li>



<li>El script <code>index.mjs</code> para definir la implementación real de su función AWs Lambda.</li>



<li>Un identificador único para peticiones desde a lambda (opcional podrían eliminarlo).</li>
</ul>



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



<p class="wp-block-paragraph">Dependiendo de su caso de uso necesitarán configuraciones generales en su cuenta, pero aquí presentamos las básicas.</p>



<ul class="wp-block-list">
<li>Tener una Default VPC en la region que vayan a probar.</li>



<li>Crear un Role en IAM que permita escribir desde API Gateway a CloudWatch.</li>



<li>Asignar dicho rol a las configuraciones del servicio API Gateway en la región donde se va ha hacer pruebas.</li>



<li>Tener los Server Limits adecuados a su prueba, especialmente los de AWS Lambda &#8220;<strong>Burst Concurrency</strong>&#8221; y &#8220;<strong>Concurrent Executions</strong>&#8220;.</li>
</ul>



<h3 class="wp-block-heading">Despliegue de recursos</h3>



<p class="wp-block-paragraph">Al ser un proyecto IaaC construido con AWS CDK, pues evidentemente usamos los comando apropiados.  A continuación la lista de pasos:</p>



<ul class="wp-block-list">
<li>Cambiar las variables <code><strong>const targetRegion</strong></code> y <strong><code>const targetAccount</code></strong> en el archivo de los fuentes <code><strong>/bin/infra.ts</strong></code> apropiadamente.</li>



<li><a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html" target="_blank" rel="noreferrer noopener nofollow">Instala AWS CLI la última versión</a>.</li>



<li><a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noreferrer noopener nofollow">Instala Node.js 20 o superior</a>.</li>



<li><a href="https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install" target="_blank" rel="noreferrer noopener nofollow">Instala el último AWS CDK</a>.</li>



<li>En la carpeta del proyecto corre cdk boostrap para preparar la región para IaaC.</li>



<li>Ejecuta cdk synth para verificar que tus fuentes estén correctos.</li>



<li>Ejecuta cdk deploy para crear los recursos descritos en la arquitectura.</li>
</ul>



<p class="wp-block-paragraph">Usamos <a href="https://docs.aws.amazon.com/cdk/" target="_blank" rel="noreferrer noopener nofollow">AWS CDK</a> para este proyecto, pero podrías reemplazar o hacer tus versiones con <a href="https://www.terraform.io/" target="_blank" rel="noreferrer noopener nofollow">Terraform</a> u <a href="https://opentofu.org/" target="_blank" rel="noreferrer noopener nofollow">OpenTofu</a> respectivamente.  Hacerlo con AWS Cloud Formation es otra opción aunque no lo recomiendo. </p>



<h3 class="wp-block-heading">Lanzamiento de carga masiva</h3>



<p class="wp-block-paragraph">Para ejecutar las pruebas masivas con JMeter es necesario ingresar a la instancia EC2 creada a través de la Consola Web y con EC2 Instance Connect, dado que no se asoció un server key al momento de su creación.  </p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6a3980d536a00&quot;}" data-wp-interactive="core/image" data-wp-key="6a3980d536a00" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="628" height="142" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/ec21.webp" alt="" class="wp-image-3248" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/ec21.webp 628w, https://cloudiostrategy.com/wp-content/uploads/2024/01/ec21-300x68.webp 300w" sizes="(max-width: 628px) 100vw, 628px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6a3980d53748c&quot;}" data-wp-interactive="core/image" data-wp-key="6a3980d53748c" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="819" height="704" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/ec22.webp" alt="" class="wp-image-3249" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/ec22.webp 819w, https://cloudiostrategy.com/wp-content/uploads/2024/01/ec22-300x258.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/ec22-768x660.webp 768w" sizes="(max-width: 819px) 100vw, 819px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<p class="wp-block-paragraph">Una vez en el shell los comandos son los siguientes:</p>



<ul class="wp-block-list">
<li>Cambia a root el usuario: <code><strong>sudo -i</strong></code>.</li>



<li>Edita el archivo LambdaConcurrencyLimits.jmx con <code><strong>vi /tmp/LambdaConcurrencyLimits.jmx</strong></code> con el url de tu API RESTful (esa url la obtienes como salida del comando cdk deploy al final del log).</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="907" height="178" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/cdkdeployoutput.webp" alt="" class="wp-image-3250" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/cdkdeployoutput.webp 907w, https://cloudiostrategy.com/wp-content/uploads/2024/01/cdkdeployoutput-300x59.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/cdkdeployoutput-768x151.webp 768w" sizes="(max-width: 907px) 100vw, 907px" /></figure>



<p class="wp-block-paragraph">Ejecuta los test JMeter de carga con </p>



<pre class="wp-block-code"><code><strong>rm -Rf /var/www/html/stats/* &amp;&amp; rm -f /tmp/stats.jtl &amp;&amp; /opt/apache-jmeter-5.6.2/bin/jmeter -n -t /tmp/LambdaConcurrencyLimits.jmx -l /tmp/stats.jtl -e -o /var/www/html/stats.</strong></code></pre>



<h3 class="wp-block-heading">Pruebas en JMeter</h3>



<p class="wp-block-paragraph">Mientras se puede escribir un blog entero de pruebas en JMeter, el archivo creado esta compuesto de las siguintes características:</p>



<ul class="wp-block-list">
<li>Cinco grupos de usuarios (hilos)</li>



<li>Primer grupo lanza 1001 usuarios en 10 segundos.</li>



<li>Segundo grupo lanza 2001 usuarios en 20 segundos.</li>



<li>Tercer grupo lanza 3001 usuarios en 30 segundos.</li>



<li>Cuarto y quinto grupo lanza 0 usuarios, y están en el archivo jmx para que los usen como lo prefieran para su caso de prueba.</li>



<li>Se prueba una URL con un HTTP Request de tipo GET al API RESTful creado.</li>



<li>El  URL del API Gateway RESTful esta externalizado en el argumento <strong><code>url-api-gateway</code></strong>.</li>
</ul>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="936" height="176" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-46-08.webp" alt="" class="wp-image-3261" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-46-08.webp 936w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-46-08-300x56.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-46-08-768x144.webp 768w" sizes="(max-width: 936px) 100vw, 936px" /></figure>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">Evidentemente estas pruebas no se ajustan a tu caso de uso y deberás cambiarlas apropiadamente, sin embargo el mecanismo de lanzamiento y la instancia EC2 configurada va a reducir el tiempo para esta operación.</p>



<h3 class="wp-block-heading">Métricas</h3>



<p class="wp-block-paragraph">Una vez desplegada la infraestructura, y ejecutados las pruebas podremos monitorear los recursos y tomar las acciones correspondientes.</p>



<p class="wp-block-paragraph">A continuación algunos gráficos que vamos a poder obtener:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph">API Gateway</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a3980d5385b1&quot;}" data-wp-interactive="core/image" data-wp-key="6a3980d5385b1" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="328" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-1024x328.webp" alt="" class="wp-image-3263" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-1024x328.webp 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-300x96.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-768x246.webp 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-1536x492.webp 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14.webp 1564w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph">AWS Lambda</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a3980d53900f&quot;}" data-wp-interactive="core/image" data-wp-key="6a3980d53900f" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="294" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59-1024x294.webp" alt="" class="wp-image-3262" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59-1024x294.webp 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59-300x86.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59-768x221.webp 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59.webp 1030w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<p class="wp-block-paragraph">Además siempre vamos a tener Grupos de Logs en Amazon CloudWatch apropiados para el caso de uso y por servicio para analizar los resultados:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="241" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-1024x241.webp" alt="" class="wp-image-3264" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-1024x241.webp 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-300x71.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-768x181.webp 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-1536x361.webp 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59.webp 1565w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>IMPORTANTE</strong>: siempre al finalizar las pruebas no olviden ejecutar <strong><code>cdk destroy</code></strong> para decomisar los recursos usados y evitar facturación innecesaria.</p>



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



<p class="wp-block-paragraph">En este Playbook Explorando Límites de AWS Lambda, hemos podido plasmar un proyecto de código abierto para que puedan acelerar sus pruebas de implementaciones.  Sin embargo hay mucho que mejorar en el mismo, como la inclusión de secrets con Secrets Manager para gestionar números de cuenta y otros parámetros sensibles y que <strong><span style="text-decoration: underline;">NO</span></strong> deben estar en su repositorio de fuentes.</p>



<p class="wp-block-paragraph">También este proyecto nos ayuda en la inmersión en el mundo apasionante que significa AWS CDK, y con el cual pueden gestionar su infraestructura de forma completamente automatizada.</p>



<p class="wp-block-paragraph">Vale mencionar que en un proyecto de AWS CDK <span style="text-decoration: underline;"><strong>jamás deben subir el directorio cdk.out</strong></span>, dado que aquí como resultado de la compilación de los archivos Typescript a archivos propios de AWS Cloud Formation ((JSON por ejemplo), puede y va a quedar información sensible como números de cuenta y/o claves.</p>



<p class="wp-block-paragraph">Para hacer uso de este enfoque de despliegue es necesario estar familiarizado con AWS CLI ya que con este generarán perfiles que contengan accesos de los usuarios de su cuenta, y con tales accesos se crearán los recursos.  Entonces es importante que los usuarios asociados tengan los permisos correspondientes.</p>



<p class="wp-block-paragraph">Los límites que tengan para su cuenta y por región van a incidir directamente en sus pruebas en caso de altas cargas de procesamiento, por lo que se debe tener en cuenta los mismos al momento de planificar la implementación.</p>



<p class="wp-block-paragraph">Les animamos a dejar su feedback para mejorar el proyecto, sea aquí o en el repositorio de GitHub, y esperamos que sea de utilidad este proyecto &#8220;Explorando Límites de AWs Lambda&#8221;.</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/explorando-limites-de-aws-lambda/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Introducción al uso de Bases de Datos en AWS</title>
		<link>https://cloudiostrategy.com/introduccion-al-uso-de-bases-de-datos-en-aws/</link>
					<comments>https://cloudiostrategy.com/introduccion-al-uso-de-bases-de-datos-en-aws/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Mon, 10 Aug 2020 21:31:28 +0000</pubDate>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Aurora]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[DynamoDB]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[RDS]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=1435</guid>

					<description><![CDATA[AWS nos ofrece varios servicios que nos ayudarán a gestionar una o varias Bases de Datos para nuestra empresa. En esta Introducción al uso de Bases de Datos en AWS […]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">AWS nos ofrece varios servicios que nos ayudarán a gestionar una o varias Bases de Datos para nuestra empresa.  En esta Introducción al uso de Bases de Datos en AWS vamos a plantear una serie de alternativas que su organización puede optar para esta implementación.</p>



<h3 class="wp-block-heading">Tipos de Bases de Datos</h3>



<p class="wp-block-paragraph">Antes de empezar a describir las alternativas queremos puntualizar en esta sección los tipos de Bases de Datos comunes que podemos implementar en AWS, para posteriormente analizarlas cada una:</p>



<ul class="wp-block-list"><li>Relacionales: aquí tenemos las tradicionales que se conceptualizan en base a relaciones de datos, como por ejemplo PostgreSQL, Oracle o SQL Server.</li><li>NO SQL: aquí tenemos las bases de datos que definen a los mismos como Documentos y/o por Clave-Valor, como MongoDB o Redis.</li><li>Datawarehouse: son aquellas usadas para OLAP, en donde se agrupan y procesan grandes cantidades de diferentes fuentes de datos para obtener un resultado, por ejemplo Teradata o Oracle Exadata.</li></ul>



<h3 class="wp-block-heading">Bases de Datos Relacionales</h3>



<p class="wp-block-paragraph">AWS nos ofrece seis soluciones de Base de Datos como Servicio (DBaaS) que son las siguientes: SQL Server, Oracle, MySQL Server, PostgreSQL, Aurora y MariaDB.</p>



<p class="wp-block-paragraph">Todas estas incluyen el licenciamiento de uso (si se requiere) y la gestión de actualizaciones y updates del Sistema Operativo, incluido en el servicio, por lo que no tendrá que preocuparse de estos aspectos y costos.</p>



<p class="wp-block-paragraph">Adicionalmente a la caracterización de cada una, AWS proporciona servicios de Alta Disponibilidad de Disaster Recovery para cada engine, de forma que puede automáticamente recuperarse y gestionar los respaldos; para esto usa Snapshots y varios Data Centers (AZ).</p>



<p class="wp-block-paragraph">Puede optar por un servicio post pago por hora (on-demand) o pre pago por años (upfront) para el uso, y, tiene al alcance varias configuraciones con diferentes características de RAM y CPU e IOPS (I/O por segundo), además de múltiples opciones de auto escalamiento y monitoreo.</p>



<p class="wp-block-paragraph">En cuanto a seguridades, se puede activar la encriptación de datos que complementado con redes privadas, administración de accesos de red con firewall (Security Groups) y gestión de usuarios y accesos (IAM) aseguran completamente la información.</p>



<h3 class="wp-block-heading">Bases de Datos No SQL</h3>



<p class="wp-block-paragraph">AWS ofrece DynamoDB, ElastiCache (Redis y Memcached) como alternativas DBaaS, soluciones orientadas a Documentos y Clave-Valor completamente tolerantes a fallos, altamente disponibles y extremadamente escalables, con latencia de entre milisegundos a microsegundos según la configuración.</p>



<p class="wp-block-paragraph">DynamoDB es operable a través de un API de acceso y a través de la consola de Administración y funciona completamente en el sentido Serverless.  La característica Serverless nos permite solo preocuparnos por crear definiciones, y todo el almacenamiento, respaldos, alta disponibilidad y escalamiento es completamente transparente al uso.</p>



<p class="wp-block-paragraph">ElastiCache tiene dos opciones Redis y Memcached, que funcionan con el protocolo propio, por lo que no requieren algo adicional en las aplicaciones.</p>



<p class="wp-block-paragraph">Se puede optar por el uso post pago, tanto por petición o por capacidad provisionada, lo que significa que pagamos por el número de peticiones realizadas en un período o por hora de disponibilidad de una capacidad provisionada dependiendo del servicio.  También existe la opción de pre-pago por nodo (instancia) reservada entre 1 a 3 años.</p>



<p class="wp-block-paragraph">Tienen características de Backup y Restore automático y en el caso de DynamoDB cuenta con el concepto PITR (Point in Time Recovery) llegando a recuperar datos en le periodo de 5 minutos a 35 días en el pasado.</p>



<p class="wp-block-paragraph">En cuanto las seguridades los datos pueden o son encriptados (dependiendo del engine) usando KMS, lo que de igual forma sumado a estrategias de VPN, Direct Connect, y, gestión de usuarios y accesos (IAM) aseguran completamente la información. </p>



<h3 class="wp-block-heading">Bases de Datos Datawarehouse</h3>



<p class="wp-block-paragraph">Presentamos en esta sección al Servicio de Amazon Redshift como DBaaS, diseñado para gestionar un Datawarehouse y/o Business Intelligent.</p>



<p class="wp-block-paragraph">Se trata de una base de datos relacional con excelente performance que puede escalar en orden de los Pentabytes y es almacenada por columna y no por registro, en el concepto &#8220;Store Data&#8221;, lo que reduce el IOPS (I/O por segundo).</p>



<p class="wp-block-paragraph">Tiene la opción de gestión de backups automáticos con periodos de retención de 1 a 35 días y cuenta con opciones de configuración por nodos, desde un solo nodo hasta un máximo de 128 nodos.  La ventaja de múltiples nodos, significa más computo en paralelo consiguiendo procesar datos y cálculos más rápidamente y tener indicadores en tiempo real.</p>



<p class="wp-block-paragraph">De igual forma se puede optar por post pago (on-demand) o pre pago (upfront) de 1 a 3 años.  El costo esta en relación al número de nodos utilizados/reservados y la configuración de RAM y CPU de cada nodo.  Además se cancela un costo por backups y transferencias de datos entre lugares de la VPC (Virtual Private Cloud).</p>



<p class="wp-block-paragraph">En cuanto a las consideraciones de seguridades, Redshift usa SSL para el tránsito de información y los datos están cifrados con AES-256.  De igual forma como en los anteriores escenarios las estrategias firewall (Security Groups), redes privadas y gestión de usuarios y accesos (IAM) complementa la completa seguridad de la información.</p>



<h3 class="wp-block-heading">EC2 y las Bases de Datos</h3>



<p class="wp-block-paragraph">Evidentemente existe la opción, completamente factible, de gestionar una Base de Datos de forma manual, a través del servicio IaaS AWS Elastic Cloud Computing (EC2).</p>



<p class="wp-block-paragraph">EC2 nos permitirá provisionar Servidores en AWS con diferentes opciones de Sistemas Operativos y configuraciones en capacidad, como la RAM , el CPU y el Disco Duro, si desea saber más puede ver la <a href="https://cloudiostrategy.com/introduccion-al-uso-de-servidores-en-aws/" target="_blank" rel="noreferrer noopener">Introducción al uso de Servidores en AWS</a>.</p>



<p class="wp-block-paragraph">Estos servidores combinados con discos de almacenamiento sean Elastic Block Storage (EBS) o Elastic File System (EFS) y un estratégía de Recuperación y Respaldos, nos dan la posibilidad de tener cualquiera de las altenativas descritas (incluso DynamoDB)  implementadas manualmente de acuerdo a nuestro requerimiento.</p>



<p class="wp-block-paragraph">En este escenario es importante considerar que los parches y actualizaciones del Sistema Operativo y el engine de Base de Datos son responsabilidad del usuario.</p>



<p class="wp-block-paragraph">Otro aspecto importante es que los temas de Failover y Continuidad de Negocio se debe gestionar igualmente de forma manual, con estrategias como disponer nuestras Bases de Datos en diferentes AZ (Data Centers) y/o Regiones y uso de herramientas relacionadas.</p>



<p class="wp-block-paragraph">En cuanto al tema de costos, se debe considerar aquellos relacionados a las instancias EC2, asi como los discos EBS y/o EFS utilizados, y probablemente la tranferencia de datos entre AZ y/o Regiones que demandaría un esquema de alta disponibilidad (HA).</p>



<h4 class="wp-block-heading">Declaración</h4>



<p class="wp-block-paragraph">Existen muchas <a href="https://aws.amazon.com/es/products/databases/" target="_blank" rel="noreferrer noopener nofollow">otras soluciones en AWS</a> menos frecuentes pero disponibles, que no se mencionaron en esta Introducción a Bases de Datos en AWS, por temas de tiempo y al ser una introducción.</p>



<p class="wp-block-paragraph">Las enumeramos con el fin de que ustedes puedan en algún momento investigar más; por supuesto si desean profundizar en alguna lo pueden solicitar en los comentarios.  Los Servicios de Base de Datos son: DocumentDB, Keyspaces, Neptune, Timestream y QLDB.</p>



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



<p class="wp-block-paragraph">Esperamos que les sea útil esta Introducción a Bases de Datos en AWS, y podamos haber provisto un vistazo, de forma muy general, a las opciones que disponen aquí.</p>



<p class="wp-block-paragraph">Hemos visto las alternativas más omunes en diferentes casos e uso de las Bases de Datos y las cuestiones principales relacionadas a las características, su forma de uso, las configuraciones, los costos y las seguridades.</p>



<p class="wp-block-paragraph">Les animamos a solicitar en los comentarios y/o redes sociales si desean profundizar en algun tema de los revisados.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/introduccion-al-uso-de-bases-de-datos-en-aws/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
