Architect, WSO2 Cloud-Native API Management Nuwan Dias
API Core
Product REST API Layer
Business Logic Layer
Persistence Layer
Message Broker
Hosts APIs that expose functionality of the API Publisher, Store, Admin and Analytics Apps
Lightweight Message Broker to notify updates to Gateways
API Gateway
Security (OAuth2.0, APIKey, etc.)
Rate Limiting
Additional Policies (e.g.Threat Protection)
Analytics
Message Mediation and Routing
Scaling the API GatewayAPI Deployment - Pull vs Push Model
API Manager Core
Gateway 1
Gateway 2
Product UI
Other Clients
create_api
Notifications Sent to Gateways
Request API artifact and Deploy
1
2
3
3
Partitioning Gateways using LabelsHybrid Deployments
API Manager Core
Gateway 1[labels = us-east]
Gateway 2[labels =
sydney, eu]
Product UI
Other Clients
create_api (label=us-east)
get_apis(labels=sydney, eu)
get_apis(labels=us-east)
create_api (label=sydney)
• Offline execution capability• Bootstrapped with necessary APIs and Keys for
allowing low-latency, secure access to Micro Services
• Has edge proxy/integration capabilities• Immutability• Low memory, CPU and I/O
The Micro Gateway Architecture
API Developer - Discoverability of Endpoints
API Gateway - Runtime Service Discovery
Service Discovery
K8S/OpenShift cluster
Service 1
Service 2
Service 3
Service 4
API Publisher
API Gateway
• An API Publisher has the ability to spawn a Gateway container per API from the Publisher Itself
• Facilitate Edge Integrations with no impact to other APIs
Private Jet!A Container per API
API Manager Core
GW 1GW 2
GW 3
GW 4
K8S/OpenShift cluster
UI Architecture
WebAppWeb Browser API Core OAuth
Server
login (un, pw)get_token (un, pw, ci, cs)
response (token)set_cookies(token)
api_request (token)validate_token(token)
response (data)
render_html(data)
Multi Tenancy: Isolated
Runtime
Data
Tenant 1 Tenant 2 Tenant n
Runtime
Data
Tenant 1 Tenant 2 Tenant n
Deployment Automation
CLI
Publisher(Production)
Push
API Package
Publisher(Staging)
API Package
CLI
Pull
user$ wso2api pull Foo:v1 staging user$ wso2api push Foo:v1 production
APIM_DB
APIM_DBRead Write
• Documentation - https://docs.wso2.com/display/AM300/WSO2+API+Manager+Documentation
• Carbon Repo - https://github.com/wso2/carbon-apimgt/ • Product Repo - https://github.com/wso2/product-apim/
Reference Links and How to Contribute