El máster Cloud Apps tiene como objetivo el adquirir conocimientos que permitan desarrollar y desplegar aplicaciones de internet utilizando las últimas tendencias del sector.
- Introducción
- Herramientas necesarias
- ASP.NET
- Testing
- Persistencia - EntityFramework (EF)
- Feature toggle - Esquio
- ARM (Azure resource manager)
- Azure functions
- Microservicios
- Tye
- Container instances (ACI)
- AKS
- Integración y despliegue continuo
En el recorrido del master se han utilizado tecnologías como java, node, AWS,…. El objetivo trabajo fin de máster es el analizar e implementar varias partes del master con tecnologías .net y afines.
A no ser que se indique lo contrario, todas las librerías indicadas en la memoria son open source y son soportadas por .net Foundation.
Se han desarrollado cuatro microservicios: customer, kitchen, ordering y restaurant utilizando ASP.NET Web APIs. En todos se han incluido unit test y test funcionales con xUnit, Moq y Coverlet. Con entity framework estos microservicios leen y almacenaman información en un servidor de base de datos SQL server
Los micros se han integrado con el stack Spring Cloud Netflix haciendo uso de la libreria Steeltoe, por último se ha desarrollado una aplicación web basada en blazor
Para el desarrollo y depuración de la aplicación se ha utilizado vistual studio, también existe la posibilidad de ejecutar los proyectos desde línea de comandos.
Para ejecutar el microservicio Customer.API desde la línea de comandos API (desde src):
dotnet run -p Services/Customer/Customer.API
En la URL http://localhost:5000 se puede acceder a la aplicacion
Ejecución toda la solución con docker dompose (desde src/)
docker-compose -f docker-compose.yml -f docker-compose.override.yml up –build
Las URLs de la aplicacion son las siguientes:
- UI: http://localhost:8080/
- admin-service: http://localhost:8889/wallboard
Ejecución suite tests (desde src/):
docker-compose -f docker-compose-tests.yml -f docker-compose-tests.override.yml up –build
- .NET Core 3.1 https://dotnet.microsoft.com/download
- Azure CLI https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
- Azure Functions Core Tools https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local
- Helm 3 https://github.com/helm/helm/releases
- Docker desktop https://www.docker.com/products/docker-desktop
- Visual code or visual studio 2019
- Type 0.4.0-alpha.20371.1 (dotnet tool install -g Microsoft.Tye --version 0.4.0-alpha.20371.1)
ASP.NET es la extensión del framework .NET con herramientas y librerías para construir aplicaciones y servicios web con .NET y C# para cualquier plataforma (Linux, Windows, macOS…)
Permite el desarrollo de aplicaciones web basadas en HTML5, CSS y javascript. Estas aplicaciones son escalables, rápidas y seguras
Con ASP.Net Web APIs se pueden desarrollar APIs de una manera sencilla para diferentes tipos de clientes con un mismo lenguaje.
Una cuestión importante a la hora de desarrollar una aplicación es incluir los test necesarios a fin de asegurarnos que la aplicación funciona correctamente. Dentro del ecosistema .NET podemos utilizar las siguientes librerías xUnit, moq y coverlet.
Entity Framework es un framework disponible para acceder a diferentes motores de bases de datos (sql y no sql): mysql, postgresql, mongo, firebird…
La librería esquio Ha sido desarrollada por varios desarrolladores españoles y permite utilizar feature toggle en una aplicación .NET de manera rápida y sencilla así como en otros servicios como Azure devops.
Azure resource manager (ARM) es la solución utilizada por Microsoft para implementar infraestructura como código para las soluciones que utilizan la plataforma Azure. Una plantilla ARM es un JSON (javascript object anotation) que define la infraestructura y configuración necesitaría para crear la infraestructura necesaria para ejecutar una o varias aplicaciones.
Azure functions permite ejecutar código .net, node, java, power shell o phyton a partir de un evento: Blob storage, Azure cosmos DB, Http, RabbitMQ o Azure queue storage sin necesidad de tener un servidor. Más información, aqui
A día de hoy una de las arquitecturas más utilizadas a la hora de desarrollar aplicaciones en la nube es la arquitectura de microservicios. Se puede definir un microservicio como un servicio pequeño y autónomo que interactúa con otros microservicios. Uno de los primeros stack de microservicios fue el stack de Netflix y fue adotado por Spring bajo el nombre spring-cloud-netflix. Está compuesto por los siguientes elementos:
- config-server: servicio que externaliza la toda la configuración de los microservicios
- eureka: servicio para el registro de microservicios
- zuul: servicio que actuala como api gateway y que actúa como punto de entrada
- hystrix: servicio para la gestión de errors utilizando el patron circuit breaker
Steeltoe ofrece una serie de librerías cuyo objetivo es integrarse con los servicios Spring Cloud necesarios en una arquitectura de microservicios
Type es un proyecto de código abierto y experimental, el objetivo de esta herramienta es el facilitar el desarrollo, testeo y despliegue de microservicios y aplicaciones distribuidas basadas en NetCore. Más información, aqui
Azure container instances puede arrancar un contenedor en cuestión de segundos utilizando imágenes Linux o Windows desde docker hub o desde un registro de contenedores privado. El acceso a los contenedores puede realizarse a través de una dirección IP o un nombre de dominio, también se puede acceder a la consola del contenedor a fin de revisar o solucionar problemas durante el desarrollo. Más información, aqui
Azure Kubernetes Service (AKS) facilita el despliegue de un clúster kubernetes como servicio en la nube de Azure reduciendo la complejidad de su administración y facilitando las tareas de mantenimiento. Más información, aqui
Azure pipelines es el servicio cloud que compila, prueba y despliega de manera automática cualquier tipo de aplicación desarrollada en cualquier lenguaje. La definición de una pipeline se realiza en sintaxis yaml y esta versionada junto con el código fuente de la aplicación. https://dev.azure.com/fjvelaaylon/DotNetFullMasterStack
Image | Status |
---|---|
Customer API | |
Kitchen API | |
Ordering API | |
Resturant API | |
UI ASP.NET blazor | |
Infra artefacts | |
Notificacion Azure funtions | |
admin-service | |
config-service | |
eureka-service | |
gateway-service |