Friday, September 2, 2011

Business Process hosting in Cloud

In this post I’m going to discuss about some concerns of hosting business processes in cloud. First we’ll discuss around the concept of multi-tenancy and a multi-tenancy architecture for business process executions. Then we’ll move on to our main topic of hosting business processes in cloud and the concerns wrapped around it.
WSO2 Stratos BPS is a WS-BPEL compliant business process run-time PaaSwhose architecture supports multi-tenancy in the cloud. So the users can host the enterprise level WS-BPEL business processes in WSO2 Stratos BPS and manage them. So we’ll refer it to elaborate more on some of the following sections.

Table of Content

  • Introduction
  • Terminology
  • Multi-tenancy
    • What’s multi-tenancy?
    • Virtualization
    • Goals?
    • Importance
    • What’s in it for business processes?
  • Hosting business processes in cloud
    • Advantages
    • Concerns
      • QoS
        • Throttling
        • Security
    • Billing, Metering, Logging and Business intelligence for Business Processes
      • Billing and Metering
      • Logging
    • Tooling support
  • References

Hereafter I will refer the following words with mentioned meanings
  • Vendor - Cloud infrastructure/platform provider
  • Client - The one who request resources from Vendor and deploy the services
  • User - Consumers of the service hosted by Client

    What’s multi-tenancy?
    Multi-tenancy is a virtualization technique which enables a single instance of a particular software to serve for many organizations or users(let’s call them tenants now onwards) without allocating instances for each of those tenants. Still the tenants see as they have their own set of allocated resources.
    One general example is Google Email(GMail) service which is consumed by various users and they have their own email box, contact list etc.

    In a more technical perspective, multi-tenancy is a popular virtualization mechanism in cloud computing environments.
    Let’s talk about what’s meant by “virtualization” first.

    Virtualization is a key aspect in a cloud computing environment. When it comes to IaaS, PaaS, and SaaS the virtualization have different facets.

    In an IaaS we can see it as the virtualization of underlying hardware. So the users can demand for certain amount of hardware resources from an IaaS vendor. And IaaS vendor provides and maintain the resources like physical memory, data-base, processing-power as a Service based based on that demand.
    eg - Amazon EC2 instances

    In a PaaS, a particular software platform is virtualized. So the users can deploy and run their applications without interfering each other on the running platform which is provided by the PaaS vendor.
    eg - WSO2 Stratos

    In a SaaS, a particular application is virtualized among its users.
    eg - Salesforce, GMail

    Few common goals of the multi-tenancy in cloud are as follows
    • Sharing - multi-tenancy brings sharing a common set of resources among many tenants, so maintaining separate allocated resources for each tenants is mitigated.
    • Isolation - This means, the tenants are not interfered by the activities of other tenants. This can have several facets like data isolation, performance isolation etc. [1]
    • Scaling - multi-tenancy enables to scale the resources by running multiple instances of it. Here the load balancing and auto scaling also come into the picture.

      Multi-tenancy means a much fine grained resource sharing mechanism compared to virtual machines which is another popular virtualization mechanism in the cloud space.
      If we used virtual machines(VM) to virtualize a server, then per each tenant, we need to create a new VM and there’s a fixed allocation of resources for the VM.
      eg - Assume each tenant require X amount of units. So each VM require X units of pre-allocated resources. So, to maintain 100 tenants, a server with at-least 100X units of resources is required.
      But in a real cloud computing environment, all the tenants don’t consume all the allocated resource to them.
      So in a multi-tenant environment, the same set of tenants can be deployed with in a server with 100X units of resources assuming that all the tenants don’t consume its whole allocated resources at a time.
      Another great advantage in multi-tenancy over VMs in PaaS and SaaS, is it incurs less maintenance and operational overhead as the platform or the application is hosted in one place. When it comes to real production setups this is not the case anyway. But even in such an environment multi-tenant PaaS and SaaS has the mentioned advantages to some extent.

      What’s in it for business processes?
      So we discussed about multi-tenancy and some of its pros. Now we are going to discuss about its relevance to Business Processes running on a Cloud. Here the cloud means the PaaS where the business processes are deployed.
      Multi-tenancy for business processes enables to host them in a cloud with taking sharing, isolation and scaling into consideration.
      So use-case of multi-tenanted business processes is they can be used to improve resource sharing among multiple departments in private clouds.
      Another use-case would be sharing business processes across multiple tenants with the proper granularity of isolation and scaling.
      WSO2 Stratos BPS is a WS-BPEL compliant business process run-time PaaS whose architecture supports multi-tenancy in the cloud. So the users can host the enterprise level WS-BPEL business processes in WSO2 Stratos BPS tenants and manage them.
      Refer for more on “WSO2 BPS Multi-tenancy Architecture” [2].

      Figure: Multi-tenancy Architecture diagram for WSO2 BPS

      Hosting business processes in Cloud 
      In previous section, we talked about multi-tenancy. One advantage of multi-tenancy is it enables hosting business processes in cloud with taking isolation, sharing and scaling into consideration.

      Some advantages of hosting business processes in cloud are
      • Enables users to deploy the business processes which run on traditional business process run-time environments like WSO2 BPS. So the users can deploy the existing business processes, manage and monitor them securely in the cloud in the same way.
      • Scalability - On demand scaling business processes within set of nodes such that it can maintain the run-time of state-full business processes
      • Tenants can ignore the burden of maintaining a business process run-time infrastructure. They can host their processes in cloud and only focus on maintaining the business-process logic.
      • Cost effective way to deploy business processes with the means of pay-per-use.

        Concerns when choosing the correct PaaS solution?
        So we talked about the plus side of hosting business processes in cloud. But on the other hand, before moving to a cloud based solution, it’s essential to consider
        • how critical the business processes to the organization is
        • whether the security provided by the cloud platform is enough
        • what’s the expected usage pattern and scalability requirement for the process
        • whether the cloud vendor provides other functionalities to monitor, manage the deployed business processes
        • And the other services like billing, metering, logging etc.
        At the end the most feasible solution would be to host the business process in a private cloud environment rather move them to public cloud.

        In the next section we are going to dig deep in-to some of those considerations. So will discuss about the aspects like throttling, security, billing, metering, logging and tooling etc. All of the considerations discussed in next sections apply to any general PaaS evaluation.

        When it comes to cloud computing, most people concern on security and data privacy of the applications being deployed. This concern also applies to business processes as well.
        Business process platform provider has to support for securing business process and mechanisms to secure communication with other parties.
        Some other concerns related to security would be data isolation, identity management etc.
        Refer “Security Challenges in the Cloud”, an OT article for more information on how WSO2 Stratos solve the security challenges.

        Throttling is a very important aspect from the PaaS vendors perspective as it enables governing of how users are allowed to consume the business processes.
        In a more elaborated way, throttling manages and monitors how the resources are consumed by users. So PaaS vendor can use throttling to enables a multi-tenant PaaS with billing capabilities.
        Refer “Throttling in a cloud computing environment”, an OT article for more information on how throttling work in WSO2 Stratos.

        Billing, Metering, Logging and Business intelligence for Business Processes
        If we consider the traditional life cycle of “Business Process Management”, continuous monitoring, optimization should be integral parts of a BPM solution. One way of realizing this requirement with billing, metering, logging etc.
        But these may not actually fill the missing parts in Business Intelligence. Additionally we have to consider on proper mechanisms to generate real-time business intelligence as well.

        Billing and Metering
        PaaS provider is interested of the amount of resources, provided for each tenants. On the other-side PaaS consumer(tenants) also interested of the amount of the resources they consumed. So usage metering and billing has become an integral component in a PaaS whether it’s in public or private cloud.
        Refer “Metering, Throttling and Billing in StratosLive”, an OT article for more information on how usage metering and billing work in WSO2 Stratos.

        This is another important aspect from PaaS provider’s and Paas Consumer’s point of view. One use-case is a PaaS provider has to continually analyze the logs in order to check on malicious activities and respond them quickly. PaaS consumers(tenants) also interested in logging as the logs are required to analyze the previous activities, debug the running services and data warehousing etc.

        Tooling support
        Once a business process is modeled, the composition phase starts. As this business logic tends to change frequently, this composition phase in not a one time thing. So having a graphical tooling platform to support business process composition simplifies the development and make it more agile to the changing business needs.

        Note - WSO2 Carbon Studio provides the tooling support for implementing business processes using WS-BPEL 2.0 and WS-BPEL 1.1. WSO2 Carbon Studio BPEL Editor provides end-to-end graphical tooling support to compose a WS-BPEL process from scratch.
        As the WSO2 BPS team we all develop our WS-BPEL processes via this tool and we also contribute to this editor by providing new features and bug-fixes.
        Refer the issue-tracker for BPEL editor from here.

        Screen-shot of the BPEL Editor in WSO2 Carbon Studio 1.0.13.

        Figure: BPEL Editor in WSO2 Carbon Studio
        [1] - Afkham Azeez, Srinath Perera, Dimuthu Gamage, Ruwan Linton, Prabath Siriwardana, Dimuthu Leelaratne, Sanjiva Weerawarana, Paul Fremantle, Multi-Tenant SOA Middleware for Cloud Computing 3rd International Conference on Cloud Computing, Florida, 2010
        [2] - Milinda Pathirage, Srinath Perera, Sanjiva Weerawarana, Indika Kumara, A Multi-tenant Architecture for Business Process Execution, 9th International Conference on Web Services (ICWS), 2011 

        No comments:

        Post a Comment