Key topics covered:
- Introduction to microservices and decentralized architectures
- WSO2 MI overview and features
Designing microservice-friendly integrations
- Implementation with WSO2 MI
Scalability and performance considerations
- Monitoring and management
Agentic RAG What it is its types applications and implementation.pdf
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microservice-Oriented Landscape
1. WSO2 MI for Enterprise Integration in
a Decentralized,
Microservice Oriented Landscape
Isuru Udana
Director - Engineering
WSO2
Shazni Nazeer
Director - Solutions Architecture
WSO2
2. Agenda
2
● Introduction to Microservices and decentralized architectures
● WSO2 MI overview and features
● Designing microservice-friendly integrations
● Implementation with WSO2 Micro Integrator
4. Microservices Architecture
4
4
● “Microservices architecture is about building a software application as a
collection of independent, autonomous (developed, deployed and scaled
independently), business capability oriented and loosely coupled services.”
Source: Microservices for Enterprise
Source : https://www.jitterbit.com/blog/integrating-the-modern-hybrid-cloud-architecture/
7. SOA with API Management
7
7
Service 2
Service 1
Service 3
Service 4
Consumers
ESB
ESB
API
Management
8. Eliminating the Central ESB
ESB contains business logic + network
communication logic
With MSA, business logic + network
communication logic are dispersed across
independent services
8
Smart Endpoints and Dumb Pipes
Consumers
Virtual
Service 1
Virtual
Service 2
Virtual
Service 3
Service A Service B Service C Service D
Microservice P
ESB
Consumers
Microservice X Microservice Y Microservice Z
Microservice P Microservice Q Microservice R Microservice S
JAVA Node.js Python
10. ● Not all microservices are similar
● Some services are business logic heavy, while some contain a lot of interservice
calls
● Some services are too fine-grained to be exposed as a business functionality
● Some services are exposed as APIs
Microservices Types with Different Granularities
10
11. Microservices Types with Different Granularities
11
Consumer 1
API Service 1 API Service 2 API Service 3 API Service 4
Consumers
Consumer 2 Consumer 3
Service 6 Service 7 Service 8 Service 9
Service 1 Service 2 Service 3 Service 4 Service 5 Proprietary &
Legacy
Systems
Web API /
SaaS
API Services/
Edge Services
Composite Service/
Integration Services
Core Services/
Atomic Services
12. Integrating Microservices is hard!
12
Uber’s microservice architecture circa mid-2018 from Jaeger
● Inter-service communication is essential.
● The capabilities that ESB provided have to be implemented at each service
level.
● Integration complexity is not reduced but dispersed across services.
13. Abstractions for Inter-Service communication
13
● Supporting high-level abstractions for inter-service communication.
● Support for multiple protocols and standards.
⦿ HTTP, gRPC, GraphQL, Web Sockets, Web Hooks, SOAP
⦿ Kafka, AMQP, NATS
⦿ FTP, SFTP
⦿ TCP, Rsocket
● Integrating with SaaS, proprietary and legacy systems
⦿ e.g. Salesforce, SAP, Amazon S3, SQS
37. 37
Components
Mediation Engine
Transports
HTTP
FILE
JMS
.
. more
Deployment Framework
Observability/Analytics
Tools
Message
Processing
Units
Receivers
Senders
Integration
Control
Plane
Development
Tools
MI for
VSCode
Integration
Studio
Developers
Deployment
Tools/CICD
Systems and
Services
CLI
ELK Jaeger Zipkin
MI Runtime
45. 45
Mediators
Name Description
Log Mediator
Logs full or part of the message at various severity levels ( Trace, Debug,
etc.).
Sequence Mediator Invokes existing sequence. Sequence name can be static or dynamic.
Call Mediator Sends a message out using static information or an endpoint definition.
Respond Mediator Responds back to the client.
Switch Mediator
Evaluates message content against regular expressions and invokes the
corresponding mediator (switch-case-default).
Property Mediator Assigns a value to a property to be retrieved later
Drop Mediator Stops processing the current message.
Fault Mediator Transforms current message into a custom Fault message.