SlideShare a Scribd company logo
1 of 51
A multi-tenant Architecture
            for
       Apache Axis2
A multi-tenant Architecture
                      for
                 Apache Axis2

        Afkham Azeez                  Senaka Fernando

azeez@{apache.org , wso2.com}   senaka@{apache.org, wso2.com}
          WSO2 Inc                        WSO2 Inc
About the Presenters
• Afkham Azeez
   –   PMC member Apache Axis, Committer Synapse & Web Services
   –   Member, Apache Software Foundation
   –   Co-author, Axis2 Web Services
   –   Director of Architecture, WSO2 Inc
   –   Blog: http://blog.afkham.org


• Senaka Fernando
   – PMC member Apache Axis & incubator, committer Web Services
   – Member, Apache Software Foundation
   – Product Manager & Associate Tech Lead, WSO2 Inc




                                  © WSO2 2011
Agenda
• Core Axis2 architectural concepts
• How Axis2 has been multi-tenanted
What is Axis2?
• Axis2 is a Web Services engine
• Successor to the widely used Apache Axis
  SOAP stack.
Message Handling
• To fully support the Web services stack
  (including WSRM, WSSec,
  WSSecureConversation, etc)
            – We need to support a pluggable message
              handling model




                                                       Implementation
Transport




                      handler




                                                           Service
                        SOAP message




Internals of Axis2
Composability




Advanced Web Services                   7
Composability

• The whole architecture of WS-* has been
  designed around this model
      – Use what you need
             • And no more
      – Don’t replicate technology in different standards
      – All the standards should work together




Advanced Web Services                                       8
Basic Composability



                                            WS-Security
                                                     WS-ReliableMessaging

                         WS-AtomicTransactions




         Transactional         Secure            Secure       Secure        Reliable
                            Transactional       Reliable      Reliable
                                              Transactional




Advanced Web Services                                                                  9
Composability

• SOAP Headers that work together
• Common usage of base components
      – SOAP
      – WS-Addressing
• The right building blocks, e.g.
      – Reliable pub/sub
             • WSRM + WS-Eventing
      – Secure Single Sign-on
             • WS-Trust + WS-Security

Advanced Web Services                       10
Composability example




Advanced Web Services       Core Axis: WS with Apache Axis2   11
                                     © WSO2 Inc. 2006
Composability

• The aim is to be able to plug in different
  capabilities independently
• For example:
       – Add reliable messaging support and security at
         the same time
• However, the combinations can be complex
       – Validate the signature
       – Store the message
       – Decrypt the body
       – Invoke the service

Internals of Axis2
Axis2 and composability

• Axis1 had a simple handler chain model
• The only way to compose different handlers
  was to manually add and get the order correct
• Axis2 has a more flexible model; that means
  adding a new capability is just a matter of
  plugging in a module



Internals of Axis2
Phases, Modules, Handlers

                     Transport           Pre-                         Post-
                                                    Dispatch       Dispatch
                            In       dispatch



                                       Phase rule


                                 handler1                      handler2




                            Module                                            Axis2

Internals of Axis2
Type of Phases
• Global phases
      – Handlers in these phases always run irrespective of
        the service
      – Transport, Security, PreDispatch and Dispatch are
        considered as global phases
      – These are defaults in the standard axis2.xml
• Service phases
      – Any phase that runs after Dispatch phase
      – Handlers in these phases are specific to the service

Internals of Axis2                                         15
Axis2 – Run Time

                           Message
                           Context




                                              Engine


 XML               Trans                                       Message
                                                                          Application
                                     Phase




                                             Phase




                                                       Phase
Message            port                                        Receiver
                                     X




                                             Y




                                                       Z




   Internals of Axis2                                                       16
Axis2 – Inside Message Context
MessageContext abstract class

                                                    <soap:Envelope>
                                        Execution
                                                      <soap:Body>
                                        Chain
                                                        <myNS:OrderSushi>
                      Handlers                           ...
                                                        </myNS:OrderSushi>
                                                      </soap:Body>
                                                    </soap:Envelope>
               “property1”       Boolean.TRUE
               “property2”       someObject

                        Property Bag                     Message


   • Pointers to OperationContext, ServiceContext, ConfigurationContext

 Internals of Axis2                                                     17
Stages of Message Processing
• Three important stages
       – Transport Receiver
               • Transport related processing
       – Dispatching
               • Finding service and operation
       – Message Receiver
               • Last handler of the chain




Internals of Axis2
Dispatching

• Two aspects of dispatching
       – Finding the corresponding descriptions
       – Finding the corresponding contexts
• Default dispatchers
       – AddressingBasedDispatcher
       – RequestURIBasedDispatcher
       – SOAPActionBasedDispatcher
       – SOAPMessageBodyBasedDispatcher

Internals of Axis2
Message Receiver
• The last handler of the execution chain
• Message Exchange Pattern (MEP) dependent
• Does the actual business logic invocation
• Ability to write custom Message Receivers
• Some default Message Receivers
               RawXMLINOnlyMessageReceiver
               RawXMLINOutMessageReceiver
               RPC*MessageReceiver




Internals of Axis2                            20
MessageReceiver




Internals of Axis2
Multi-tenant Message Receiver
Tenant-specific Flow
Description & Context Hierarchy
• Descriptions keep static information
      – Information extracted from deployment descriptors
              • An example is the class that a specific MessageReceiver
                will call
• Contexts keep runtime information
      – This information needs to be managed for various
        scopes
              • For example session specific data
• Essential to keep them separate! :)

Internals of Axis2                                                    25
Context Hierarchy
• ConfigurationContext:
      – Is the runtime representation of the whole system.
      – To start Axis2 system you need to have configuration context.
• ServiceGroupContext:
      – To keep states of a service group throughout the session
      – A service group is simply a collection of related services
• ServiceContext:
      – Will represent the run time of one service
      – The context lifetime will be the lifetime of the session.
• OperationContext:
      – This context is to represent the lifetime of an MEP (Message Exchange
        Patterns)
• MessageContext:
      – Represents the lifetime of an incoming or outgoing message


Internals of Axis2                                                              26
Context Hierarchy Cont…




Internals of Axis2                             27
Tenants & Super Tenant
                Tenant: foo.com




Super Tenant




                  Tenant: bar.com
Class Loading
• Service isolation
      – Each service (in each tenant) gets its own class
        loader
      – For example two services can use two different
        versions of same third party library
• Module isolation
      – Each module gets its own class loader
      – Modules can also be versioned
              • Different services can engage different versions of the
                same module

Internals of Axis2                                                        29
Axis2 Repository

axis2.repo


         services

                       foo.aar

                       bar.aar

             modules


                       abc.mar

                       xyz.mar
How Class Loading Hierarchy is Built




Internals of Axis2
Tenant Axis2 Repo
                  Tenant: foo.com




Super Tenant




                  Tenant: bar.com
Tenant Axis2 Repo Management
Tenant-specific Services
Pluggable Deployers

                        Deployment Engine




                                                POJO
Webapp
                                               Services

              Data                   JAXWS
             Services               Services
Pluggable Deployers
                           Tenant: foo.com



Super Tenant




                           Tenant: bar.com
Securing Services
Lazy Loading

• Tenant AxisConfiguration &
  ConfigurationContext are created only when
  required
• If a tenant is inactive for sometime, these will be
  unloaded & GCd
• Instances when lazy loading happens
  – First request received
  – Tenant management console is loaded
  – A scheduled tenant task is executed
Ghost Artifact Deployer
Ghost Artifact Deployer
Ghost Deployer - Performance
Initial Response Time (ms)

                                Without GD

                                With GD




                              Number of artifacts
Deployment Synchronizer
Tenant-aware Security Manager
• Main security manager delegates security
  verifications to tenant level security managers
• Super tenant can enforce different security
  policies on tenants
• Security policies are tied to the multi-tenancy
  package assigned to the tenant
Distributed Logging
• Every service and custom applications logs are
  captured by the log4j/commons loggings
  settings
• Logs are partitioned & stored by tenant
• Logs are sent to the Manager service via
  syslog
• Logs are then viewable / downloadable by
  tenant admins
MT-Logging Deployment Architecture
AppServer Logs
Polyglot Data Architecture
Metering, Throttling & Billing
• Some of the key cloud-native attributes
• In a multi-tenanted setup, you should be able
  to meter all important aspects
  • e.g. service request count, request/response sizes
    etc
• You may decide to throttle certain aspects
• You may decide to bill for certain aspects
  • e.g. bandwidth/CPU time usage
Recap
• Axis2 concepts
  – Messaging, deployment, configurations & contexts
• How Axis2 has been multi-tenanted
  – MultitenantMessageReceiver, lazy loading, ghost
    artifact deployer, data, logging,
    metering/throttling/billing
QUESTIONS?
Thank You!

More Related Content

What's hot

Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)Shawn Ismail
 
Kafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityKafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityJean-Paul Azar
 
Adjust Carbon Topology to Match High Availability Scenario Requirements
Adjust Carbon Topology to Match High Availability Scenario Requirements   Adjust Carbon Topology to Match High Availability Scenario Requirements
Adjust Carbon Topology to Match High Availability Scenario Requirements WSO2
 
Kafka Tutorial: Streaming Data Architecture
Kafka Tutorial: Streaming Data ArchitectureKafka Tutorial: Streaming Data Architecture
Kafka Tutorial: Streaming Data ArchitectureJean-Paul Azar
 
Stratos and PaaS for London Java Community
Stratos and PaaS for London Java CommunityStratos and PaaS for London Java Community
Stratos and PaaS for London Java CommunityPaul Fremantle
 
Azure Networking: Innovative Features and Multi-VNet Topologies
Azure Networking: Innovative Features and Multi-VNet TopologiesAzure Networking: Innovative Features and Multi-VNet Topologies
Azure Networking: Innovative Features and Multi-VNet TopologiesMarius Zaharia
 
Build 2017 - P4045 - Azure VNet for Containers
Build 2017 - P4045 - Azure VNet for ContainersBuild 2017 - P4045 - Azure VNet for Containers
Build 2017 - P4045 - Azure VNet for ContainersWindows Developer
 
Microsoft Azure Networking Basics
Microsoft Azure Networking BasicsMicrosoft Azure Networking Basics
Microsoft Azure Networking BasicsSai Kishore Naidu
 
Storing and processing data with the wso2 platform
Storing and processing data with the wso2 platformStoring and processing data with the wso2 platform
Storing and processing data with the wso2 platformWSO2
 
Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Designveloper
 
Scalability in cloud applications
Scalability in cloud applicationsScalability in cloud applications
Scalability in cloud applicationsRadu Vunvulea
 
Implementing CloudStack's VPC feature
Implementing CloudStack's VPC featureImplementing CloudStack's VPC feature
Implementing CloudStack's VPC featureMarcus L Sorensen
 
Security Patterns with WSO2 ESB
Security Patterns with WSO2 ESBSecurity Patterns with WSO2 ESB
Security Patterns with WSO2 ESBWSO2
 
MariaDB Prez by Joffrey Michaie
MariaDB Prez by Joffrey MichaieMariaDB Prez by Joffrey Michaie
MariaDB Prez by Joffrey Michaieishwon
 
Restful web services rule financial
Restful web services   rule financialRestful web services   rule financial
Restful web services rule financialRule_Financial
 
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...Jean-Paul Azar
 
autodiscoverable microservices with vertx3
autodiscoverable microservices with vertx3autodiscoverable microservices with vertx3
autodiscoverable microservices with vertx3Andy Moncsek
 

What's hot (20)

Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)
 
Kafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityKafka Tutorial: Kafka Security
Kafka Tutorial: Kafka Security
 
Adjust Carbon Topology to Match High Availability Scenario Requirements
Adjust Carbon Topology to Match High Availability Scenario Requirements   Adjust Carbon Topology to Match High Availability Scenario Requirements
Adjust Carbon Topology to Match High Availability Scenario Requirements
 
Kafka Tutorial: Streaming Data Architecture
Kafka Tutorial: Streaming Data ArchitectureKafka Tutorial: Streaming Data Architecture
Kafka Tutorial: Streaming Data Architecture
 
Stratos and PaaS for London Java Community
Stratos and PaaS for London Java CommunityStratos and PaaS for London Java Community
Stratos and PaaS for London Java Community
 
On being RESTful
On being RESTfulOn being RESTful
On being RESTful
 
Azure Networking: Innovative Features and Multi-VNet Topologies
Azure Networking: Innovative Features and Multi-VNet TopologiesAzure Networking: Innovative Features and Multi-VNet Topologies
Azure Networking: Innovative Features and Multi-VNet Topologies
 
Build 2017 - P4045 - Azure VNet for Containers
Build 2017 - P4045 - Azure VNet for ContainersBuild 2017 - P4045 - Azure VNet for Containers
Build 2017 - P4045 - Azure VNet for Containers
 
Microsoft Azure Networking Basics
Microsoft Azure Networking BasicsMicrosoft Azure Networking Basics
Microsoft Azure Networking Basics
 
Storing and processing data with the wso2 platform
Storing and processing data with the wso2 platformStoring and processing data with the wso2 platform
Storing and processing data with the wso2 platform
 
Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)
 
Security Overview
Security Overview Security Overview
Security Overview
 
Scalability in cloud applications
Scalability in cloud applicationsScalability in cloud applications
Scalability in cloud applications
 
Implementing CloudStack's VPC feature
Implementing CloudStack's VPC featureImplementing CloudStack's VPC feature
Implementing CloudStack's VPC feature
 
Security Patterns with WSO2 ESB
Security Patterns with WSO2 ESBSecurity Patterns with WSO2 ESB
Security Patterns with WSO2 ESB
 
MariaDB Prez by Joffrey Michaie
MariaDB Prez by Joffrey MichaieMariaDB Prez by Joffrey Michaie
MariaDB Prez by Joffrey Michaie
 
Restful web services rule financial
Restful web services   rule financialRestful web services   rule financial
Restful web services rule financial
 
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
 
MOINC Server
MOINC ServerMOINC Server
MOINC Server
 
autodiscoverable microservices with vertx3
autodiscoverable microservices with vertx3autodiscoverable microservices with vertx3
autodiscoverable microservices with vertx3
 

Similar to A multi-tenant architecture for Apache Axis2

Building a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServerBuilding a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServerAfkham Azeez
 
1 Introduction at CloudStack Developer Day
1 Introduction at CloudStack Developer Day 1 Introduction at CloudStack Developer Day
1 Introduction at CloudStack Developer Day Kimihiko Kitase
 
Architectures with Windows Azure
Architectures with Windows AzureArchitectures with Windows Azure
Architectures with Windows AzureDamir Dobric
 
Leveraging Open Source Integration with WSO2 Enterprise Service Bus
Leveraging Open Source Integration with WSO2 Enterprise Service BusLeveraging Open Source Integration with WSO2 Enterprise Service Bus
Leveraging Open Source Integration with WSO2 Enterprise Service BusWSO2
 
Axis2 architecture and implementation
Axis2 architecture and implementationAxis2 architecture and implementation
Axis2 architecture and implementationSreeni I
 
OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11
OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11
OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11OpenSAF Foundation
 
A Workhorse Named Mule
A Workhorse Named MuleA Workhorse Named Mule
A Workhorse Named MuleDavid Dossot
 
An Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQAn Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQRavi Yogesh
 
Introduction to WSO2 Integration Platform
Introduction to WSO2 Integration PlatformIntroduction to WSO2 Integration Platform
Introduction to WSO2 Integration PlatformKasun Indrasiri
 
How the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendorsHow the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendorsWSO2
 
Webbinar slides
Webbinar slidesWebbinar slides
Webbinar slidesWSO2
 
ESB and SOA
ESB and SOAESB and SOA
ESB and SOAWSO2
 
Openstack Basic with Neutron
Openstack Basic with NeutronOpenstack Basic with Neutron
Openstack Basic with NeutronKwonSun Bae
 

Similar to A multi-tenant architecture for Apache Axis2 (20)

Building a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServerBuilding a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServer
 
1 Introduction at CloudStack Developer Day
1 Introduction at CloudStack Developer Day 1 Introduction at CloudStack Developer Day
1 Introduction at CloudStack Developer Day
 
Architectures with Windows Azure
Architectures with Windows AzureArchitectures with Windows Azure
Architectures with Windows Azure
 
Leveraging Open Source Integration with WSO2 Enterprise Service Bus
Leveraging Open Source Integration with WSO2 Enterprise Service BusLeveraging Open Source Integration with WSO2 Enterprise Service Bus
Leveraging Open Source Integration with WSO2 Enterprise Service Bus
 
CloudStack technical overview
CloudStack technical overviewCloudStack technical overview
CloudStack technical overview
 
Axis2 architecture and implementation
Axis2 architecture and implementationAxis2 architecture and implementation
Axis2 architecture and implementation
 
OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11
OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11
OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11
 
A Workhorse Named Mule
A Workhorse Named MuleA Workhorse Named Mule
A Workhorse Named Mule
 
An Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQAn Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQ
 
Introduction to WSO2 Integration Platform
Introduction to WSO2 Integration PlatformIntroduction to WSO2 Integration Platform
Introduction to WSO2 Integration Platform
 
Building Scalable and Robust Solutions with Service Bus in Cloud and Server
Building Scalable and Robust Solutions with Service Bus in Cloud and ServerBuilding Scalable and Robust Solutions with Service Bus in Cloud and Server
Building Scalable and Robust Solutions with Service Bus in Cloud and Server
 
Wso2 esb
Wso2 esbWso2 esb
Wso2 esb
 
Wso2 esb
Wso2 esbWso2 esb
Wso2 esb
 
Layer 7 and Oracle -
Layer 7 and Oracle - Layer 7 and Oracle -
Layer 7 and Oracle -
 
Axis2
Axis2Axis2
Axis2
 
How the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendorsHow the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendors
 
Webbinar slides
Webbinar slidesWebbinar slides
Webbinar slides
 
Stonehenge
StonehengeStonehenge
Stonehenge
 
ESB and SOA
ESB and SOAESB and SOA
ESB and SOA
 
Openstack Basic with Neutron
Openstack Basic with NeutronOpenstack Basic with Neutron
Openstack Basic with Neutron
 

More from Afkham Azeez

Microservices Resiliency with BallerinaLang
Microservices Resiliency with BallerinaLangMicroservices Resiliency with BallerinaLang
Microservices Resiliency with BallerinaLangAfkham Azeez
 
WSO2Con USA Microservices Transactions
WSO2Con USA  Microservices TransactionsWSO2Con USA  Microservices Transactions
WSO2Con USA Microservices TransactionsAfkham Azeez
 
Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0
Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0
Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0Afkham Azeez
 
Microservices with MSF4J - WSO2 Meetup
Microservices with MSF4J - WSO2 MeetupMicroservices with MSF4J - WSO2 Meetup
Microservices with MSF4J - WSO2 MeetupAfkham Azeez
 
Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...
Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...
Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...Afkham Azeez
 
WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)
WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)
WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)Afkham Azeez
 
WSO2Con 2015-us-introduction-to-mss-v2
WSO2Con 2015-us-introduction-to-mss-v2WSO2Con 2015-us-introduction-to-mss-v2
WSO2Con 2015-us-introduction-to-mss-v2Afkham Azeez
 
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaSAfkham Azeez
 
Java Colombo: Developing Highly Scalable Apps
Java Colombo: Developing Highly Scalable AppsJava Colombo: Developing Highly Scalable Apps
Java Colombo: Developing Highly Scalable AppsAfkham Azeez
 
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration CloudWSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration CloudAfkham Azeez
 
Unleashing creativity through Arduino
Unleashing creativity through ArduinoUnleashing creativity through Arduino
Unleashing creativity through ArduinoAfkham Azeez
 
Wso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-clusterWso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-clusterAfkham Azeez
 
Adjusting carbon topology to match high availability scenario requirements
Adjusting carbon topology to match high availability scenario requirements   Adjusting carbon topology to match high availability scenario requirements
Adjusting carbon topology to match high availability scenario requirements Afkham Azeez
 
WSO2con 2011: Introduction to Stratos
WSO2con 2011:  Introduction to StratosWSO2con 2011:  Introduction to Stratos
WSO2con 2011: Introduction to StratosAfkham Azeez
 
WSO2Con 2011: Introduction to Stratos
WSO2Con 2011: Introduction to StratosWSO2Con 2011: Introduction to Stratos
WSO2Con 2011: Introduction to StratosAfkham Azeez
 
WSO2Con 2011: Introduction to the WSO2 Carbon Platform
WSO2Con 2011: Introduction to the WSO2 Carbon PlatformWSO2Con 2011: Introduction to the WSO2 Carbon Platform
WSO2Con 2011: Introduction to the WSO2 Carbon PlatformAfkham Azeez
 
WSO2 Stratos 2010 September Workshop
WSO2 Stratos 2010 September WorkshopWSO2 Stratos 2010 September Workshop
WSO2 Stratos 2010 September WorkshopAfkham Azeez
 

More from Afkham Azeez (20)

SRE & Kubernetes
SRE & KubernetesSRE & Kubernetes
SRE & Kubernetes
 
Microservices Resiliency with BallerinaLang
Microservices Resiliency with BallerinaLangMicroservices Resiliency with BallerinaLang
Microservices Resiliency with BallerinaLang
 
WSO2Con USA Microservices Transactions
WSO2Con USA  Microservices TransactionsWSO2Con USA  Microservices Transactions
WSO2Con USA Microservices Transactions
 
Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0
Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0
Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0
 
Microservices with MSF4J - WSO2 Meetup
Microservices with MSF4J - WSO2 MeetupMicroservices with MSF4J - WSO2 Meetup
Microservices with MSF4J - WSO2 Meetup
 
Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...
Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...
Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...
 
WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)
WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)
WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)
 
WSO2Con 2015-us-introduction-to-mss-v2
WSO2Con 2015-us-introduction-to-mss-v2WSO2Con 2015-us-introduction-to-mss-v2
WSO2Con 2015-us-introduction-to-mss-v2
 
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
 
Java Colombo: Developing Highly Scalable Apps
Java Colombo: Developing Highly Scalable AppsJava Colombo: Developing Highly Scalable Apps
Java Colombo: Developing Highly Scalable Apps
 
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration CloudWSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
 
Unleashing creativity through Arduino
Unleashing creativity through ArduinoUnleashing creativity through Arduino
Unleashing creativity through Arduino
 
Wso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-clusterWso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-cluster
 
Adjusting carbon topology to match high availability scenario requirements
Adjusting carbon topology to match high availability scenario requirements   Adjusting carbon topology to match high availability scenario requirements
Adjusting carbon topology to match high availability scenario requirements
 
Colombo
ColomboColombo
Colombo
 
Intelli J IDEA
Intelli J IDEAIntelli J IDEA
Intelli J IDEA
 
WSO2con 2011: Introduction to Stratos
WSO2con 2011:  Introduction to StratosWSO2con 2011:  Introduction to Stratos
WSO2con 2011: Introduction to Stratos
 
WSO2Con 2011: Introduction to Stratos
WSO2Con 2011: Introduction to StratosWSO2Con 2011: Introduction to Stratos
WSO2Con 2011: Introduction to Stratos
 
WSO2Con 2011: Introduction to the WSO2 Carbon Platform
WSO2Con 2011: Introduction to the WSO2 Carbon PlatformWSO2Con 2011: Introduction to the WSO2 Carbon Platform
WSO2Con 2011: Introduction to the WSO2 Carbon Platform
 
WSO2 Stratos 2010 September Workshop
WSO2 Stratos 2010 September WorkshopWSO2 Stratos 2010 September Workshop
WSO2 Stratos 2010 September Workshop
 

Recently uploaded

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Recently uploaded (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

A multi-tenant architecture for Apache Axis2

  • 1. A multi-tenant Architecture for Apache Axis2
  • 2. A multi-tenant Architecture for Apache Axis2 Afkham Azeez Senaka Fernando azeez@{apache.org , wso2.com} senaka@{apache.org, wso2.com} WSO2 Inc WSO2 Inc
  • 3. About the Presenters • Afkham Azeez – PMC member Apache Axis, Committer Synapse & Web Services – Member, Apache Software Foundation – Co-author, Axis2 Web Services – Director of Architecture, WSO2 Inc – Blog: http://blog.afkham.org • Senaka Fernando – PMC member Apache Axis & incubator, committer Web Services – Member, Apache Software Foundation – Product Manager & Associate Tech Lead, WSO2 Inc © WSO2 2011
  • 4. Agenda • Core Axis2 architectural concepts • How Axis2 has been multi-tenanted
  • 5. What is Axis2? • Axis2 is a Web Services engine • Successor to the widely used Apache Axis SOAP stack.
  • 6. Message Handling • To fully support the Web services stack (including WSRM, WSSec, WSSecureConversation, etc) – We need to support a pluggable message handling model Implementation Transport handler Service SOAP message Internals of Axis2
  • 8. Composability • The whole architecture of WS-* has been designed around this model – Use what you need • And no more – Don’t replicate technology in different standards – All the standards should work together Advanced Web Services 8
  • 9. Basic Composability WS-Security WS-ReliableMessaging WS-AtomicTransactions Transactional Secure Secure Secure Reliable Transactional Reliable Reliable Transactional Advanced Web Services 9
  • 10. Composability • SOAP Headers that work together • Common usage of base components – SOAP – WS-Addressing • The right building blocks, e.g. – Reliable pub/sub • WSRM + WS-Eventing – Secure Single Sign-on • WS-Trust + WS-Security Advanced Web Services 10
  • 11. Composability example Advanced Web Services Core Axis: WS with Apache Axis2 11 © WSO2 Inc. 2006
  • 12. Composability • The aim is to be able to plug in different capabilities independently • For example: – Add reliable messaging support and security at the same time • However, the combinations can be complex – Validate the signature – Store the message – Decrypt the body – Invoke the service Internals of Axis2
  • 13. Axis2 and composability • Axis1 had a simple handler chain model • The only way to compose different handlers was to manually add and get the order correct • Axis2 has a more flexible model; that means adding a new capability is just a matter of plugging in a module Internals of Axis2
  • 14. Phases, Modules, Handlers Transport Pre- Post- Dispatch Dispatch In dispatch Phase rule handler1 handler2 Module Axis2 Internals of Axis2
  • 15. Type of Phases • Global phases – Handlers in these phases always run irrespective of the service – Transport, Security, PreDispatch and Dispatch are considered as global phases – These are defaults in the standard axis2.xml • Service phases – Any phase that runs after Dispatch phase – Handlers in these phases are specific to the service Internals of Axis2 15
  • 16. Axis2 – Run Time Message Context Engine XML Trans Message Application Phase Phase Phase Message port Receiver X Y Z Internals of Axis2 16
  • 17. Axis2 – Inside Message Context MessageContext abstract class <soap:Envelope> Execution <soap:Body> Chain <myNS:OrderSushi> Handlers ... </myNS:OrderSushi> </soap:Body> </soap:Envelope> “property1” Boolean.TRUE “property2” someObject Property Bag Message • Pointers to OperationContext, ServiceContext, ConfigurationContext Internals of Axis2 17
  • 18. Stages of Message Processing • Three important stages – Transport Receiver • Transport related processing – Dispatching • Finding service and operation – Message Receiver • Last handler of the chain Internals of Axis2
  • 19. Dispatching • Two aspects of dispatching – Finding the corresponding descriptions – Finding the corresponding contexts • Default dispatchers – AddressingBasedDispatcher – RequestURIBasedDispatcher – SOAPActionBasedDispatcher – SOAPMessageBodyBasedDispatcher Internals of Axis2
  • 20. Message Receiver • The last handler of the execution chain • Message Exchange Pattern (MEP) dependent • Does the actual business logic invocation • Ability to write custom Message Receivers • Some default Message Receivers  RawXMLINOnlyMessageReceiver  RawXMLINOutMessageReceiver  RPC*MessageReceiver Internals of Axis2 20
  • 24.
  • 25. Description & Context Hierarchy • Descriptions keep static information – Information extracted from deployment descriptors • An example is the class that a specific MessageReceiver will call • Contexts keep runtime information – This information needs to be managed for various scopes • For example session specific data • Essential to keep them separate! :) Internals of Axis2 25
  • 26. Context Hierarchy • ConfigurationContext: – Is the runtime representation of the whole system. – To start Axis2 system you need to have configuration context. • ServiceGroupContext: – To keep states of a service group throughout the session – A service group is simply a collection of related services • ServiceContext: – Will represent the run time of one service – The context lifetime will be the lifetime of the session. • OperationContext: – This context is to represent the lifetime of an MEP (Message Exchange Patterns) • MessageContext: – Represents the lifetime of an incoming or outgoing message Internals of Axis2 26
  • 28. Tenants & Super Tenant Tenant: foo.com Super Tenant Tenant: bar.com
  • 29. Class Loading • Service isolation – Each service (in each tenant) gets its own class loader – For example two services can use two different versions of same third party library • Module isolation – Each module gets its own class loader – Modules can also be versioned • Different services can engage different versions of the same module Internals of Axis2 29
  • 30. Axis2 Repository axis2.repo services foo.aar bar.aar modules abc.mar xyz.mar
  • 31. How Class Loading Hierarchy is Built Internals of Axis2
  • 32. Tenant Axis2 Repo Tenant: foo.com Super Tenant Tenant: bar.com
  • 33. Tenant Axis2 Repo Management
  • 35. Pluggable Deployers Deployment Engine POJO Webapp Services Data JAXWS Services Services
  • 36. Pluggable Deployers Tenant: foo.com Super Tenant Tenant: bar.com
  • 38. Lazy Loading • Tenant AxisConfiguration & ConfigurationContext are created only when required • If a tenant is inactive for sometime, these will be unloaded & GCd • Instances when lazy loading happens – First request received – Tenant management console is loaded – A scheduled tenant task is executed
  • 41. Ghost Deployer - Performance Initial Response Time (ms) Without GD With GD Number of artifacts
  • 43. Tenant-aware Security Manager • Main security manager delegates security verifications to tenant level security managers • Super tenant can enforce different security policies on tenants • Security policies are tied to the multi-tenancy package assigned to the tenant
  • 44. Distributed Logging • Every service and custom applications logs are captured by the log4j/commons loggings settings • Logs are partitioned & stored by tenant • Logs are sent to the Manager service via syslog • Logs are then viewable / downloadable by tenant admins
  • 48. Metering, Throttling & Billing • Some of the key cloud-native attributes • In a multi-tenanted setup, you should be able to meter all important aspects • e.g. service request count, request/response sizes etc • You may decide to throttle certain aspects • You may decide to bill for certain aspects • e.g. bandwidth/CPU time usage
  • 49. Recap • Axis2 concepts – Messaging, deployment, configurations & contexts • How Axis2 has been multi-tenanted – MultitenantMessageReceiver, lazy loading, ghost artifact deployer, data, logging, metering/throttling/billing