Implementación de aplicaciones web con ASP.NET Core y DotVVM en AWS Elastic Beanstalk
Tags: webdev, aws, dotnet, dotvvm
Published: 2020-07-24 19:27:10

Hoy en día, la computación en la nube es tendencia en el mundo tecnológico, debido a su impacto al generar servicios y soluciones informáticas para usuarios y empresas. Si nos centramos en el área del desarrollo de software a través de ASP.NET por ejemplo, una de las relaciones directas con la nube es el poder desplegar estas aplicaciones. 

En este articulo aprenderemos como desplegar sitos web en la nube, específicamente con DotVVM sobre ASP.NET Core 3.1 hacia Amazon Web Services, bajo un enfoque de *Plataforma como Servicio – PaaS*. Si recordamos este enfoque dentro de los tipos de servicios en la nube, hacemos referencia a un entorno de desarrollo y de implementación, sin preocuparnos de la administración de los recursos de infraestructura tecnológica. 

**Actividades:**

Para llevar a cabo las actividades de despliegue sobre AWS, tendemos tres partes importantes: 

+ Parte 1: Configuraciones previas de AWS. 
+ Parte 2: Información sobre los recursos requeridos de AWS para el despliegue.
+ Parte 3. Despliegue de aplicaciones web con ASP.NET Core y DotVVM desde Visual Studio 2019.

**Recursos necesarios:**

Para seguir paso a paso este articulo, es necesario tener en funcionamiento las siguientes herramientas:

+ .NET Core SDK.
+ Visual Studio 2019.
+ La carga de trabajo Desarrollo web y ASP.NET para Visual Studio 2019.
+ La extensión de DotVVM para Visual Studio 2019.

###**Parte 1: Configuraciones previas de AWS**

Amazon Web Services, también conocida como AWS, es un conjunto de herramientas y servicios de cloud computing de Amazon. Para nuestro objetivo de despliegue, es necesario realizar algunas configuraciones previas, que van desde el ajuste de usuarios, hasta la configuración de AWS en Visual Studio 2019. En otras palabras, estas son las configuraciones previas que realizaremos: 

+ 1. Obtener una cuenta de capa gratuita de AWS.
+ 2. Configurar una cuenta IAM.
+ 3. Establecer las políticas para un usuario determinado en IAM.
+ 4. Instalar y configurar AWS Toolkit para Visual Studio 2019.

Sin más que decir, vamos a profundizar cada una de estas actividades previas y revisar lo que debemos hacer. 

####1. Obtener una cuenta de capa gratuita de AWS

AWS dispone de un nivel gratuito para probar y consumir servicios durante 12 meses. En la siguiente dirección podemos realizar el registro correspondiente: [aws.amazon.com/free](aws.amazon.com/free).

Este es un proceso sencillo, sin embargo, hay que tener en cuenta que hay que proporcionar los datos de nuestra tarjeta de crédito/debito para poder activarla.

####2. Configurar una cuenta IAM

Muy bien, suponiendo que ya hemos creado una cuenta raíz en AWS, al iniciar sesión veremos la consola:

![](https://dev-to-uploads.s3.amazonaws.com/i/fcsfil6kcpydckie1lsa.png)

Dentro de la consola buscaremos el servicio IAM. Identity and Access Management (IAM), es un servicio que permite administrar el acceso a los servicios y a los recursos de AWS. Asimismo, permite crear y administrar usuarios y grupos de AWS, así como utilizar permisos para conceder o negar el acceso a los recursos. 

Al ingresar a este servicio, nos dirigiremos al apartado *Users* dentro del menú de opciones y seleccionaremos *Add User*. El objetivo es crear un usuario, el cual se utilizará para asociar los servicios de AWS que se van a utilizar, ya que no es recomendable proporcionar nuestros privilegios de acceso de usuario raíz. 

![](https://dev-to-uploads.s3.amazonaws.com/i/qty8r0unu81oy26vce8c.png)

El formulario para agregar un nuevo usuario se verá de esta manera:

![](https://dev-to-uploads.s3.amazonaws.com/i/0jrg3ti9qlmh11t6wslc.png)

Una vez que se haya terminado con la creación del nuevo usuario de IAM, es necesario descargar las credenciales. Estas las necesitaremos más adelante para realizar la configuración en Visual Studio. 

![](https://dev-to-uploads.s3.amazonaws.com/i/ebzef5kzlgq3825rcywb.png)

***Nota:*** es muy importante mantener este archivo CSV en un lugar seguro, ya que allí se encuentran las credenciales de acceso. 

####3. Establecer las políticas del usuario

Para poder desplegar nuestras aplicaciones con ASP.NET Core y DotVVM desde Visual Studio, nuestro nuevo usuario IAM necesita poder acceder a ciertos servicios de AWS. En este caso, nos dirigiremos al usuario en cuestión dentro de IAM en AWS y seleccionamos la opción *Add inline policy*.

![](https://dev-to-uploads.s3.amazonaws.com/i/gh3deqo8frn7e4l8iy9e.png)

Luego, es necesario realizar este proceso para cada uno de los siguientes servicios:

+ Elastic Beanstalk
+ EC2
+ S3
+ CloudFormation

![](https://dev-to-uploads.s3.amazonaws.com/i/8cjcat1n427jsozsenxr.png)

Después de agregar estos servicios, asignaremos un nombre para esta política y la guardaremos. Al final tendremos algo como esto: 

![](https://dev-to-uploads.s3.amazonaws.com/i/1qc3okmq6rrzd08mzb9b.png)

####4. Instalar y configurar AWS Toolkit para Visual Studio

Dentro de las configuraciones previas de AWS necesarias, lo que nos resta por hacer es instalar la extensión de AWS para Visual Studio 2019. Esta herramienta nos permitirá trabajar con el ecosistema de .NET en cuanto a desarrollo, depuración e implementación de soluciones en relación con Amazon Web Services.

***Enlace de descarga:*** [https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.AWSToolkitforVisualStudio2017
](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.AWSToolkitforVisualStudio2017
).

Para la instalación, Visual Studio 2019 deberá estar cerrado.  

![](https://dev-to-uploads.s3.amazonaws.com/i/4fhyjl2d38gb6c37sl9n.png)

Al iniciar Visual Studio, el asistente de configuración de AWS iniciará y nos pedirá configurar nuestras credenciales. En este caso podemos hacer uso del archivo CSV generado en la creación del usuario correspondiente en IAM. 

![](https://dev-to-uploads.s3.amazonaws.com/i/g73zp7s0eu5mv2x6zacc.png)

Al guardar las credenciales, tendremos listo *AWS Explorer*, el cual nos permitirá trabajar con los servicios de AWS con los que tengamos autorización. Esto de acuerdo con las políticas establecidas anteriormente. 

![](https://dev-to-uploads.s3.amazonaws.com/i/lpd2rpeywxfjgx50j860.png)

Con todo en su lugar, ahora ya podemos trabajar con AWS desde Visual Studio 2019. 

###**Parte 2: Acerca de los servicios requeridos para la implementación en Amazon Web Services**

Como pudimos observar en el proceso de configuración, son varios servicios de AWS que se utilizaran para desplegar nuestras aplicaciones web con ASP.NET Core y DotVVM. A continuación, veremos brevemente de que se trata cada uno de ellos. 

+ **Elastic Beanstalk**

AWS Elastic Beanstalk es un servicio de implementación y aprovisionamiento en la nube que automatiza el proceso de configuración de aplicaciones en la infraestructura de Amazon Web Services. 

Para usar el servicio, los desarrolladores solo tenemos que cargar nuestras aplicaciones. El aprovisionamiento, el equilibrio de carga, el escalado automático y la supervisión del estado de las aplicaciones se controlan automáticamente.

+ **EC2**

Amazon Elastic Compute Cloud, más conocido como EC2, el servicio estrella de AWS, es una solución de Amazon para ofrecer un entorno informático de capacidad y tamaño modificable. 
EC2 cuenta con varias instancias de uso general que brindan una combinación de recursos informáticos, memoria y de red. En esta dirección podemos conocer los tipos de instancias con los que cuenta AWS y sus características: [https://aws.amazon.com/es/ec2/instance-types/](https://aws.amazon.com/es/ec2/instance-types/).

+ **S3**

Amazon S3, nombre que proviene de Amazon Simple Storage Service, hace referencia a un servicio ofrecido que proporciona almacenamiento de objetos a través de una interfaz de servicio web. Amazon S3 utiliza la misma infraestructura de almacenamiento escalable que Amazon.com utiliza para ejecutar su red global de comercio electrónico. 

Estos objetos pueden ser distintos tipos de archivos de los que normalmente se encuentran en cualquier ordenador: documentos, archivos comprimidos zip o rar, archivos multimedia, etc. Todo esto se logra mediante un proceso de almacenamiento en buckets, o “cubos” en español, en los que cada usuario puede ir colocando los distintos datos y objetos que desee almacenar. Estos cubos se reparten por la estructura de centros de datos de Amazon de forma que cada usuario sólo puede acceder a sus cubos personales.

+ **CloudFormation**

AWS CloudFormation es un servicio que proporciona un lenguaje común para modelar y aprovisionar recursos para una aplicación a través del entorno de AWS. En otras palabras, AWS CloudFormation permite administrar nuestra infraestructura o un grupo de recursos de AWS en un archivo de texto o plantilla. Una colección de recursos de AWS se denomina pila. Los recursos de AWS se pueden crear o actualizar mediante una pila. Un ejemplo de pila, son los recursos que utilizaremos para el despliegue de nuestra aplicación con ASP.NET Core y DotVVM: Elastic Beanstalk, EC2 y EC3. 

---

Ahora que ya hemos conocido a breves rasgos los recursos que se utilizaran automáticamente sobre AWS para el despliegue correspondiente, ahora pasaremos a la parte practica desde Visual Studio 2019. 

###**Parte 3: Implementación de proyectos con ASP.NET Core y DotVVM desde Visual Studio 2019**

El proyecto para este caso con ASP.NET Core y DotVVM está fundamentado en el patrón MVVM (Modelo, Vista, Vistamodelo), con cada una de estas partes dentro del mismo: 

+ **El modelo.** — responsable de todos los datos de la aplicación y de la lógica de negocios relacionada.

+ **La vista.** — representaciones para el usuario final del modelo de la aplicación. La vista es responsable de mostrar los datos al usuario y de permitir la manipulación de los datos de la aplicación.

+ **El Modelo-Vista o Vista-Modelo.** — uno o más por vista; el modelo-vista es responsable de implementar el comportamiento de la vista para responder a las acciones del usuario y de exponer los datos del modelo fácilmente.

Teniendo en cuenta estas consideraciones, dentro del proyecto en Visual Studio daremos clic derecho sobre el proyecto, y en la sección de opciones seleccionaremos *Publish to AWS Elastic Beanstalk*:

![](https://dev-to-uploads.s3.amazonaws.com/i/uiomshvdy4omfel82daa.png)

Con esto tendremos disponible el asistente de publicación de AWS Elastic Beanstalk, aquí crearemos un nuevo entorno de aplicación: 

![](https://dev-to-uploads.s3.amazonaws.com/i/b9srlbeuwji1sd4x0t67.png)

A continuación, elegiremos un nombre para la aplicación y su URL: 

![](https://dev-to-uploads.s3.amazonaws.com/i/zzsa2258cc2fy2gl5bbb.png)

En esta misma sección podemos especificar el ambiente con el que deseamos trabajar: 

![](https://dev-to-uploads.s3.amazonaws.com/i/70q88bulq4uqp1apm39f.png)

Después de comprobar la disponibilidad del URL, configuraremos los requisitos de hardware, en otras palabras, el tipo de instancia EC2:

![](https://dev-to-uploads.s3.amazonaws.com/i/15dzvuz0syrvch4928nn.png)

Para este caso en particular con DotVVM, trabajaremos con una imagen de Linux:

![](https://dev-to-uploads.s3.amazonaws.com/i/5zvcbrzfxifcqqvociya.png)

Al finalizar veremos el resumen de las configuraciones realizadas. Para continuar debemos dar clic en *Deploy*:

![](https://dev-to-uploads.s3.amazonaws.com/i/83rbyy35mybax9kjwa7z.png)

A partir de este momento el proceso de despliegue a comenzado. 

![](https://dev-to-uploads.s3.amazonaws.com/i/pj9vhwtap5knl63uy2la.png)

Esta implementación puede tardar algunos minutos, dependiendo del tamaño de la aplicación y de los recursos empleados en ASP.NET Core con DotVVM. Estas son las configuraciones que se llevan a cabo internamente: 

+ Una máquina virtual de Amazon EC2 es configurada para ejecutar aplicaciones web sobre ASP.NET Core en la versión especificada. 
+ Un grupo de seguridad de Amazon EC2 es configurado para permitir la entrada en el puerto 80. 
+ Un balanceador de carga de Elastic Load Balancing para distribuir las solicitudes a las instancias que ejecutan la aplicación.
+ Un grupo de Auto Scaling para reemplazar una instancia si se termina o deja de estar disponible.
+ Una ubicación de almacenamiento para el código fuente, los logs y otros artefactos.
+ Dos alarmas de CloudWatch que monitorizan la carga de las instancias de su entorno y se activan si la carga es demasiado alta o baja.
+ Una pila de AWS CloudFormation para lanzar los recursos en su entorno y propagar los cambios de configuración.
+ Un nombre de dominio que enruta a la aplicación web en el subdominio región.elasticbeanstalk.com.

Al finalizar este proceso, casi transparente para nosotros, veremos nuestra aplicación desplegada sobre AWS: 

![](https://dev-to-uploads.s3.amazonaws.com/i/fp31bhye927t1tkmu302.png)

###**¿Qué sigue?** 

Con este articulo hemos aprendido paso a paso sobre la implementación de aplicaciones web con DotVVM sobre ASP.NET Core en Amazon Web Services. 

Una de las grandes ventajas de la nube son las herramientas que estas nos ofrecen para trabajar con nuestras aplicaciones, en este caso, sobre AWS, se han podido apreciar los conceptos relacionados a una Plataforma como Servicio, en el cual, no tenemos que preocuparnos por los procesos internos ni por el control de la infraestructura, solo por el desarrollo como tal. 

A continuación se muestran algunos recursos que podrían ser de tu interés para seguir adquiriendo nuevos conocimientos en esta área:

+ Curso gratuito y abierto en YouTube: [Fundamentos de ASP.NET Core y DotVVM](http://bit.ly/cursoaspnetdotvvm).

+ [DotVVM y ASP.NET Core: Implementación de operaciones CRUD](https://dev.to/dotvvm/dotvvm-y-asp-net-core-implementacion-de-operaciones-crud-43oe).

+ [Implementación continua en Azure con Visual Studio y GitHub](https://dev.to/esdanielgomez/implementacion-continua-en-azure-con-visual-studio-y-github-2153)

**Gracias:**

Si tienes alguna inquietud o necesitas ayuda en algo particular, será un gusto poder colaborar.

Nos vemos en [Twitter](https://twitter.com/esDanielGomez)!! :)

¡Hasta pronto!