Micro vs Nano (servicios)

Pedro J. Molina
Pedro J. MolinaFounder at Metadev en Metadev
Micro vsnano
Servicios
Pedro J. Molina
https://pjmolina.com
@pmolinamhttps://metadev.pro
μ n
Pedro J. Molina
@pmolinam
Agenda
 Micro-servicios
 Nano-servicios
 Casos de uso
Conclusiones
Microservicios (1/3)
Estilo arquitectural para desarrollo de Software
Aplicaciones complejas compuestas por
pequeños servicios, independientes y
autónomos que se comunican usando APIs
agnósticas de lenguaje.
Altamente desacoplados, enfocados en tareas
pequeñas. ¿Cómo de pequeño?
Dueño (onwership) claro y conocido.
http://martinfowler.com/articles/microservices.html
Microservicios (2/3)
 Ventajas
 Componibles
 Evolución rápida
 Stack adecuado al trabajo
 Aislamiento ante fallos
 Despliegues rápidos
 Mejor disponibilidad
 Contras
 Latencia (en composición)
 Correlación de eventos (trazas)
 Heterogeneidad
 Volumen en despliegue  requiere automatización
http://es.slideshare.net/stonse/pros-and-cons-of-a-microservices-architecture-talk-at-aws-reinvent
Microservicios (3/3)
 Microservicios = SOA para Hipsters
 Abanderados
 Netflix
 Amazon
 Building Microservices
2015, Sam Newman
Sobre la importancia de aislar los microservicios:
Si la necesita,
cada microservicio tiene su propia capa de persistencia.
Aislados
Microservicio Disrupción Empresarial
Ley de Conway
“Las organizaciones que diseñan sistemas están limitadas a producir diseños que
copian las estructuras de comunicación de esas organizaciones”.
Melvin Conway, 1968
Inversión  Disrupción
 Startups centradas en Transformación Digital que disrupcionan un mercado
 Aprovechan la agilidad de los microservicios para iterar y pivotar más rápido descubriendo y
asentando nuevos procesos más óptimos
 Uber, Netflix, Amazon…
Stacks para Microservicios
NodeJS
 Express + Baucis
 SenecaJS
 FeatherJS
 Serverless: Claudia
Java
 Jersey
 Dropwizard
 Spring / Spring Boot
 Play
 SparkJava
 http://www.gajotres.net/best-available-java-restful-
micro-frameworks/
.NET Core
 NancyFx
 WebAPI
 https://docs.microsoft.com/en-
us/dotnet/articles/csharp/tutorials/microservices
Go
 go-kit/kit
 micro/go-micro
 goa.design
 coding/kite
 Serverless: Sparta, Apex, Gordon
Persistencia
 NoSQL
 MongoDB, CouchDB, Dynamo, DocumentDB
 RDBM
 MySql, Postgress, Oracle, Sql Server
 Key-Value Stores
 Redis
 Memcache
 Colas
 RabitMQ, ZeroMQ, AMZ SQS, Azure Queues
 Blobs
 Amazon S3
 Azure Blobs
Stack MEAN Dev
Local
:27001
Local
:5000
-
Navegador
Nube
db
:27001
app
:80
-
Navegador
Producción
cluster
:27001
app :80
-
Navegador
lb: 443
Demo. Ejemplo
Sitio en Producción:
https://openapi3.herokuapp.com
demo / demo
¡Sed buenos! }:-b
Repositorio de fuentes:
https://github.com/pjmolina/event-backend
MEAN Stack: Arquitectura
Client ExpressJS BaucisJS Mongoose MongoDB
HTTP req
resource
query/command
data
401 | 403
AuthN/AuthZ
middleware
<req.user, res>
Microservice
NodeJS + Express JS
 http://expressjs.com
var express = require('express');
var app = express();
app.get('/hello', function(req, res) {
res.status(200).send('hello world');
});
/helloreq res
Express Middleware
 CORS
 AuthN  PassportJS
 AuthZ
 Etc.
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
res.header("Access-Control-Allow-Methods", "OPTIONS,GET,POST,PUT,DELETE");
next();
});
*req
res
next()
.NET Core + NancyFX
 http://nancyfx.org
public class SampleModule : Nancy.NancyModule
{
public SampleModule()
{
Get["/hello"] = _ => “hello world";
}
}
/helloreq res
OpenAPI
 OpenAPI Initiative https://openapis.org
 Descripción de Servicios / APIs
 Documenta el API
 Facilita su uso por desarrolladores
 Herramientas
 Contract first
 Documentar APIs existents
 Generación de Proxies, Skeletons, SDKs nativos
 Integración con Herramientas de API Management
Escalabilidad
 Clusters de MongoDB
 Sesión persistida en MongoDB
 connect-mongo
 Balanceador de carga (nginx, haproxy,
etc.)
 Opciones:
 Gestionalo tu según necesidades: IaaS
 PaaS (como Heroku)
 Serverless
Carga
 Sistema en producción
 Backends para aplicaciones móviles Android e iOS + portal web
 80.000 peticiones diarias en ventana de 4 horas
 Promedio = 333 ppm, aprox 6 pps 100-200ms
 Picos de 1000 ppm, aprox 17 pps
 En 2 instancias 1x 1Gb RAM en Heroku
 por 100 $/mes + 18 $/mes de mLab
Registro y descubrimiento
Consul
Monitorización
newRelic
Monitorización
Prometheus
Logs
papertrail
Go Serverless!
 Código sin preocuparse* por la infrastructura
 Amazon Lambda Functions http://docs.aws.amazon.com/lambda
 Google Cloud Functions
 IBM OpenWhisk
 Azure Functions
Nano-servicio
 ¿¡Microservicio más pequeño hecho en Valencia!?
Nano-servicio
 Servicios muy, muy pequeños. Altamente escalables.
 Diseñados para poder ser desplegados en plataformas serverless y
poder aprovechar un escalado totalmente elástico.
 Requieren de una infrastructura eficiente que pueda alojar una
multitud de nanoservicios
 Plataformas:
 Amazon Lambda Functions
 Google Cloud Functions
 Azure Cloud Funtions
 IBM OpenWisk
Nano-servicios: plataformas y librerías
 Plataformas:
 Amazon Lambda Functions
 Google Cloud Functions
 Azure Cloud Funtions
 IBM OpenWisk
 Librerías
 Serverless.com (ASW Lambda)
 ClaudiaJS (AWS Lambda)
exports.handler = function(event, context) {
switch (event.operation) {
case 'ping': context.succeed('pong'); return;
case 'getSample':
event.customArgs = ["rose:", "/tmp/rose.png"];
im.convert(event.customArgs, function(err, output) {
if (err) context.fail(err);
else {
var resultImgBase64 = new Buffer(
fs.readFileSync("/tmp/rose.png"))
.toString('base64');
try { fs.unlinkSync("/tmp/rose.png");} catch (e) {}
context.succeed(resultImgBase64);
}
});
break;
default:
return context.fail(new Error('Unrecognized operation "' +
event.operation + '"'));
}
};
Ejemplo: AWS Lambda
Ejemplo Serverless. Analíticas móviles
Amazon
Route 53
Amazon
S3
AWS
Lambda
Lambda
function
Amazon
DynamoDB
Amazon API
Gateway*
Casos de uso
Microservicios
 Frontera: Bounded Context bien definidos (DDD)
 Necesidad de escalado o evolución de negocio en cada Bounded Context a
diferentes velocidades o desconocida
 Equipos diferenciados: cada uno responsable de su microservicio
Nanoservicios
 Frontera: funcionalidad muy, muy pequeña
 Funcionalidad que requiera una escalabilidad o disponibilidad muy alta
 Servicio de login / Servicio de log / diagnostico
 A menudo considerados anti-patrón: cuando el coste de desplegarlos es mayor
que su utilidad
Preguntas
y tal vez… respuestas
@pmolinam
1 de 31

Recomendados

Microservices Architecture & Testing Strategies por
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesAraf Karsh Hamid
3.1K vistas71 diapositivas
Agile, User Stories, Domain Driven Design por
Agile, User Stories, Domain Driven DesignAgile, User Stories, Domain Driven Design
Agile, User Stories, Domain Driven DesignAraf Karsh Hamid
1.2K vistas192 diapositivas
AWS API Gateway por
AWS API GatewayAWS API Gateway
AWS API GatewayMuhammed YALÇIN
646 vistas18 diapositivas
02 api gateway por
02 api gateway02 api gateway
02 api gatewayJanani Velmurugan
235 vistas20 diapositivas
API as-a-Product with Azure API Management (APIM) por
API as-a-Product with Azure API Management (APIM)API as-a-Product with Azure API Management (APIM)
API as-a-Product with Azure API Management (APIM)Bishoy Demian
1.2K vistas33 diapositivas
A Pattern Language for Microservices por
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for MicroservicesChris Richardson
2.5K vistas61 diapositivas

Más contenido relacionado

La actualidad más candente

Introduction to microservices por
Introduction to microservicesIntroduction to microservices
Introduction to microservicesPaulo Gandra de Sousa
7.4K vistas49 diapositivas
Microservices architecture overview v3 por
Microservices architecture overview v3Microservices architecture overview v3
Microservices architecture overview v3Dmitry Skaredov
1.7K vistas80 diapositivas
AWS January 2016 Webinar Series - Introduction to Docker on AWS por
AWS January 2016 Webinar Series - Introduction to Docker on AWSAWS January 2016 Webinar Series - Introduction to Docker on AWS
AWS January 2016 Webinar Series - Introduction to Docker on AWSAmazon Web Services
6K vistas46 diapositivas
Breaking the Monolith por
Breaking the MonolithBreaking the Monolith
Breaking the MonolithVMware Tanzu
7.8K vistas42 diapositivas
Microservice vs. Monolithic Architecture por
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitecturePaul Mooney
90K vistas18 diapositivas
Exposing services with Azure API Management por
Exposing services with Azure API ManagementExposing services with Azure API Management
Exposing services with Azure API ManagementCallon Campbell
613 vistas35 diapositivas

La actualidad más candente(20)

Microservices architecture overview v3 por Dmitry Skaredov
Microservices architecture overview v3Microservices architecture overview v3
Microservices architecture overview v3
Dmitry Skaredov1.7K vistas
AWS January 2016 Webinar Series - Introduction to Docker on AWS por Amazon Web Services
AWS January 2016 Webinar Series - Introduction to Docker on AWSAWS January 2016 Webinar Series - Introduction to Docker on AWS
AWS January 2016 Webinar Series - Introduction to Docker on AWS
Breaking the Monolith por VMware Tanzu
Breaking the MonolithBreaking the Monolith
Breaking the Monolith
VMware Tanzu7.8K vistas
Microservice vs. Monolithic Architecture por Paul Mooney
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
Paul Mooney90K vistas
Exposing services with Azure API Management por Callon Campbell
Exposing services with Azure API ManagementExposing services with Azure API Management
Exposing services with Azure API Management
Callon Campbell613 vistas
Why Microservice por Kelvin Yeung
Why Microservice Why Microservice
Why Microservice
Kelvin Yeung501 vistas
Microservices Docker Kubernetes Istio Kanban DevOps SRE por Araf Karsh Hamid
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid4.2K vistas
Cloud Architecture - Multi Cloud, Edge, On-Premise por Araf Karsh Hamid
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-Premise
Araf Karsh Hamid393 vistas
AWS App Mesh (Service Mesh Magic)- AWS Container Day 2019 Barcelona por Amazon Web Services
AWS App Mesh (Service Mesh Magic)- AWS Container Day 2019 BarcelonaAWS App Mesh (Service Mesh Magic)- AWS Container Day 2019 Barcelona
AWS App Mesh (Service Mesh Magic)- AWS Container Day 2019 Barcelona
Amazon Web Services4.1K vistas
Developing applications with a microservice architecture (SVforum, microservi... por Chris Richardson
Developing applications with a microservice architecture (SVforum, microservi...Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...
Chris Richardson168.7K vistas
Microservices: Decomposing Applications for Deployability and Scalability (ja... por Chris Richardson
Microservices: Decomposing Applications for Deployability and Scalability (ja...Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...
Chris Richardson23.7K vistas
Microservices Architecture & Testing Strategies por Araf Karsh Hamid
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing Strategies
Araf Karsh Hamid2.8K vistas
An introduction to Microservices por Cisco DevNet
An introduction to MicroservicesAn introduction to Microservices
An introduction to Microservices
Cisco DevNet5.3K vistas
Microservices Architecture - Bangkok 2018 por Araf Karsh Hamid
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
Araf Karsh Hamid2.4K vistas
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs por Amazon Web Services
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs
Amazon Web Services17.1K vistas

Similar a Micro vs Nano (servicios)

Tecnologías para microservicios por
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
3.6K vistas47 diapositivas
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla... por
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...Amazon Web Services LATAM
144 vistas34 diapositivas
Serverless application repository por
Serverless application repositoryServerless application repository
Serverless application repositoryPaola Velazquez
26 vistas15 diapositivas
Clase 4 Electiva Profesional 3 AWS Lambda por
Clase 4 Electiva Profesional 3 AWS LambdaClase 4 Electiva Profesional 3 AWS Lambda
Clase 4 Electiva Profesional 3 AWS LambdaRichard Eliseo Mendoza Gafaro
136 vistas39 diapositivas
Comenzando con aplicaciones serverless en AWS por
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSAmazon Web Services LATAM
3K vistas40 diapositivas
Comenzando con Arquitecturas sin servidores por
Comenzando con Arquitecturas sin servidoresComenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidoresAmazon Web Services LATAM
417 vistas56 diapositivas

Similar a Micro vs Nano (servicios)(20)

Tecnologías para microservicios por Pedro J. Molina
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
Pedro J. Molina3.6K vistas
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla... por Amazon Web Services LATAM
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...
Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrolla...
Microservicios sobre MEAN Stack por Pedro J. Molina
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
Pedro J. Molina1.7K vistas
Opensouthcode: Microservicios sobre MEAN Stack por Pedro J. Molina
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
Pedro J. Molina1.2K vistas
[Evento] Microsoft Azure | Azure Compute: una mirada en 360° por Pablo Ariel Di Loreto
[Evento] Microsoft Azure | Azure Compute: una mirada en 360°[Evento] Microsoft Azure | Azure Compute: una mirada en 360°
[Evento] Microsoft Azure | Azure Compute: una mirada en 360°
Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v... por Guillermo Javier Bellmann
Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...
Microservicios en la nube: un paseo por Azure Service Fabric - .NET Conf CL v...
Arquitecturas Serverless com IoT, Machine Learning y Assistente de Voz en Prá... por Amazon Web Services LATAM
Arquitecturas Serverless com IoT, Machine Learning y Assistente de Voz en Prá...Arquitecturas Serverless com IoT, Machine Learning y Assistente de Voz en Prá...
Arquitecturas Serverless com IoT, Machine Learning y Assistente de Voz en Prá...
Microservicios y contenedores Docker por Plain Concepts
Microservicios y contenedores DockerMicroservicios y contenedores Docker
Microservicios y contenedores Docker
Plain Concepts2.8K vistas
Arquitecturas Serverless com IoT, Machine Learning y Assistente de Voz en Prá... por Amazon Web Services LATAM
Arquitecturas Serverless com IoT, Machine Learning y Assistente de Voz en Prá...Arquitecturas Serverless com IoT, Machine Learning y Assistente de Voz en Prá...
Arquitecturas Serverless com IoT, Machine Learning y Assistente de Voz en Prá...
AWS Cloud Experience CA: Desplegando y Desarrollando Aplicaciones Modernas en... por Amazon Web Services LATAM
AWS Cloud Experience CA: Desplegando y Desarrollando Aplicaciones Modernas en...AWS Cloud Experience CA: Desplegando y Desarrollando Aplicaciones Modernas en...
AWS Cloud Experience CA: Desplegando y Desarrollando Aplicaciones Modernas en...

Más de Pedro J. Molina

MDE en la industria por
MDE en la industriaMDE en la industria
MDE en la industriaPedro J. Molina
10 vistas55 diapositivas
Terraform por
TerraformTerraform
TerraformPedro J. Molina
5 vistas1 diapositiva
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web por
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebPedro J. Molina
85 vistas20 diapositivas
Infrastructure as Code with Terraform por
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformPedro J. Molina
51 vistas34 diapositivas
Are Startups for me? por
Are Startups for me?Are Startups for me?
Are Startups for me?Pedro J. Molina
465 vistas18 diapositivas
Meow Demo por
Meow DemoMeow Demo
Meow DemoPedro J. Molina
228 vistas5 diapositivas

Más de Pedro J. Molina(20)

dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web por Pedro J. Molina
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
Pedro J. Molina85 vistas
Infrastructure as Code with Terraform por Pedro J. Molina
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
Pedro J. Molina51 vistas
Essential as the base for Web DSLs por Pedro J. Molina
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLs
Pedro J. Molina300 vistas
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina por Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
Pedro J. Molina646 vistas
Securizando por construcción mediante MDE por Pedro J. Molina
Securizando por construcción mediante MDESecurizando por construcción mediante MDE
Securizando por construcción mediante MDE
Pedro J. Molina237 vistas
Building APIs with the OpenApi Spec por Pedro J. Molina
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi Spec
Pedro J. Molina1K vistas
SVQDC 2017 Tecnologías para Microservicios por Pedro J. Molina
SVQDC 2017 Tecnologías para MicroserviciosSVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para Microservicios
Pedro J. Molina1.1K vistas
Hivepod: Casos de uso en OpenData por Pedro J. Molina
Hivepod: Casos de uso en OpenDataHivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenData
Pedro J. Molina797 vistas

Último

PRESENTACIÓN.pptx por
PRESENTACIÓN.pptxPRESENTACIÓN.pptx
PRESENTACIÓN.pptxsusanaasotoleiva
6 vistas1 diapositiva
ESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODO por
ESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODOESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODO
ESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODOpalaciomoralesmartin
8 vistas5 diapositivas
MVelazco_Internet, Origenes y Evolucion.pptx por
MVelazco_Internet, Origenes  y Evolucion.pptxMVelazco_Internet, Origenes  y Evolucion.pptx
MVelazco_Internet, Origenes y Evolucion.pptxal223915
5 vistas39 diapositivas
Dominios de Internet.pdf por
Dominios de Internet.pdfDominios de Internet.pdf
Dominios de Internet.pdfAnahisZambrano
8 vistas2 diapositivas
fundamentos de electricidad electronica por
fundamentos de electricidad electronicafundamentos de electricidad electronica
fundamentos de electricidad electronicaKevin619029
5 vistas16 diapositivas
1.2. ALAN TOURING EL PADRE DE LA COMPUTACIÓN.pdf por
1.2. ALAN TOURING EL PADRE DE LA COMPUTACIÓN.pdf1.2. ALAN TOURING EL PADRE DE LA COMPUTACIÓN.pdf
1.2. ALAN TOURING EL PADRE DE LA COMPUTACIÓN.pdfFernando Samaniego
8 vistas4 diapositivas

Último(20)

MVelazco_Internet, Origenes y Evolucion.pptx por al223915
MVelazco_Internet, Origenes  y Evolucion.pptxMVelazco_Internet, Origenes  y Evolucion.pptx
MVelazco_Internet, Origenes y Evolucion.pptx
al2239155 vistas
fundamentos de electricidad electronica por Kevin619029
fundamentos de electricidad electronicafundamentos de electricidad electronica
fundamentos de electricidad electronica
Kevin6190295 vistas
1.2. ALAN TOURING EL PADRE DE LA COMPUTACIÓN.pdf por Fernando Samaniego
1.2. ALAN TOURING EL PADRE DE LA COMPUTACIÓN.pdf1.2. ALAN TOURING EL PADRE DE LA COMPUTACIÓN.pdf
1.2. ALAN TOURING EL PADRE DE LA COMPUTACIÓN.pdf
Probando aplicaciones basadas en LLMs.pdf por Federico Toledo
Probando aplicaciones basadas en LLMs.pdfProbando aplicaciones basadas en LLMs.pdf
Probando aplicaciones basadas en LLMs.pdf
Federico Toledo49 vistas
Tarea15.pptx por illanlir
Tarea15.pptxTarea15.pptx
Tarea15.pptx
illanlir10 vistas
Tecnologías para la enseñanza virtual.pptx por exprosaavedra
Tecnologías para la enseñanza virtual.pptxTecnologías para la enseñanza virtual.pptx
Tecnologías para la enseñanza virtual.pptx
exprosaavedra11 vistas
El Ciberespacio y sus Características.pptx por AnthlingPereira
El Ciberespacio y  sus Características.pptxEl Ciberespacio y  sus Características.pptx
El Ciberespacio y sus Características.pptx
AnthlingPereira14 vistas
FUNDAMENTOS DE ELECTRICIDAD Y ELECTRONICA.pdf por ortizjuanjose591
FUNDAMENTOS DE ELECTRICIDAD Y ELECTRONICA.pdfFUNDAMENTOS DE ELECTRICIDAD Y ELECTRONICA.pdf
FUNDAMENTOS DE ELECTRICIDAD Y ELECTRONICA.pdf
ortizjuanjose5917 vistas
Tecnologías para la enseñanza virtual por mpachecocodem
Tecnologías para la enseñanza virtual Tecnologías para la enseñanza virtual
Tecnologías para la enseñanza virtual
mpachecocodem7 vistas
Presentación: El impacto y peligro de la piratería de software por EmanuelMuoz11
Presentación: El impacto y peligro de la piratería de softwarePresentación: El impacto y peligro de la piratería de software
Presentación: El impacto y peligro de la piratería de software
EmanuelMuoz1117 vistas
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real... por codertectura
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...
codertectura529 vistas

Micro vs Nano (servicios)

  • 1. Micro vsnano Servicios Pedro J. Molina https://pjmolina.com @pmolinamhttps://metadev.pro μ n
  • 4. Microservicios (1/3) Estilo arquitectural para desarrollo de Software Aplicaciones complejas compuestas por pequeños servicios, independientes y autónomos que se comunican usando APIs agnósticas de lenguaje. Altamente desacoplados, enfocados en tareas pequeñas. ¿Cómo de pequeño? Dueño (onwership) claro y conocido. http://martinfowler.com/articles/microservices.html
  • 5. Microservicios (2/3)  Ventajas  Componibles  Evolución rápida  Stack adecuado al trabajo  Aislamiento ante fallos  Despliegues rápidos  Mejor disponibilidad  Contras  Latencia (en composición)  Correlación de eventos (trazas)  Heterogeneidad  Volumen en despliegue  requiere automatización http://es.slideshare.net/stonse/pros-and-cons-of-a-microservices-architecture-talk-at-aws-reinvent
  • 6. Microservicios (3/3)  Microservicios = SOA para Hipsters  Abanderados  Netflix  Amazon  Building Microservices 2015, Sam Newman
  • 7. Sobre la importancia de aislar los microservicios: Si la necesita, cada microservicio tiene su propia capa de persistencia. Aislados
  • 8. Microservicio Disrupción Empresarial Ley de Conway “Las organizaciones que diseñan sistemas están limitadas a producir diseños que copian las estructuras de comunicación de esas organizaciones”. Melvin Conway, 1968 Inversión  Disrupción  Startups centradas en Transformación Digital que disrupcionan un mercado  Aprovechan la agilidad de los microservicios para iterar y pivotar más rápido descubriendo y asentando nuevos procesos más óptimos  Uber, Netflix, Amazon…
  • 9. Stacks para Microservicios NodeJS  Express + Baucis  SenecaJS  FeatherJS  Serverless: Claudia Java  Jersey  Dropwizard  Spring / Spring Boot  Play  SparkJava  http://www.gajotres.net/best-available-java-restful- micro-frameworks/ .NET Core  NancyFx  WebAPI  https://docs.microsoft.com/en- us/dotnet/articles/csharp/tutorials/microservices Go  go-kit/kit  micro/go-micro  goa.design  coding/kite  Serverless: Sparta, Apex, Gordon
  • 10. Persistencia  NoSQL  MongoDB, CouchDB, Dynamo, DocumentDB  RDBM  MySql, Postgress, Oracle, Sql Server  Key-Value Stores  Redis  Memcache  Colas  RabitMQ, ZeroMQ, AMZ SQS, Azure Queues  Blobs  Amazon S3  Azure Blobs
  • 12. Demo. Ejemplo Sitio en Producción: https://openapi3.herokuapp.com demo / demo ¡Sed buenos! }:-b Repositorio de fuentes: https://github.com/pjmolina/event-backend
  • 13. MEAN Stack: Arquitectura Client ExpressJS BaucisJS Mongoose MongoDB HTTP req resource query/command data 401 | 403 AuthN/AuthZ middleware <req.user, res> Microservice
  • 14. NodeJS + Express JS  http://expressjs.com var express = require('express'); var app = express(); app.get('/hello', function(req, res) { res.status(200).send('hello world'); }); /helloreq res
  • 15. Express Middleware  CORS  AuthN  PassportJS  AuthZ  Etc. app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); res.header("Access-Control-Allow-Methods", "OPTIONS,GET,POST,PUT,DELETE"); next(); }); *req res next()
  • 16. .NET Core + NancyFX  http://nancyfx.org public class SampleModule : Nancy.NancyModule { public SampleModule() { Get["/hello"] = _ => “hello world"; } } /helloreq res
  • 17. OpenAPI  OpenAPI Initiative https://openapis.org  Descripción de Servicios / APIs  Documenta el API  Facilita su uso por desarrolladores  Herramientas  Contract first  Documentar APIs existents  Generación de Proxies, Skeletons, SDKs nativos  Integración con Herramientas de API Management
  • 18. Escalabilidad  Clusters de MongoDB  Sesión persistida en MongoDB  connect-mongo  Balanceador de carga (nginx, haproxy, etc.)  Opciones:  Gestionalo tu según necesidades: IaaS  PaaS (como Heroku)  Serverless
  • 19. Carga  Sistema en producción  Backends para aplicaciones móviles Android e iOS + portal web  80.000 peticiones diarias en ventana de 4 horas  Promedio = 333 ppm, aprox 6 pps 100-200ms  Picos de 1000 ppm, aprox 17 pps  En 2 instancias 1x 1Gb RAM en Heroku  por 100 $/mes + 18 $/mes de mLab
  • 24. Go Serverless!  Código sin preocuparse* por la infrastructura  Amazon Lambda Functions http://docs.aws.amazon.com/lambda  Google Cloud Functions  IBM OpenWhisk  Azure Functions
  • 25. Nano-servicio  ¿¡Microservicio más pequeño hecho en Valencia!?
  • 26. Nano-servicio  Servicios muy, muy pequeños. Altamente escalables.  Diseñados para poder ser desplegados en plataformas serverless y poder aprovechar un escalado totalmente elástico.  Requieren de una infrastructura eficiente que pueda alojar una multitud de nanoservicios  Plataformas:  Amazon Lambda Functions  Google Cloud Functions  Azure Cloud Funtions  IBM OpenWisk
  • 27. Nano-servicios: plataformas y librerías  Plataformas:  Amazon Lambda Functions  Google Cloud Functions  Azure Cloud Funtions  IBM OpenWisk  Librerías  Serverless.com (ASW Lambda)  ClaudiaJS (AWS Lambda)
  • 28. exports.handler = function(event, context) { switch (event.operation) { case 'ping': context.succeed('pong'); return; case 'getSample': event.customArgs = ["rose:", "/tmp/rose.png"]; im.convert(event.customArgs, function(err, output) { if (err) context.fail(err); else { var resultImgBase64 = new Buffer( fs.readFileSync("/tmp/rose.png")) .toString('base64'); try { fs.unlinkSync("/tmp/rose.png");} catch (e) {} context.succeed(resultImgBase64); } }); break; default: return context.fail(new Error('Unrecognized operation "' + event.operation + '"')); } }; Ejemplo: AWS Lambda
  • 29. Ejemplo Serverless. Analíticas móviles Amazon Route 53 Amazon S3 AWS Lambda Lambda function Amazon DynamoDB Amazon API Gateway*
  • 30. Casos de uso Microservicios  Frontera: Bounded Context bien definidos (DDD)  Necesidad de escalado o evolución de negocio en cada Bounded Context a diferentes velocidades o desconocida  Equipos diferenciados: cada uno responsable de su microservicio Nanoservicios  Frontera: funcionalidad muy, muy pequeña  Funcionalidad que requiera una escalabilidad o disponibilidad muy alta  Servicio de login / Servicio de log / diagnostico  A menudo considerados anti-patrón: cuando el coste de desplegarlos es mayor que su utilidad
  • 31. Preguntas y tal vez… respuestas @pmolinam