<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Memo Döring</title>
    <description>The latest articles on DEV Community by Memo Döring (@memodoring).</description>
    <link>https://dev.to/memodoring</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F74450%2F730c2005-891b-4f58-a278-dad9cdfb712f.jpeg</url>
      <title>DEV Community: Memo Döring</title>
      <link>https://dev.to/memodoring</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/memodoring"/>
    <language>en</language>
    <item>
      <title>Opciones de procesamiento en AWS</title>
      <dc:creator>Memo Döring</dc:creator>
      <pubDate>Mon, 27 Jan 2020 15:56:57 +0000</pubDate>
      <link>https://dev.to/aws/opciones-de-procesamiento-en-aws-42ae</link>
      <guid>https://dev.to/aws/opciones-de-procesamiento-en-aws-42ae</guid>
      <description>&lt;h1&gt;
  
  
  Opciones de procesamiento en AWS
&lt;/h1&gt;

&lt;p&gt;En AWS nos esforzamos por proporcionarle a nuestros usuarios una caja de herramientas extensa y flexible. Así los usuarios pueden tomar las decisiones de arquitectura e implementación que mejor se adapten a la fortaleza y experiencia de su equipo. Un lugar donde esto se ve reflejado, es en la diversidad de los (más de 175) servicios disponibles en la consola de AWS.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Esta es la lista de todos los servicios dentro de la categoría &lt;em&gt;compute&lt;/em&gt; de la consola de AWS &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fkq6lnmlx527qjb5csspe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fkq6lnmlx527qjb5csspe.png" alt="Screenshot de la consola de A&amp;lt;br&amp;gt;
WS" width="538" height="622"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Elegí escribir sobre las opciones de procesamiento, porque me parece un tema que puede ser de gran ayuda para todos. Ya que, en algún momento, todos los que trabajamos con tecnología, tendremos que tomar una decisión que dependerá de cómo se realiza el procesamiento de nuestra aplicación. Es igual de importante, para alguien migrando una aplicación ya existente, como para alguien comenzando un desarrollo desde cero.&lt;/p&gt;

&lt;p&gt;Mi objetivo es cubrir las diferentes opciones disponibles en AWS y definir conceptos generales, con la meta de ayudar a tomar una decisión informada.&lt;/p&gt;




&lt;h2&gt;
  
  
  Las Categorías
&lt;/h2&gt;

&lt;p&gt;Con el fin de darle un marco al contenido, voy a dividir los servicios en tres grandes categorías, aunque vale la pena mencionar que algunos de los servicios podrían estar en más de una categoría:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Instancias&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Serverless&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Contenedores&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Instancias
&lt;/h3&gt;

&lt;p&gt;Las instancias son entornos informáticos virtuales (&lt;em&gt;virtual computing environments&lt;/em&gt;) y son el componente fundamental para la operación en Amazon Elastic Compute Cloud (Amazon EC2). Nos permiten agregar o disminuir nuestra capacidad de procesamiento de manera casi inmediata, de manera manual o usando &lt;em&gt;Auto Scaling&lt;/em&gt; &lt;em&gt;Groups&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Antes de lanzar una instancia la debemos personalizar para cumplir con los requerimientos de nuestra aplicación. Esto lo hacemos al elegir cosas como, CPU (arquitectura y capacidad), memoria (tipo y cantidad), software (sistema operativo, librerías), localización (región y zona de disponibilidad).&lt;/p&gt;

&lt;p&gt;Para entender más sobre cómo configurar instancias tenemos que definir algunos términos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AMI (Amazon Machine Image): Un modelo que define el software&lt;br&gt;
(incluyendo sistema operativo) para una instancia. El mismo AMI se&lt;br&gt;
puede utilizar como modelo para desplegar cualquier número de&lt;br&gt;
instancias, estas compartiran la misma configuracion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tipo de Instancia: Cada tipo representa una combinación de CPU,&lt;br&gt;
memoria, almacenamiento y red que podemos elegir. Cada familia nos&lt;br&gt;
da la opción de elegir su tamaño que nos brinda mayor flexibilidad.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Familias de Instancias: Hemos agrupado las instancias en familias&lt;br&gt;
que representan casos de uso comunes de nuestros usuarios, para&lt;br&gt;
hacer la selección de la instancia correcta más sencillo. Las 5&lt;br&gt;
familias de instancias son, uso general, optimizadas para&lt;br&gt;
informática, optimizadas para memoria, informática acelerada y&lt;br&gt;
optimizadas para almacenamiento.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F170hboqoau8rb2zt8oa5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F170hboqoau8rb2zt8oa5.png" alt="Screenshot de dos tipos de instancia" width="764" height="162"&gt;&lt;/a&gt;&lt;br&gt;
En este screenshot podemos ver dos tipos de instancia, uno de la familia &lt;strong&gt;a1&lt;/strong&gt; y otra de la familia &lt;strong&gt;c4&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Serverless
&lt;/h3&gt;

&lt;p&gt;El nombre bajo el que agrupamos a estas tecnologías parece indicar que&lt;br&gt;
no usamos ningún servidor, la realidad es que el termino se utiliza para&lt;br&gt;
describir tecnologías o servicios que (a diferencia de una arquitectura&lt;br&gt;
tradicional) comparten los siguientes atributos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Computación efímera y sin estado&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Procesamiento basado en eventos&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Infraestructura completamente administrada por AWS&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;El servicio de ejecución de código de AWS que tiene estas características es &lt;a href="https://docs.aws.amazon.com/es_es/lambda/latest/dg/welcome.html" rel="noopener noreferrer"&gt;AWS Lambda&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hablemos un poco de las tres características y las decisiones que&lt;br&gt;
deberemos tomar al usar servicios Serverless.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Computación efímera y sin estado&lt;/strong&gt;: Cada ejecución de nuestro código, puede suceder en un ambiente completamente diferente; por lo que no podemos depender de servicios del sistema operativo como la persistencia de archivos. Esto resulta en un ambiente sin estado. Debemos asumir que cada llamada a nuestro código será ejecutada por un servidor diferente, el servidor manejado la ejecución actual no tiene información sobre las ejecuciones anteriores. Es necesario que implementemos un mecanismo para simular estado, para que nuestros usuarios puedan realizar operaciones que requieran múltiples llamadas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Procesamiento basado en eventos&lt;/strong&gt;: Definir el tipo de evento que disparar la ejecución de nuestro código, es nuestra primera responsabilidad al utilizar procesamiento &lt;em&gt;serverless&lt;/em&gt;. Algunos ejemplos de posibles eventos: escritura de nuevo objeto en una cubeta de S3, modificación a una base de datos, interacción de un usuario con nuestro &lt;em&gt;front end,&lt;/em&gt; cambios en una aplicación de software como servicio (SaaS). Esta no es una lista exhaustiva de eventos, pero nos da una idea de lo flexible que puede ser nuestra aplicación dependiendo del evento que elijamos. Una ventaja de poder atar diferentes componentes de código a diferentes eventos es que cada componente puede ser ligero y hacer solo una cosa muy bien.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infraestructura administrada&lt;/strong&gt;: Podemos enfocarnos en escribir el mejor código posible, ya que no tenemos que dedicar nuestro tiempo en actualizar, asegurar o administrar servidores. AWS Lambda también nos permite tener código con alto escalamiento, sin que tengamos que establecer reglas o administrar &lt;em&gt;load balancers&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contenedores
&lt;/h3&gt;

&lt;p&gt;Una definición popular de contenedor es "una medida estándar de software", es decir, es la cantidad mínima necesaria para ejecutar una aplicación incluyendo configuraciones, librerías, &lt;em&gt;runtime&lt;/em&gt; y dependencias. Los contenedores son una evolución sobre la tecnología de virtualización tradicional,una de sus ventajas principales es la portabilidad. los contenedores se ejecutan sobre un motor (como &lt;a href="https://www.docker.com/products/container-runtime" rel="noopener noreferrer"&gt;Docker Engine&lt;/a&gt;) que es el encargado de manejar el acceso a los recursos del sistema. Es gracias a esto que podemos virtualizar una aplicación y no necesariamente todo un sistema operativo, y nos permite migrar entre diferentes plataformas.&lt;/p&gt;

&lt;p&gt;AWS es una gran opción para ejecutar contenedores (80% de los contenedores en la nube están en AWS), esto es, en gran parte, debido a que hay una serie de servicios diseñados para contenedores que nos permiten elegir como ejecutarlos y orquestarlos. Podemos elegir el servicio correcto de AWS para nuestros contenedores, contestando las siguientes preguntas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;¿Quiero administrar mis propios servidores?

&lt;ul&gt;
&lt;li&gt;No: &lt;a href="https://aws.amazon.com/es/fargate/?nc1=h_ls" rel="noopener noreferrer"&gt;AWS Fargate&lt;/a&gt; es el motor computacional para contenedores, completamente administrado (¡&lt;em&gt;serverless&lt;/em&gt;!).&lt;/li&gt;
&lt;li&gt;Sí: &lt;a href="https://aws.amazon.com/es/ec2/?nc1=h_ls" rel="noopener noreferrer"&gt;Amazon EC2&lt;/a&gt; podemos administrar las instancias, sistema operativo e instalación de los servidores sobre los que ejecutaremos los contenedores.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; ¿Mi equipo decidió usar el orquestador de &lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt; o ya tengo una aplicación que lo usa?

&lt;ul&gt;
&lt;li&gt;No: &lt;a href="https://aws.amazon.com/es/ecs/" rel="noopener noreferrer"&gt;Amazon Elastic Container Service (ECS)&lt;/a&gt; es un servicio de orquestación completamente administrado con integración sencilla a otros servicios de AWS.&lt;/li&gt;
&lt;li&gt;Sí: &lt;a href="https://aws.amazon.com/es/eks/?nc1=h_ls" rel="noopener noreferrer"&gt;Amazon Elastic Kubernetes Service (EKS)&lt;/a&gt; también completamente administrado y nos permite migrar cualquier aplicación de Kubernetes estándar fácilmente.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Ambos orquestadores son compatibles con AWS Fargate.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;AWS tiene un gran número de servicios de procesamiento, todos creados con la idea de darle a los clientes el mayor número de opciones. Queremos que nuestros clientes elijan la arquitectura, las herramientas de desarrollo y como administrar sus servicios y aplicaciones en base a que los hará mas productivos y le entregara mayo valor a sus clientes.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>español</category>
      <category>serverless</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
