SlideShare una empresa de Scribd logo
1 de 29
ASP.NET Core
Good Practices 2019
ORGANIZATION
PLATINUM SPONSORS
Thank you!
COLLABORATORS
@luisruizpavon
lruiz@plainconcepts.com
Luis Ruiz Pavón
DevSecOps
@carlos_lande
clanderas@plainconcepts.com
Carlos Landeras
Web Team Lead
Instrumentación de código
Capacidad de controlar o medir el nivel de
rendimiento de un producto, diagnosticar errores y
escribir información de rastreo.
Instrumentación de código
Estrategias de resiliencia ¿Para qué?
¿Qué es la resiliencia?
"Es la capacidad de absorber o evitar daños sin
sufrir un fallo completo".
¿Qué es Alta Disponibilidad?
“Shit will happen, por lo que un sistema debe estar
diseñado para estar siempre disponible para los
consumidores, incluso cuando algunas de sus partes
están fallando".
Estrategias de resiliencia
• Retry
• Circuit Breaker
• Timeout
• Bulkhead Isolation
• Fallback
¿Alguna librería
disponible para .Net?
Health Checks y Kubernetes
Lo primero, es configurar y exponer tus health checks:
Alta disponibilidad y tolerancia a fallos
Una aplicación puede sufrir
un deadlock, pero como su
proceso sigue en ejecución
Kubernetes piensa que todo
está correcto.
… y continua enviando
peticiones al contenedor
Liveness probes /health
• Nos permiten configurar tests para evaluar
que un contenedor está funcionando
correctamente.
• Podemos configurar pruebas TCP, HTTP ó
ejecución de un commando.
• Si la prueba de salud no es satisfactoria,
Kubernetes reinicia el contenedor
• Nos permiten configurar pruebas para evaluar
que nuestra aplicación y sus dependencias
están disponibles para atender peticiones
• Si un contenedor no está “ready”, será
excluido del balanceador de carga y no se
enviarán peticiones
Readiness probes /ready
Problems
Health Checks y Kubernetes
¿Cuántas veces te has
montado tu propio
sistema de errores en tu
REST API?
¿Qué ocurre cuando un
cliente consume diferentes
APIs?
Problem details (RFC7807)
• Un standard para normalizar los mensajes de
errores en nuestras REST APIs.
• Estructura JSON
Asp.Net Core ApiController y ApiBehaviourOptions
• Inferencia de valores de una petición http
- Valores de ruta (Segmentos del path)
- IFormFile, IFormFileCollection desde el Form
- Parámetros complejos desde el Body
- El resto de parámetros desde la Query string
• Filtro automático para evaluación del ModelState
• Personalización de las respuestas de Model States inválidos
HttpContext Pipes
Alto rendimiento con menos allocations en memoria
System.IO.Pipelines es una librería diseñada para facilitar la
ejecución de Código I/O de alto performance en .NET
Esta librería nace del esfuerzo puesto por el equipo de .Net
Core en hacer de Kestrel uno de los servidores web mas
rápidos de la industria.
HttpContext Pipes
Alto rendimiento con menos allocations en memoria
Esta basada en la utilización de Span<T> y Memory<T>,
apis que son ya compatible con la mayoría de clases del
framework
El equipo de Asp.Net expone en el HttpContext un pipe de
lectura y otro de escritura desde la version 3.0
Rendimiento Pipelines
Endpoint Routing
ASP.NET Core 2.1 nos permitía crear pipelines
completos (Middlewares), pero MVC era un
framework completo que imponía cierto elementos
como:
• CORS
• Autorización
¿Pero que pasa cuando tu
middleware tiene que hacer
uso de autorización o tienes
que habilitar CORS para un
pipeline concreto?
¿Qué pasa si quiero crear una
API ligera?
Endpoint Routing
Endpoint Routing
• UseStaticFiles antes de UseRouting
• UseAuthentication/UseAuthorization después de
UseRouting
• UseCors a continuación.
Autorización de Endpoints
Por fin un sistema de autorización desacoplado de MVC
Estrategias de despliegue y testing con Docker
• Instalación/Configuración
• Redes
• Repetibles
• Stubs
• Mantenimiento
Imágenes
Red interna
Creación al vuelo de contendores
Integración real
Tags
Questions & Answers
Thanks and …
See you soon!
Thanks also to the sponsors.
Without whom this would not have been posible.

Más contenido relacionado

Similar a Dotnet2019 Asp .Net Core Good Practices 2019

10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web ServicesLuis Fernando Aguas Bucheli
 
pruebas SOAP y las pruebas automatizadas en General Roderick Beriguete 19-071...
pruebas SOAP y las pruebas automatizadas en General Roderick Beriguete 19-071...pruebas SOAP y las pruebas automatizadas en General Roderick Beriguete 19-071...
pruebas SOAP y las pruebas automatizadas en General Roderick Beriguete 19-071...Roderickx12
 
Introducción-a-Microsoft.NET-[parte2]
Introducción-a-Microsoft.NET-[parte2]Introducción-a-Microsoft.NET-[parte2]
Introducción-a-Microsoft.NET-[parte2]Kevin Reaño
 
Web Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’sWeb Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’sPablo Pellegrinet
 
Introduccion a ORACLE
Introduccion a ORACLEIntroduccion a ORACLE
Introduccion a ORACLEpp guanuchi
 
LenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxLenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxcarrilloja98
 
Curso TIC de PHP y MSQL Parte 1
Curso TIC de PHP y MSQL Parte 1Curso TIC de PHP y MSQL Parte 1
Curso TIC de PHP y MSQL Parte 1Wilian
 
AWDC para desarrolladores y data scientists
AWDC para desarrolladores y data scientists AWDC para desarrolladores y data scientists
AWDC para desarrolladores y data scientists Edelweiss Kammermann
 
Aplicaciones escalables en Azure
Aplicaciones escalables en AzureAplicaciones escalables en Azure
Aplicaciones escalables en AzureGermán Küber
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Comparativa herramientas etl
Comparativa herramientas etlComparativa herramientas etl
Comparativa herramientas etljuan barco
 
Sesión Técnica. Sacando el máximo de tus Apps con IA
Sesión Técnica. Sacando el máximo de tus Apps con IASesión Técnica. Sacando el máximo de tus Apps con IA
Sesión Técnica. Sacando el máximo de tus Apps con IAHernán Alijo
 
MONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADA
MONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADAMONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADA
MONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADARafa Garrido
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloGastón Guillerón
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollogabrielpiccoli
 

Similar a Dotnet2019 Asp .Net Core Good Practices 2019 (20)

10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
 
Arquitectura fisica y logica
Arquitectura fisica y logicaArquitectura fisica y logica
Arquitectura fisica y logica
 
pruebas SOAP y las pruebas automatizadas en General Roderick Beriguete 19-071...
pruebas SOAP y las pruebas automatizadas en General Roderick Beriguete 19-071...pruebas SOAP y las pruebas automatizadas en General Roderick Beriguete 19-071...
pruebas SOAP y las pruebas automatizadas en General Roderick Beriguete 19-071...
 
Introducción-a-Microsoft.NET-[parte2]
Introducción-a-Microsoft.NET-[parte2]Introducción-a-Microsoft.NET-[parte2]
Introducción-a-Microsoft.NET-[parte2]
 
Web Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’sWeb Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’s
 
Introduccion a ORACLE
Introduccion a ORACLEIntroduccion a ORACLE
Introduccion a ORACLE
 
LenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxLenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptx
 
Estudio de factibilidad
Estudio de factibilidadEstudio de factibilidad
Estudio de factibilidad
 
Curso TIC de PHP y MSQL Parte 1
Curso TIC de PHP y MSQL Parte 1Curso TIC de PHP y MSQL Parte 1
Curso TIC de PHP y MSQL Parte 1
 
AWDC para desarrolladores y data scientists
AWDC para desarrolladores y data scientists AWDC para desarrolladores y data scientists
AWDC para desarrolladores y data scientists
 
Aplicaciones escalables en Azure
Aplicaciones escalables en AzureAplicaciones escalables en Azure
Aplicaciones escalables en Azure
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Comparativa herramientas etl
Comparativa herramientas etlComparativa herramientas etl
Comparativa herramientas etl
 
Sesión Técnica. Sacando el máximo de tus Apps con IA
Sesión Técnica. Sacando el máximo de tus Apps con IASesión Técnica. Sacando el máximo de tus Apps con IA
Sesión Técnica. Sacando el máximo de tus Apps con IA
 
Intel
IntelIntel
Intel
 
Exposicionsqlite1 (1)
Exposicionsqlite1 (1)Exposicionsqlite1 (1)
Exposicionsqlite1 (1)
 
MONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADA
MONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADAMONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADA
MONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADA
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollo
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDB
 

Más de Carlos Landeras Martínez

Carlos Landeras - Tech Summit - Aplicaciones corporativas descentralizadas co...
Carlos Landeras - Tech Summit - Aplicaciones corporativas descentralizadas co...Carlos Landeras - Tech Summit - Aplicaciones corporativas descentralizadas co...
Carlos Landeras - Tech Summit - Aplicaciones corporativas descentralizadas co...Carlos Landeras Martínez
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talkCarlos Landeras Martínez
 
Plainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsPlainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsCarlos Landeras Martínez
 
Machine learning for dummies - Azuges November 2016
Machine learning for dummies - Azuges November 2016Machine learning for dummies - Azuges November 2016
Machine learning for dummies - Azuges November 2016Carlos Landeras Martínez
 

Más de Carlos Landeras Martínez (7)

Carlos Landeras - Tech Summit - Aplicaciones corporativas descentralizadas co...
Carlos Landeras - Tech Summit - Aplicaciones corporativas descentralizadas co...Carlos Landeras - Tech Summit - Aplicaciones corporativas descentralizadas co...
Carlos Landeras - Tech Summit - Aplicaciones corporativas descentralizadas co...
 
SignalR is coming talk slides
SignalR is coming talk slidesSignalR is coming talk slides
SignalR is coming talk slides
 
Plain concepts webday- Carlos Landeras
Plain concepts webday- Carlos LanderasPlain concepts webday- Carlos Landeras
Plain concepts webday- Carlos Landeras
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
 
C# 6.0 and 7.0 new features
C# 6.0 and 7.0 new featuresC# 6.0 and 7.0 new features
C# 6.0 and 7.0 new features
 
Plainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsPlainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time Applications
 
Machine learning for dummies - Azuges November 2016
Machine learning for dummies - Azuges November 2016Machine learning for dummies - Azuges November 2016
Machine learning for dummies - Azuges November 2016
 

Dotnet2019 Asp .Net Core Good Practices 2019

Notas del editor

  1. Cuando una solicitud llega a MVC, la información de ruta se utiliza para determinar qué Controlador y Acción deben invocarse para manejar la solicitud, en función de la ruta URL. En este punto, MVC puede invocar esa acción que luego devolverá la respuesta. Si no se encuentra una ruta adecuada, se devuelve un 404 en su lugar. El problema con este enfoque del enrutamiento es que a medida que la solicitud fluye a través de la cadena de middlewares, todos los demás middlewares no tienen idea de dónde ni quién manejará esa solicitud.