Guardar preObjetos con ElastiCache y EC2
¿Como podriamos manejar datos sin tener que depender de SESSION?
En este post podrás ver una manera sencilla de crear objetos que dependan de otros y además de poder usarlo incluso para una app Movil que no cuenta con SESSION
TECNOLOGÍAS
ASP NET CORE
ASP.NET Core es un framework modular de código abierto que fue desarrollado por Microsoft y la comunidad. Se ejecuta al completo tanto en el.NET Framework de Windows como en multiplataforma
ELASTICACHE
Amazon ElastiCache es un servicio de AWS que se puede utilizar como caché en memoria, parecido a una base de datos. La finalidad es parecidad a una SESSION, pero con el añadido de aumentar el rendimiento y aliviar la carga de la base de datos relacional o NoSQL
EC2
Es uno de los servicio principales de AWS que permite a los usuarios alquilar computadores virtuales en los cuales pueden ejecutar sus propias aplicaciones.
PROYECTO
Primero debemos de Crear/Lanzar un EC2 en AWS con los siguiente datos y configuraciones:
Aqui colocamos el nombre que deseemos para el EC2
Elegiremos un par de claves o también las puedes crear para después usarlas
Añadiremos al grupo de seguridad 2 reglas que son la de HTTP, para poder acceder al proyecto que estará desplegado en el EC2, y la ultima regla es para que el EC2 permita el acceso al ElastiCache
Y por último habilitamos los metadatos para que instale el Apache, Git, y otros paquetes necesarios para poder desplegar nuestra aplicación. IMPORTANTE: Las 2 lineas para configurar el Git deben ser su nombre de usuario y correo del GITHUB. Tras esto, lanzamos el EC2.
Cuando el EC2 haya terminado de crearse, debemos fijarnos en que zona se ha colocado, en mi caso fue en us-east-1c
Ahora nos iremos al ElasticCache para crear un Clúster de Redis y lo configuraremos de la siguiente manera:
Colocaremos el nombre de nuestro Cluster de ElastiCache
Estas opciones deben estar deshabilitadas
El nodo a elegir deber ser «cache.t2.micro» IMPORTANTE
Después crearemos un nuevo grupo de subredes y dejaremos seleccionada la subred que coincida con el de nuestro EC2, en mi caso era «us-east-1c«
Colocaremos la opción de «Especificar zonas de disponibilidad» y le daremos a SIGUIENTE
Después colocaremos el grupo de seguridad de nuestro EC2 que usará ElastiCache y IMPORTANTE, tener el resto de opciones ¡¡DESHABILITADAS!!. Por último le daremos a SIGUIENTE y CREAR
Cuando se haya creado el cluster, debemos copiar el «Punto de conexión principal» para después colocarlo en nuestro proyecto de MVC. Y por continuar en el proyecto de MVC, debemos instalar 2 nugets:
El primer nuget es «Microsoft.Extensions.Caching.StackExchangeRedis» que se encargará de hacer la conexion con el cluster de ElastiCache. Y el segundo nuget que es «Newtonsoft.Json» se encargará de transformar un objeto a formato JSON
En el proyecto primero crearemos el preObjeto, en este caso será un modelo de preVideo.
Después dentro de una carpeta Helpers crearemos el «CacheRedisHelper» que es donde colocaremos la cadena de conexion principal que copiamos cuando se creó el Cluster en ElastiCache.
Después creamos una carpeta llamada Services donde crearemos un archivo llamado «ServiceCacheRedis» y pondremos en el constructor la «Connection» del helper que habiamos creado antes.
Lo siguiente es crear un metodo que se encargará de guardar el preObjeto en una lista de Objetos y la misma lista ira Serializada en fomato JSON al Cluster.
Y por ultimo es crear un metodo que se encargara de obtener la lista de objetos que tenga el cluster en ElastiCache, para poder mostrarlos y ver su funcionamiento.
Después dentro de la carpeta Controllers crearemos un controlador llamado «VideosController» donde inyectamos el «ServiceCacheRedis» y ademas de hacer la vista Create y en la misma vista cargaremos la lista de objetos que se haya guardado en el Cluster de ElastiCache.
La vista es un formulario simple y recibirá la lista de preVideos para despues poder mostrarlas.
Eso si, la lista se mostrará si exiten datos en la lista de preVideos, sino mostrar un mensaje de que esta vacio.
Despues agregaremos en el Startup el «ServiceCacheRedis» para que se resuelvan las dependencias.
Y en el _Layout colocaremos un link para poder ir a la vista de Create que habiamos creado en VideosController. Y por ultimo deberemos subir el proyecto a GITHUB para que lo despleguemos en EC2 y después probemos la funcionalidad.
Después noc conectaremos a nuestra maquina virtual mediante el CMDER, no haremos super usuario con el comando «sudo su» después crearemos una carpeta en una ruta con el comando «mkdir /var/proyecto«, una vez creado, nos ubicaremos en esa carpeta y haremos un «git clone url» donde la url será la direccion de nuestro repositorio en github.
Y por último, nos ubicaremos dentro de nuestro proyecto para colocar el siguiente comando ‘ dotnet run –urls «http://0.0.0.0:5000» ‘ y asi desplegar nuestro proyecto y probarlo
Autor/a: Braian Oscar Loza Quiroga
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2021-2022
Código / recursos utilizados / Otros datos de interés: https://github.com/MsrBrownie06/Posts