building a scalable multi-tenanted application server on the cloud using tomcat, axis2 & synapse...

44
Building a scalable multi- tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Upload: landen-smale

Post on 15-Dec-2015

219 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Building a scalable multi-tenanted Application Server on the Cloudusing Tomcat, Axis2 & Synapse

Senaka Fernando (senaka at apache.org)

Page 2: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

About the Presenter• Senaka Fernando

– Committer Apache Web Services– PMC Member Apache Incubator & Apache Axis– Member, Apache Software Foundation– Technical Lead & Member Integration Technologies Management Committee, WSO2– Twitter: @senaka

• ApacheCon NA 2011– Afkham Azeez– Selvaratnam Uthiayashankar

Page 3: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Agenda● Overall Architecture● Elastic Load Balancer● Application Server● Data & Storage● Metering & Billing

Page 4: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Overall Architecture

ELB AS1 AS2 AS3 ASn

Application Server Cluster

Clients

Page 5: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Elastic Load Balancer

Based on Apache Synapse & Apache Tribes

Page 6: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

High-level Architecture

Page 7: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Load Balancing

Page 8: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Practical Example

Page 9: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Configuration

Page 10: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Proxy Port to Real Port Mapping

Page 11: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Proxy Port to Real Port Mapping

Page 12: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Synapse Message Flow

Page 13: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Dynamic Load Membership

Page 14: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Application Server

Based on Apache Tomcat, Apache Tribes & Apache Axis2

Page 15: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Features● Webapp hosting

– Uses embedded Tomcat

● Services hosting– Axis2 AAR services– Data services– etc…

Page 16: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Tomcat

Page 17: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Tomcat● Stuck thread detection valve● Multi-tenant access log● Web app lazy loader valve● Tenant-aware management console● Tenant-aware web app contexts● Tenant-aware session manager

Page 18: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Request Interception

Acce

ss L

og V

alve

Lazy

Loa

der V

alve

Stuc

k Th

read

Det

ecto

r Va

lve

Clients Web App

Tena

nt I

dent

ifica

tion

&

Tena

nt C

ont

ext

Cre

atio

n

Page 19: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Management Console

Page 20: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Management Console

Page 21: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Tomcat Sample Web Application

Page 22: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Tenant-aware Session Manager

Page 23: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

User & Role Management

Page 24: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Integrated Identity (web.xml)

Automatically ties into Stratos Identity

Page 25: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

SaaS Mode

• One web app shared amongst selected tenants

• One web app shared amongst all tenants

Page 26: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Axis2

Page 27: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Axis2● Deployers

– Webapp Deployer– AAR Deployer– Data Service Deployer

● Isolated AxisConfiguration & ConfigurationContext per tenant

● Lazy loading● Ghost Deployer● Multitenant Message Receiver

Page 28: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Messaging

In

Out

In Fault

Out Fault

Message Receiver Service

ImplClie

nt

Messaging Engine

Tra

nspo

rts

Page 29: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Multi-tenant Message Receiver

Page 30: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Axis2 Configuration & Contexts

Page 31: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Tenants & Super Tenant

Super Tenant

Tenant: foo.com

Tenant: bar.com

Page 32: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Pluggable Deployers

Deployment Engine

Webapp

Data Services

POJO Services

JAXWSServices

Page 33: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Pluggable Deployers

Super Tenant

Tenant: foo.com

Tenant: bar.com

Page 34: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Deployment Synchronizer

Page 35: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Data & Storage

Page 36: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

WSO2 Cloud Data Solutions● WSO2 Data Server

– Carbonized Cassandra Cluster

– Database cluster

– Carbonized HDFS Cluster

● <Data> PaaS Offerings– Apache Cassandra as a Service

– Relational Database as a Service

– HDFS as a Service

● We are also planning Map/Reduce as a Service as Future work.

Page 37: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Polyglot Data Architecture

Page 38: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Database as a Service

● Users can log in to the Stratos data page and create a Database and receive a JDBC URL.

● A DB will be allocated from an Amazon RDS cluster– Tenant isolation & and integrated with WSO2 Security model.

Page 39: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Metering & Billing

Page 40: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Usage Metering/ThrottlingUsage Metering

• Registry Resource Volume

• Number of users

• App server Service Bandwidths/Request Response

• ESB Mediation Data(Bandwidths Data)

Throttling• Number of users

• Registry Resource Volume

• Number of Request and Response counts

• Service incoming and outgoing bandwidths

Page 41: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Stratos Billing● Scheduled invoice generation● Ability to view past invoices and the

current(interim) invoice● Securely pay the invoice via Paypal● Notifies customers via email on payments● Notifies the super-admin on customers

exceeding the credit limit● Presents a summary to the super-admin

Page 42: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)
Page 43: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Questions & Answers

Image: http://www.gembapantarei.com/2009/03/how_do_lean_processes_prevent_human_error.html

Page 44: Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)

Thank You!