SlideShare una empresa de Scribd logo
FRANCISCO JAVIER TOSCANO LOPEZ
30/11/2023
SEVILLA MuleSoft Meetup Group
Who am I?
2
● Soy un gaditano que emigró hace ya casi 20
años a Sevilla donde resido actualmente.
● Llevo casi 20 años como Arquitecto Java,
experto en arquitecturas de Microservicios
basadas en Spring Boot y que hace 5 años
tuvo la oportunidad de conocer Mulesoft.
● Desde entonces, llevo ayudando a diseñar
arquitecturas de integración utilizando toda la
potencia que nos ofrece Mulesoft.
● Porque Mulesoft?, porque al estar basado en
Java me permitió conocer todos su potencial
desde el minuto uno , y me ayudo a entender
mejor como funciona por dentro.
Javier Toscano Lopez, Chief Architect, NTT Data
https://www.linkedin.com/in/francisco-javier-toscano-
lopez-1815919/
@fjtoscano
2
3
Agenda
• Modelos de despliegues
• Aprovechamiento de recursos
• Buenas prácticas de desarrollo
• Mesa redonda.
All contents © MuleSoft, LLC
Modelos de despliegue
5
Modelos de despliegue - CloudHub
CARACTERISTICAS
● Mínimo de capacidad consumida por API : 0,1
vCore
● Despliegue en infraestructura propia de
Cloudhub sin coste para el cliente
● Posibilidad de crear VPC y conexión con Red
interna por AWS (VPC Peering, Direct Connect,
Transist Gateway) u (Otras nubes) por VPN
● Publicación de API en modo interno y externo
● Integración nativa con Mulesoft API Manager,
Monitoring y Exchange
CONTRAS
● Selección de capacidades limitada: 0.1, 0.2, 1,
2, 4 vCores, Falta de aprovechamiento de
capacidades
● Privacidad: El API no se encuentra desplegado
en la red del cliente
External Network
Api Manager Monitoring Exchange
Runtime Manager
0,1 vCore
0,2 vCore
Capacidad consumida
por el API
6
Modelos de despliegue – CloudHub 2.0
CARACTERISTICAS
● Mínimo de capacidad consumida por API : 0,1 vCore
● Mas opciones de capacidad: 0.5, 1.5, 2.5, 3,5
● Despliegue en infraestructura propia de Cloudhub sin coste
para el cliente
● Posibilidad de crear Private Spaces y conexión con Red interna
por AWS (Transist Gateway) u (Otras nubes) por VPN
● Publicación de API en modo interno y externo
● Integración nativa con Mulesoft API Manager, Monitoring y
Exchange
CONTRAS
● Privacidad: El API no se encuentra desplegado en la red del
cliente
External Network
Api Manager Monitoring Exchange
Runtime Manager
0,1 vCore
0,2 vCore
Capacidad consumida
por el API
7
Modelos de despliegue - RTF
CARACTERISTICAS
● Mulesoft proporciona el software necesario para desplegar las
API´s en un runtime instalado sobre la nube del cliente Azure (AKS),
AWS (EKS), Google (GKS) u OpenShift.
● Mas parámetros de configuración de infra: CPU y Memoria
● Mínimo de capacidad consumida por API : 0,02 vCore, memoria
700MB RAM.
● Infraestructura propia del cliente.
● Soporte compartido entre cliente y Mulesoft.
● Publicación de API en modo interno y externo a través de
configuración de ingress controler en la infra del cliente
● Integración nativa con Mulesoft API Manager, Monitoring y
Exchange
● Logging externo a mulesoft, Splunk, Kibana, GrayLog, etc
PROS
● Aprovechamiento de los recursos vCores
● Seguridad: Instalación en red de cliente
● Gestión desde panel de control de Mulesoft
INCOVENIENTES
● Coste de infra a cargo del cliente
● Gestión de logging externo a la plataforma
● No compatible con Anypoint MQ
External Network
Api Manager Monitoring Exchange
Runtime Fabric
Internal Network
Runtime Fabric
Runtime Fabric
CNF
8
Modelos de despliegue – Flex Gateway y UAPIM
CARACTERISTICAS
● MuleSoft proporciona un Gateway ligero que se instala
en la infra del cliente y que sirve de agente para que
MuleSoft API Manager pueda gestionar las API que se
configuren en el Flex Gateway
● Infraestructura propia del cliente compatible con Linux,
Docker o Kubernetes
● Soporte compartido entre cliente y MuleSoft
● Publicación de API según seguridad del propio cliente
● Integración nativa con MuleSoft API Manager,
Monitoring, Exchange
PROS
● Pricing por número de peticiones, no consume vCores
● Seguridad: Instalación en red de cliente
● Gestión desde panel de control de MuleSoft
INCOVENIENTES
● Posible logging descentralizado entre API de Mule y
otras piezas de integración
External Network
Api Manager Monitoring Exchange
ESB
Internal Network
ESB
Flex Gateway
CNF
All contents © MuleSoft, LLC
Aprovechamiento de recursos
10
Preguntas que nos debemos hacer antes de
implementar
• Número de mensajes ?
• Tamaño de los mensajes ?
• Complejidad de negocio desarrollado
• SLA y latencia del backend
• Como vamos a agrupar las operaciones dentro de las MuleApps ?
• Tenemos operaciones asíncronas ?
• Tenemos ETLs o Schedulers ?
• Numero de entornos Productivos y no productivos
Capacidad de
CloudHub
Recursos
consumidos por
nuestro desarrollo
¿Qué tenemos?
Ajustar al máximo los recursos a
la capacidad y escalamiento de
CloudHub
¿Qué queremos?
0.1, 0.2, 1, 2, 4 vCores CH 1
0.1, 0.2, 0.5, 1, 1.5, 2, 2.5,… vCores CH 2
11
Volumen y tamaño del mensaje
Deployment
config
CloudHub 1 vcore
worker Managed
API with
embedded
Gateway
Api detail APIkit Router with
OAS 2.0 GET
/orders
application/json
Request header ~500b (including
400b of JWT
token)
Protocol Plain HTTP
Backend
Latency
50 ms
SLA 500ms Strict (99%)
Complejidad Simple
12
Business Logic Complexity
13
Volumen
API detail APIkit Router with
OAS 2.0 GET
/orders
application/json
Request header ~500b (including
400b of JWT token)
Protocol Plain HTTP
Backend latency 50ms
Response payload 100kb JSON
Expected TPS 700+
Complejidad Simple
14
Como agrupar las operaciones dentro de las APIs
El eterno dilema de como agrupar las operaciones dentro de una Mule App.
• Agrupar por Sistema Backend
• Agrupar por funcionalidad de negocio
• Agrupar por volumetrías en las operaciones
• MuleSoft recomienda para un buen aprovechamiento de los recursos unas 25-30
operaciones por MuleApps
• Para poder agrupar correctamente las operaciones es necesario que tengamos en cuenta
todos los puntos anteriores
15
Patrones de integración
16
Asincronía
• El desarrollo asíncrono siempre suele ir ligado a elementos intermedios que almacenan el
mensaje para ser tratado de forma desatendida.
• Suele haber un elemento de colas tipo ActiveMQ, Kafka,…
• Se recomienda desarrollarlo en MuleApps que solo tengan api asíncronas.
1.- Un servicio Rest que recibe el mensaje y devuelve un ACK
2.- Se guarda el mensaje en el sistema de colas
3.- Se lee el mensaje de la cola y se llama al Backend
4.- La respuesta del backend se puede enviar directamente a un servicio del sistema Front
que este escuchando.
17
ETL
• MuleSoft, no es una herramienta de ETL, pero eso no quiere decir que no tenga
herramientas potentes para hacer ETL
• Herramientas BATCH
• Operaciones BULK en BBDD
• Streaming: No carga todo el contenido en memoria, va utilizando buffer
• Dataweave como herramienta de transformación de datos
• Programar inteligentemente los ETL para que no arranquen a la vez
18
Numero de entornos
• A veces nos encontramos con clientes que quieren 4 entornos Sandbox (DEV, INT, QA,
PREPROD) y dos entornos productivos (PROD, RECOVER), y tienen 4 vcores Sandbox y 2
vCores Production.
• Clientes con sistemas Backend con solo dos entornos DEV y PRO.
• Se recomienda siempre que se pueda, 2 entornos Sandbox (DEV, UAT) y un entorno
Productivo.
• Si tienes un contrato ELA, crea entornos cuando estes aburrido, o APIs por deporte
19
T-shirt sizing
𝚺(número de aplicaciones en cada talla de
camiseta x tamaño recomendado del core
de la camiseta)
20
T-shirt sizing: Aproximación
Estimación aproximada basada en los factores más básicos: TPS, tamaño
de la carga útil y lógica
Size Criterio Cores
Small 5-30 TPS, Payload size upto 100kb, Simple Logic or File
size under 1GB
0.1
Medium 30-100 TPS, Payload size upto 100kb, Medium Logic or
File size 1-2GB
0.2
Large 100-400 TPS, Payload size 100kb - 200kb, Medium to
Complex Logic or File Size of 2–4GB
1
X-large 400 or above TPS, Payload size 200kb or more,
Complex Logic or File size 4GB or above
2
Otros factores que pueden
ser considerados:
● Sync vs async
● Real time vs batch
● Strict SLA requirements
● Payload size variations
● API-led Architecture
● High Availability
All contents © MuleSoft, LLC
Buenas prácticas de desarrollo
22
Reglas de organización del código
• Crear global.xml con todos los global element (Elementos de
configuración de componentes y conectores)
• Crear error.xml con la definición y captura de todos los tipos de errores
del proyecto Mule
• Crear un [operación].xml con el flujo de cada una de las operaciones
Rest
• Crear un fichero commons.xml con todos los flujos comunes del
proyecto.
• Utilizar correctamente las properties de entorno ${env}
• Crear DW reutilizables en ficheros dwl
23
Estructura de proyecto
• src/main/mule: Esta carpeta contiene todos los ficheros de configuración con
los flujos de las distintas operaciones que va a contener el API
o global.xml: Este fichero contiene todo los Global element que vaya a
contener el proyecto en los diferentes flujos de operaciones.
o s-example.xml: Contiene el flujo principal con el ApiKit y los diferentes
flujos de las operaciones.
o common/common.xml: Contendrá todos los flujos que sean reutilizables
o comunes en toda la API.
o error/error.xml: Contendrá toda la gestión de errores "Error handling" de
la API.
o service/[nombreOperacion].xml: contendrá por cada operación definida en
el RAML un fichero con el código de la operación.
· src/main/resources: Esta carpeta contiene:
o Log4j.xml: Fichero con la configuración de logs de la API
o Api/ : aquí se encuentra el API Specification que hemos obtenido
del Design Center con todos los datatypes, example y traits.
o Local/properties.yaml: Este fichero contiene todas las propiedades
que necesite nuestro código cuando estemos trabajando en local.
24
Cosas que no te cuentan
No utilices Flow a diestro y siniestro
• los Flow consumen más memoria que los Subflow
• Los Flow crean eventos que son registrados al inicio y la Mule App
tarda más en arrancar y ejecutarse
• https://docs.mulesoft.com/mule-runtime/latest/about-flows
Estudia un poco antes de implementar For-Each para todo
• Debes tener en cuenta que el integrador es el peor sitio para
procesar grandes cantidades de datos.
• El uso de For-Each muchas veces se pueden evitar haciendo una
consulta u obteniendo los datos de una vez.
• Pregunta a alguien con más experiencia sobre esto
Analiza bien las dependencias que te hacen falta
• Cuando se sube una Mule App se sube con todas sus dependencias
• Revisar si no tiene conectores de mas
• Actualiza siempre que puedas
• Solo el conector de SalesForce coge 40 MB
25
Cosas que no te cuentan
Cuando trabajes con BD siempre activa el pool de conexiones
• Java y por ende Mule, consume muchos recursos cada vez que tiene
que conectarse con una BD
• El pool de conexiones ayuda a mantener siempre abierto el canal de
comunicaciones y hace que consuma mucha menos memoria
Saber programar Java siempre ayuda
• MuleSoft está basado en Java
• Aunque tu mueves cajitas para programar el Flow, siempre es
recomendable saber cómo funciona por dentro y poder entender
mejor aquellos comportamientos que se salen de “lo normal”
• No se debe olvidar que MuleSoft es una herramienta de integración,
pero si quieres salirte del tiesto en Mule “Estudia Java y Spring ”
El acceso al Object Store es limitado
• El Object Store es la zona de memoria de almacenamiento temporal.
• Se utiliza para muchas cosas, Token Oauth, Cache, etc
• Por defecto tiene un límite de 10 TPS (Transferencias por segundo)
por aplicación
All contents © MuleSoft, LLC
Redis como Custom Object Store
27
MuleSoft Object Store
Object Store
• Tipo de almacenamiento clave - valor
• Potente herramienta de almacenamiento temporal
Ej de utilización:
• Almacenamiento del token de Oauth
• Almacenamiento de las reglas de cache
Limitaciones:
• Básico: Permite por aplicación 10 accesos de escritura/lectura por
segundo. Y 100 Millones de transacciones al mes.
• Premium: Permite por aplicación 100 accesos de escritura/lectura
por segundo.
28
Custom Object Store
Redis
• Tipo de almacenamiento clave - valor
• Potente herramienta de almacenamiento temporal
• MuleSoft permite sobrescribir la funcionalidad de
Object Store al redis
Ej de utilización:
• Almacenamiento del token de Oauth
• Almacenamiento de las reglas de cache
Limitaciones:
• NO TIENE
Contras
• El coste
Thank you

Más contenido relacionado

La actualidad más candente

8 benefits of SaaS - Software as a Service
8 benefits of SaaS - Software as a Service8 benefits of SaaS - Software as a Service
8 benefits of SaaS - Software as a Service
HeadChannel
 
VMware vCloud and vRealize Operations
VMware vCloud and vRealize OperationsVMware vCloud and vRealize Operations
VMware vCloud and vRealize Operations
Pedro Silva
 
Patna MuleSoft Meetup Anypoint Cloudhub 2.0
Patna MuleSoft Meetup Anypoint Cloudhub 2.0Patna MuleSoft Meetup Anypoint Cloudhub 2.0
Patna MuleSoft Meetup Anypoint Cloudhub 2.0
shyamraj55
 
Build on AWS: Migrating And Platforming
Build on AWS: Migrating And PlatformingBuild on AWS: Migrating And Platforming
Build on AWS: Migrating And Platforming
Amazon Web Services
 
Migration to Alibaba Cloud
Migration to Alibaba CloudMigration to Alibaba Cloud
Migration to Alibaba Cloud
Alibaba Cloud
 
Example VDI Solution Architecture
Example VDI Solution ArchitectureExample VDI Solution Architecture
Example VDI Solution Architecture
Alex St. Amand
 
IBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use CasesIBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway
 
vmware_cloud_foundation_on_vxrail_technical_customer_presentation.pptx
vmware_cloud_foundation_on_vxrail_technical_customer_presentation.pptxvmware_cloud_foundation_on_vxrail_technical_customer_presentation.pptx
vmware_cloud_foundation_on_vxrail_technical_customer_presentation.pptx
VitNguyn252054
 
Monitoring modern applications using Elastic
Monitoring modern applications using ElasticMonitoring modern applications using Elastic
Monitoring modern applications using Elastic
Elasticsearch
 
Managing the Complexity of Microservices Deployments
Managing the Complexity of Microservices DeploymentsManaging the Complexity of Microservices Deployments
Managing the Complexity of Microservices Deployments
Apigee | Google Cloud
 
Identity and Access Management from Microsoft and Razor Technology
Identity and Access Management from Microsoft and Razor TechnologyIdentity and Access Management from Microsoft and Razor Technology
Identity and Access Management from Microsoft and Razor Technology
David J Rosenthal
 
Micro Focus Corporate Overview
Micro Focus Corporate OverviewMicro Focus Corporate Overview
Micro Focus Corporate Overview
Micro Focus
 
Introduction to Adaptive and 3DEXPERIENCE Cloud
Introduction to Adaptive and 3DEXPERIENCE CloudIntroduction to Adaptive and 3DEXPERIENCE Cloud
Introduction to Adaptive and 3DEXPERIENCE Cloud
Adaptive Corporation
 
Windows virtual desktop l100 presentation
Windows virtual desktop l100 presentationWindows virtual desktop l100 presentation
Windows virtual desktop l100 presentation
kiefter
 
10 good reasons to go for model-based systems engineering in your organization
10 good reasons to go for model-based systems engineering in your organization10 good reasons to go for model-based systems engineering in your organization
10 good reasons to go for model-based systems engineering in your organization
Siemens PLM Software
 
IBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
IBM Integration Bus & WebSphere MQ - High Availability & Disaster RecoveryIBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
IBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
Rob Convery
 
plc8-200417125816.pdf
plc8-200417125816.pdfplc8-200417125816.pdf
plc8-200417125816.pdf
Robin8015873726
 
Introduction to soa suite 12c in 20 slides
Introduction to soa suite 12c in 20 slidesIntroduction to soa suite 12c in 20 slides
Introduction to soa suite 12c in 20 slides
Vincenzo Capozzoli
 
NSX for vSphere Logical Routing Deep Dive
NSX for vSphere Logical Routing Deep DiveNSX for vSphere Logical Routing Deep Dive
NSX for vSphere Logical Routing Deep Dive
Pooja Patel
 
Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)Wan Leung Wong
 

La actualidad más candente (20)

8 benefits of SaaS - Software as a Service
8 benefits of SaaS - Software as a Service8 benefits of SaaS - Software as a Service
8 benefits of SaaS - Software as a Service
 
VMware vCloud and vRealize Operations
VMware vCloud and vRealize OperationsVMware vCloud and vRealize Operations
VMware vCloud and vRealize Operations
 
Patna MuleSoft Meetup Anypoint Cloudhub 2.0
Patna MuleSoft Meetup Anypoint Cloudhub 2.0Patna MuleSoft Meetup Anypoint Cloudhub 2.0
Patna MuleSoft Meetup Anypoint Cloudhub 2.0
 
Build on AWS: Migrating And Platforming
Build on AWS: Migrating And PlatformingBuild on AWS: Migrating And Platforming
Build on AWS: Migrating And Platforming
 
Migration to Alibaba Cloud
Migration to Alibaba CloudMigration to Alibaba Cloud
Migration to Alibaba Cloud
 
Example VDI Solution Architecture
Example VDI Solution ArchitectureExample VDI Solution Architecture
Example VDI Solution Architecture
 
IBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use CasesIBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use Cases
 
vmware_cloud_foundation_on_vxrail_technical_customer_presentation.pptx
vmware_cloud_foundation_on_vxrail_technical_customer_presentation.pptxvmware_cloud_foundation_on_vxrail_technical_customer_presentation.pptx
vmware_cloud_foundation_on_vxrail_technical_customer_presentation.pptx
 
Monitoring modern applications using Elastic
Monitoring modern applications using ElasticMonitoring modern applications using Elastic
Monitoring modern applications using Elastic
 
Managing the Complexity of Microservices Deployments
Managing the Complexity of Microservices DeploymentsManaging the Complexity of Microservices Deployments
Managing the Complexity of Microservices Deployments
 
Identity and Access Management from Microsoft and Razor Technology
Identity and Access Management from Microsoft and Razor TechnologyIdentity and Access Management from Microsoft and Razor Technology
Identity and Access Management from Microsoft and Razor Technology
 
Micro Focus Corporate Overview
Micro Focus Corporate OverviewMicro Focus Corporate Overview
Micro Focus Corporate Overview
 
Introduction to Adaptive and 3DEXPERIENCE Cloud
Introduction to Adaptive and 3DEXPERIENCE CloudIntroduction to Adaptive and 3DEXPERIENCE Cloud
Introduction to Adaptive and 3DEXPERIENCE Cloud
 
Windows virtual desktop l100 presentation
Windows virtual desktop l100 presentationWindows virtual desktop l100 presentation
Windows virtual desktop l100 presentation
 
10 good reasons to go for model-based systems engineering in your organization
10 good reasons to go for model-based systems engineering in your organization10 good reasons to go for model-based systems engineering in your organization
10 good reasons to go for model-based systems engineering in your organization
 
IBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
IBM Integration Bus & WebSphere MQ - High Availability & Disaster RecoveryIBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
IBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
 
plc8-200417125816.pdf
plc8-200417125816.pdfplc8-200417125816.pdf
plc8-200417125816.pdf
 
Introduction to soa suite 12c in 20 slides
Introduction to soa suite 12c in 20 slidesIntroduction to soa suite 12c in 20 slides
Introduction to soa suite 12c in 20 slides
 
NSX for vSphere Logical Routing Deep Dive
NSX for vSphere Logical Routing Deep DiveNSX for vSphere Logical Routing Deep Dive
NSX for vSphere Logical Routing Deep Dive
 
Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)
 

Similar a Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas practicas

Kubernetes workshop
Kubernetes workshopKubernetes workshop
Kubernetes workshop
Raúl Requero García
 
Offering Cloud Solutions
Offering Cloud Solutions Offering Cloud Solutions
Offering Cloud Solutions
Zemsania Services & Consulting
 
dockerize.it
dockerize.itdockerize.it
dockerize.it
betabeers
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
Gerardo Linares
 
Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
Despliegue aplicaciones #SpringCloud en Cluster #Mesos MarathonDespliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
Juan Vergara
 
Construyendo una nube con OpenStack
Construyendo una nube con OpenStackConstruyendo una nube con OpenStack
Construyendo una nube con OpenStack
LibreCon
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
Domingo Suarez Torres
 
Despliegue de Imágenes en aulas de informática
Despliegue de Imágenes en aulas de informáticaDespliegue de Imágenes en aulas de informática
Despliegue de Imágenes en aulas de informática
ssuserbd237f
 
M vs m
M vs mM vs m
M vs m
Paco Ocampo
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Restorando
 
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk   AWS Roadshow Bogota MexicoIntroduccion a Elastic Beanstalk   AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Hermann Pais
 
Introduccion a elastic beanstalk aws roadshow bogota mexico
Introduccion a elastic beanstalk   aws roadshow bogota mexicoIntroduccion a elastic beanstalk   aws roadshow bogota mexico
Introduccion a elastic beanstalk aws roadshow bogota mexicoAmazon Web Services LATAM
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWS
Amazon Web Services LATAM
 
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
Rafa Garrido
 
Desarrollo de una aplicación Web para organizar Eventos Deportivos
Desarrollo de una aplicación Web para organizar Eventos DeportivosDesarrollo de una aplicación Web para organizar Eventos Deportivos
Desarrollo de una aplicación Web para organizar Eventos Deportivos
Adrian Alonso Vega
 
Python Gae django
Python Gae djangoPython Gae django
Python Gae django
Manuel Pérez
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
Jaime Perera Merino
 
Resumen Técnico Red Hat Summit 2015
Resumen Técnico Red Hat Summit 2015Resumen Técnico Red Hat Summit 2015
Resumen Técnico Red Hat Summit 2015
Semperti
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite Server
Luis Lesende
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
Daniel Cruz
 

Similar a Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas practicas (20)

Kubernetes workshop
Kubernetes workshopKubernetes workshop
Kubernetes workshop
 
Offering Cloud Solutions
Offering Cloud Solutions Offering Cloud Solutions
Offering Cloud Solutions
 
dockerize.it
dockerize.itdockerize.it
dockerize.it
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
Despliegue aplicaciones #SpringCloud en Cluster #Mesos MarathonDespliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
 
Construyendo una nube con OpenStack
Construyendo una nube con OpenStackConstruyendo una nube con OpenStack
Construyendo una nube con OpenStack
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 
Despliegue de Imágenes en aulas de informática
Despliegue de Imágenes en aulas de informáticaDespliegue de Imágenes en aulas de informática
Despliegue de Imágenes en aulas de informática
 
M vs m
M vs mM vs m
M vs m
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk   AWS Roadshow Bogota MexicoIntroduccion a Elastic Beanstalk   AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
 
Introduccion a elastic beanstalk aws roadshow bogota mexico
Introduccion a elastic beanstalk   aws roadshow bogota mexicoIntroduccion a elastic beanstalk   aws roadshow bogota mexico
Introduccion a elastic beanstalk aws roadshow bogota mexico
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWS
 
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
 
Desarrollo de una aplicación Web para organizar Eventos Deportivos
Desarrollo de una aplicación Web para organizar Eventos DeportivosDesarrollo de una aplicación Web para organizar Eventos Deportivos
Desarrollo de una aplicación Web para organizar Eventos Deportivos
 
Python Gae django
Python Gae djangoPython Gae django
Python Gae django
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
Resumen Técnico Red Hat Summit 2015
Resumen Técnico Red Hat Summit 2015Resumen Técnico Red Hat Summit 2015
Resumen Técnico Red Hat Summit 2015
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite Server
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 

Último

Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
44652726
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 

Último (20)

Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 

Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas practicas

  • 1. FRANCISCO JAVIER TOSCANO LOPEZ 30/11/2023 SEVILLA MuleSoft Meetup Group
  • 2. Who am I? 2 ● Soy un gaditano que emigró hace ya casi 20 años a Sevilla donde resido actualmente. ● Llevo casi 20 años como Arquitecto Java, experto en arquitecturas de Microservicios basadas en Spring Boot y que hace 5 años tuvo la oportunidad de conocer Mulesoft. ● Desde entonces, llevo ayudando a diseñar arquitecturas de integración utilizando toda la potencia que nos ofrece Mulesoft. ● Porque Mulesoft?, porque al estar basado en Java me permitió conocer todos su potencial desde el minuto uno , y me ayudo a entender mejor como funciona por dentro. Javier Toscano Lopez, Chief Architect, NTT Data https://www.linkedin.com/in/francisco-javier-toscano- lopez-1815919/ @fjtoscano 2
  • 3. 3 Agenda • Modelos de despliegues • Aprovechamiento de recursos • Buenas prácticas de desarrollo • Mesa redonda.
  • 4. All contents © MuleSoft, LLC Modelos de despliegue
  • 5. 5 Modelos de despliegue - CloudHub CARACTERISTICAS ● Mínimo de capacidad consumida por API : 0,1 vCore ● Despliegue en infraestructura propia de Cloudhub sin coste para el cliente ● Posibilidad de crear VPC y conexión con Red interna por AWS (VPC Peering, Direct Connect, Transist Gateway) u (Otras nubes) por VPN ● Publicación de API en modo interno y externo ● Integración nativa con Mulesoft API Manager, Monitoring y Exchange CONTRAS ● Selección de capacidades limitada: 0.1, 0.2, 1, 2, 4 vCores, Falta de aprovechamiento de capacidades ● Privacidad: El API no se encuentra desplegado en la red del cliente External Network Api Manager Monitoring Exchange Runtime Manager 0,1 vCore 0,2 vCore Capacidad consumida por el API
  • 6. 6 Modelos de despliegue – CloudHub 2.0 CARACTERISTICAS ● Mínimo de capacidad consumida por API : 0,1 vCore ● Mas opciones de capacidad: 0.5, 1.5, 2.5, 3,5 ● Despliegue en infraestructura propia de Cloudhub sin coste para el cliente ● Posibilidad de crear Private Spaces y conexión con Red interna por AWS (Transist Gateway) u (Otras nubes) por VPN ● Publicación de API en modo interno y externo ● Integración nativa con Mulesoft API Manager, Monitoring y Exchange CONTRAS ● Privacidad: El API no se encuentra desplegado en la red del cliente External Network Api Manager Monitoring Exchange Runtime Manager 0,1 vCore 0,2 vCore Capacidad consumida por el API
  • 7. 7 Modelos de despliegue - RTF CARACTERISTICAS ● Mulesoft proporciona el software necesario para desplegar las API´s en un runtime instalado sobre la nube del cliente Azure (AKS), AWS (EKS), Google (GKS) u OpenShift. ● Mas parámetros de configuración de infra: CPU y Memoria ● Mínimo de capacidad consumida por API : 0,02 vCore, memoria 700MB RAM. ● Infraestructura propia del cliente. ● Soporte compartido entre cliente y Mulesoft. ● Publicación de API en modo interno y externo a través de configuración de ingress controler en la infra del cliente ● Integración nativa con Mulesoft API Manager, Monitoring y Exchange ● Logging externo a mulesoft, Splunk, Kibana, GrayLog, etc PROS ● Aprovechamiento de los recursos vCores ● Seguridad: Instalación en red de cliente ● Gestión desde panel de control de Mulesoft INCOVENIENTES ● Coste de infra a cargo del cliente ● Gestión de logging externo a la plataforma ● No compatible con Anypoint MQ External Network Api Manager Monitoring Exchange Runtime Fabric Internal Network Runtime Fabric Runtime Fabric CNF
  • 8. 8 Modelos de despliegue – Flex Gateway y UAPIM CARACTERISTICAS ● MuleSoft proporciona un Gateway ligero que se instala en la infra del cliente y que sirve de agente para que MuleSoft API Manager pueda gestionar las API que se configuren en el Flex Gateway ● Infraestructura propia del cliente compatible con Linux, Docker o Kubernetes ● Soporte compartido entre cliente y MuleSoft ● Publicación de API según seguridad del propio cliente ● Integración nativa con MuleSoft API Manager, Monitoring, Exchange PROS ● Pricing por número de peticiones, no consume vCores ● Seguridad: Instalación en red de cliente ● Gestión desde panel de control de MuleSoft INCOVENIENTES ● Posible logging descentralizado entre API de Mule y otras piezas de integración External Network Api Manager Monitoring Exchange ESB Internal Network ESB Flex Gateway CNF
  • 9. All contents © MuleSoft, LLC Aprovechamiento de recursos
  • 10. 10 Preguntas que nos debemos hacer antes de implementar • Número de mensajes ? • Tamaño de los mensajes ? • Complejidad de negocio desarrollado • SLA y latencia del backend • Como vamos a agrupar las operaciones dentro de las MuleApps ? • Tenemos operaciones asíncronas ? • Tenemos ETLs o Schedulers ? • Numero de entornos Productivos y no productivos Capacidad de CloudHub Recursos consumidos por nuestro desarrollo ¿Qué tenemos? Ajustar al máximo los recursos a la capacidad y escalamiento de CloudHub ¿Qué queremos? 0.1, 0.2, 1, 2, 4 vCores CH 1 0.1, 0.2, 0.5, 1, 1.5, 2, 2.5,… vCores CH 2
  • 11. 11 Volumen y tamaño del mensaje Deployment config CloudHub 1 vcore worker Managed API with embedded Gateway Api detail APIkit Router with OAS 2.0 GET /orders application/json Request header ~500b (including 400b of JWT token) Protocol Plain HTTP Backend Latency 50 ms SLA 500ms Strict (99%) Complejidad Simple
  • 13. 13 Volumen API detail APIkit Router with OAS 2.0 GET /orders application/json Request header ~500b (including 400b of JWT token) Protocol Plain HTTP Backend latency 50ms Response payload 100kb JSON Expected TPS 700+ Complejidad Simple
  • 14. 14 Como agrupar las operaciones dentro de las APIs El eterno dilema de como agrupar las operaciones dentro de una Mule App. • Agrupar por Sistema Backend • Agrupar por funcionalidad de negocio • Agrupar por volumetrías en las operaciones • MuleSoft recomienda para un buen aprovechamiento de los recursos unas 25-30 operaciones por MuleApps • Para poder agrupar correctamente las operaciones es necesario que tengamos en cuenta todos los puntos anteriores
  • 16. 16 Asincronía • El desarrollo asíncrono siempre suele ir ligado a elementos intermedios que almacenan el mensaje para ser tratado de forma desatendida. • Suele haber un elemento de colas tipo ActiveMQ, Kafka,… • Se recomienda desarrollarlo en MuleApps que solo tengan api asíncronas. 1.- Un servicio Rest que recibe el mensaje y devuelve un ACK 2.- Se guarda el mensaje en el sistema de colas 3.- Se lee el mensaje de la cola y se llama al Backend 4.- La respuesta del backend se puede enviar directamente a un servicio del sistema Front que este escuchando.
  • 17. 17 ETL • MuleSoft, no es una herramienta de ETL, pero eso no quiere decir que no tenga herramientas potentes para hacer ETL • Herramientas BATCH • Operaciones BULK en BBDD • Streaming: No carga todo el contenido en memoria, va utilizando buffer • Dataweave como herramienta de transformación de datos • Programar inteligentemente los ETL para que no arranquen a la vez
  • 18. 18 Numero de entornos • A veces nos encontramos con clientes que quieren 4 entornos Sandbox (DEV, INT, QA, PREPROD) y dos entornos productivos (PROD, RECOVER), y tienen 4 vcores Sandbox y 2 vCores Production. • Clientes con sistemas Backend con solo dos entornos DEV y PRO. • Se recomienda siempre que se pueda, 2 entornos Sandbox (DEV, UAT) y un entorno Productivo. • Si tienes un contrato ELA, crea entornos cuando estes aburrido, o APIs por deporte
  • 19. 19 T-shirt sizing 𝚺(número de aplicaciones en cada talla de camiseta x tamaño recomendado del core de la camiseta)
  • 20. 20 T-shirt sizing: Aproximación Estimación aproximada basada en los factores más básicos: TPS, tamaño de la carga útil y lógica Size Criterio Cores Small 5-30 TPS, Payload size upto 100kb, Simple Logic or File size under 1GB 0.1 Medium 30-100 TPS, Payload size upto 100kb, Medium Logic or File size 1-2GB 0.2 Large 100-400 TPS, Payload size 100kb - 200kb, Medium to Complex Logic or File Size of 2–4GB 1 X-large 400 or above TPS, Payload size 200kb or more, Complex Logic or File size 4GB or above 2 Otros factores que pueden ser considerados: ● Sync vs async ● Real time vs batch ● Strict SLA requirements ● Payload size variations ● API-led Architecture ● High Availability
  • 21. All contents © MuleSoft, LLC Buenas prácticas de desarrollo
  • 22. 22 Reglas de organización del código • Crear global.xml con todos los global element (Elementos de configuración de componentes y conectores) • Crear error.xml con la definición y captura de todos los tipos de errores del proyecto Mule • Crear un [operación].xml con el flujo de cada una de las operaciones Rest • Crear un fichero commons.xml con todos los flujos comunes del proyecto. • Utilizar correctamente las properties de entorno ${env} • Crear DW reutilizables en ficheros dwl
  • 23. 23 Estructura de proyecto • src/main/mule: Esta carpeta contiene todos los ficheros de configuración con los flujos de las distintas operaciones que va a contener el API o global.xml: Este fichero contiene todo los Global element que vaya a contener el proyecto en los diferentes flujos de operaciones. o s-example.xml: Contiene el flujo principal con el ApiKit y los diferentes flujos de las operaciones. o common/common.xml: Contendrá todos los flujos que sean reutilizables o comunes en toda la API. o error/error.xml: Contendrá toda la gestión de errores "Error handling" de la API. o service/[nombreOperacion].xml: contendrá por cada operación definida en el RAML un fichero con el código de la operación. · src/main/resources: Esta carpeta contiene: o Log4j.xml: Fichero con la configuración de logs de la API o Api/ : aquí se encuentra el API Specification que hemos obtenido del Design Center con todos los datatypes, example y traits. o Local/properties.yaml: Este fichero contiene todas las propiedades que necesite nuestro código cuando estemos trabajando en local.
  • 24. 24 Cosas que no te cuentan No utilices Flow a diestro y siniestro • los Flow consumen más memoria que los Subflow • Los Flow crean eventos que son registrados al inicio y la Mule App tarda más en arrancar y ejecutarse • https://docs.mulesoft.com/mule-runtime/latest/about-flows Estudia un poco antes de implementar For-Each para todo • Debes tener en cuenta que el integrador es el peor sitio para procesar grandes cantidades de datos. • El uso de For-Each muchas veces se pueden evitar haciendo una consulta u obteniendo los datos de una vez. • Pregunta a alguien con más experiencia sobre esto Analiza bien las dependencias que te hacen falta • Cuando se sube una Mule App se sube con todas sus dependencias • Revisar si no tiene conectores de mas • Actualiza siempre que puedas • Solo el conector de SalesForce coge 40 MB
  • 25. 25 Cosas que no te cuentan Cuando trabajes con BD siempre activa el pool de conexiones • Java y por ende Mule, consume muchos recursos cada vez que tiene que conectarse con una BD • El pool de conexiones ayuda a mantener siempre abierto el canal de comunicaciones y hace que consuma mucha menos memoria Saber programar Java siempre ayuda • MuleSoft está basado en Java • Aunque tu mueves cajitas para programar el Flow, siempre es recomendable saber cómo funciona por dentro y poder entender mejor aquellos comportamientos que se salen de “lo normal” • No se debe olvidar que MuleSoft es una herramienta de integración, pero si quieres salirte del tiesto en Mule “Estudia Java y Spring ” El acceso al Object Store es limitado • El Object Store es la zona de memoria de almacenamiento temporal. • Se utiliza para muchas cosas, Token Oauth, Cache, etc • Por defecto tiene un límite de 10 TPS (Transferencias por segundo) por aplicación
  • 26. All contents © MuleSoft, LLC Redis como Custom Object Store
  • 27. 27 MuleSoft Object Store Object Store • Tipo de almacenamiento clave - valor • Potente herramienta de almacenamiento temporal Ej de utilización: • Almacenamiento del token de Oauth • Almacenamiento de las reglas de cache Limitaciones: • Básico: Permite por aplicación 10 accesos de escritura/lectura por segundo. Y 100 Millones de transacciones al mes. • Premium: Permite por aplicación 100 accesos de escritura/lectura por segundo.
  • 28. 28 Custom Object Store Redis • Tipo de almacenamiento clave - valor • Potente herramienta de almacenamiento temporal • MuleSoft permite sobrescribir la funcionalidad de Object Store al redis Ej de utilización: • Almacenamiento del token de Oauth • Almacenamiento de las reglas de cache Limitaciones: • NO TIENE Contras • El coste