Skip to content

alexeirojas87/DotNetFullMasterStack

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DotNetFullMasterStack

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

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

Diagram

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:

Ejecución suite tests (desde src/):

docker-compose -f docker-compose-tests.yml -f docker-compose-tests.override.yml up –build

Herramientas necesarias

  1. .NET Core 3.1 https://dotnet.microsoft.com/download
  2. Azure CLI https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
  3. Azure Functions Core Tools https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local
  4. Helm 3 https://github.com/helm/helm/releases
  5. Docker desktop https://www.docker.com/products/docker-desktop
  6. Visual code or visual studio 2019
  7. Type 0.4.0-alpha.20371.1 (dotnet tool install -g Microsoft.Tye --version 0.4.0-alpha.20371.1)

ASP.NET

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…)

ASP.NET Web Apps

Permite el desarrollo de aplicaciones web basadas en HTML5, CSS y javascript. Estas aplicaciones son escalables, rápidas y seguras

ASP.NET Web APIs

Con ASP.Net Web APIs se pueden desarrollar APIs de una manera sencilla para diferentes tipos de clientes con un mismo lenguaje.

Testing

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.

Persistencia - Entity Framework (EF)

Entity Framework es un framework disponible para acceder a diferentes motores de bases de datos (sql y no sql): mysql, postgresql, mongo, firebird…

Feature toggle - Esquio

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.

ARM (Azure resource manager)

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

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

Microservicios

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

Tye

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

Container instances (ACI)

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

AKS

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

Integración y despliegue continuo

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

Build Status

Image Status
Customer API Build Status
Kitchen API Build Status
Ordering API Build Status
Resturant API Build Status
UI ASP.NET blazor Build Status
Infra artefacts Build Status
Notificacion Azure funtions Build Status
admin-service Build Status
config-service Build Status
eureka-service Build Status
gateway-service Build Status

About

Todas las partes del máster implementadas con tecnologías -Net y afines

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 74.3%
  • Smarty 10.4%
  • Dockerfile 5.3%
  • HTML 4.2%
  • CSS 2.1%
  • Java 1.8%
  • Other 1.9%