Understanding Platform as a Service


Published on

My presentation on PaaS and Stratos at JAX San Jose

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Data center provisioned for peak capacity Utilization is 5-10% or up to 50% with virt Tight coupling between applications and hardware allocation Bought app silos (e.g. SAP) Provisioned for peak capacity Build apps using enterprise middleware Provisioned for peak capacity Hardware & app provisioning takes months
  • Has a private IaaS Overflows to one or more public IaaS Uses a bunch of public SaaS Has a bunch of private SaaS, both build & buy Internally built SaaS is HUGE Because that is the competitive differentiator for every business Private SaaS running on PaaS using private hybrid IaaS PaaS also could be private or public Has unified identity, security, audit, etc. across all of these Has federated identity management across public / private infra (SaaS/IaaS)
  • Understanding Platform as a Service

    1. 1. Understanding Platform as a Service Paul Fremantle JAXConf 2011 SanJose
    2. 2. Paul Fremantle <ul><li>Working in Apache since 2002 </li></ul><ul><li>Apache Member </li></ul><ul><li>CTO and Co-Founder of WSO2 </li></ul><ul><li>VP, Apache Synapse </li></ul><ul><li>I play the Tin Whistle </li></ul>@tedleung
    3. 3. Moore ’ s Law for Data <ul><li>The amount of data online went from </li></ul><ul><ul><li>5 exabytes in 2002 </li></ul></ul><ul><ul><li>281 exabytes in 2009 </li></ul></ul><ul><li>Doubled every 15 months </li></ul><ul><li>You cannot deal with this data growth with the same applications </li></ul><ul><ul><li>A reasonable conclusion is that the number of applications will double every 15 months too </li></ul></ul>
    4. 4. Key Enablers for effective development <ul><li>Robust and scalable applications </li></ul><ul><li>Components at multiple levels (e.g. OSGi and SOA) </li></ul><ul><li>Standards </li></ul><ul><ul><li>Internal Standards </li></ul></ul><ul><ul><ul><li>(e.g. Schema patterns, Security policies) </li></ul></ul></ul><ul><ul><li>External Standards </li></ul></ul><ul><ul><ul><li>(SOAP, REST/HTTP, AMQP) </li></ul></ul></ul><ul><li>Tooling to create cloud-deployable artifacts </li></ul><ul><li>Low cost of provisioning a platform </li></ul><ul><li>The right platform services </li></ul><ul><li>Automated Governance </li></ul><ul><ul><li>Re-use </li></ul></ul><ul><ul><li>Consistency </li></ul></ul><ul><ul><li>lifecycle management </li></ul></ul><ul><ul><li>Monitoring and SLA managemen </li></ul></ul>
    5. 5. Enterprise IT in 2010 © WSO2 2010
    6. 6. Enterprise IT in 2015+ © WSO2 2010
    7. 7. Cloud Native Attributes <ul><li>http ://bit.ly/CloudNative </li></ul><ul><li>Core Attributes </li></ul><ul><ul><li>Self-service </li></ul></ul><ul><ul><li>Multi-tenant </li></ul></ul><ul><ul><li>Distributed / Scalable </li></ul></ul><ul><ul><li>Elastically / Dynamically Scaled </li></ul></ul><ul><ul><li>Metered </li></ul></ul><ul><li>Extended attributes </li></ul><ul><ul><li>Incrementally Deployable and testable </li></ul></ul><ul><ul><li>Billed </li></ul></ul><ul><ul><li>Dynamically wired </li></ul></ul>
    8. 8. http://www.flickr.com/photos/ladymaggic/
    9. 9. http://www.flickr.com/photos/jurvetson/
    10. 10. Shared what? <ul><li>Shared Nothing </li></ul><ul><li>Shared Hardware </li></ul><ul><li>Shared Database </li></ul><ul><li>Shared OS </li></ul><ul><li>Shared Container </li></ul><ul><li>Shared Everything </li></ul>
    11. 11. What kind of PaaS is it? <ul><li>Google App Engine, Heroku </li></ul><ul><ul><li>“ Web App” PaaS </li></ul></ul><ul><li>“ Integration PaaS” </li></ul><ul><li>“ BPM PaaS” </li></ul><ul><li>Messaging PaaS </li></ul><ul><li>etc etc </li></ul>
    12. 12. Cloud Middleware Platform and PaaS <ul><li>A PaaS requires an underlying software base </li></ul><ul><ul><li>Cloud Middleware Platform (CMP), or </li></ul></ul><ul><ul><li>Cloud Enabled Application Platform (CEAP – Gartner) </li></ul></ul><ul><ul><li>“ Private PaaS” / On Premise PaaS </li></ul></ul><ul><li>Not all PaaS have redistributable CMPs </li></ul><ul><li>The benefit of having a CMP is choice: </li></ul><ul><ul><li>Run your own PaaS in a private cloud </li></ul></ul><ul><ul><li>More than one PaaS provider </li></ul></ul><ul><li>Open PaaS / Open CMP fights lock-in </li></ul>
    13. 13. Cloud Economies <ul><li>Public Cloud economy is based on the Central Limit Theorem </li></ul><ul><li>For private clouds, the CLT sucks </li></ul><ul><ul><li>Multi-tenancy is the economy of scale for private clouds </li></ul></ul>
    14. 14. <ul><li>Lean </li></ul><ul><ul><li>All the same benefits are magnified in a cloud </li></ul></ul><ul><ul><li>Efficiency that is valuable in fixed deployments is invaluable in large dynamic deployments! </li></ul></ul><ul><li>Available on private, public, on-premise </li></ul><ul><ul><li>Getting locked into a specific public PaaS will have long term repercussions </li></ul></ul><ul><ul><li>Open Source is a huge protection against this </li></ul></ul><ul><li>The correct set of core “ services ” </li></ul><ul><ul><li>Not just App Server, but Identity, Registry, Data, Cache, ESB, BPMS, Billing, Logging, etc </li></ul></ul><ul><li>Open Standard interfaces to common services </li></ul><ul><ul><li>Enables modular usage </li></ul></ul><ul><li>Self-service, multi-tenancy, elasticity, metering, incremental deployment and testing </li></ul><ul><li>Offers a basis for both single-tenant and multi-tenant models </li></ul><ul><ul><li>Lots of tenants each with their own stuff, and/or </li></ul></ul><ul><ul><li>One application that is offered to all or many tenants </li></ul></ul>What to look for in a PaaS/CMP
    15. 15. Who are the players in the PaaS market? <ul><li>Those without a Private PaaS </li></ul><ul><ul><li>Force.com </li></ul></ul><ul><ul><li>Heroku </li></ul></ul><ul><ul><li>Google App Engine </li></ul></ul><ul><ul><li>Amazon Elastic Beanstalk </li></ul></ul><ul><li>Those with a Private / Public PaaS </li></ul><ul><ul><li>Tibco </li></ul></ul><ul><ul><li>Microsoft (nearly) </li></ul></ul><ul><li>Those with an Open Private / Public PaaS </li></ul><ul><ul><li>SpringSource CloudFoundry </li></ul></ul><ul><ul><li>WSO2 Stratos </li></ul></ul>
    16. 16. Stratos Overview <ul><li>A full middleware platform available as a service, with self service </li></ul><ul><ul><li>Fast provisioning </li></ul></ul><ul><li>Based on OSGi </li></ul><ul><ul><li>Modular, componentized, standard </li></ul></ul><ul><li>Multi-tenant, Elastic, Metered and Billed </li></ul><ul><ul><li>Effective and powerful </li></ul></ul><ul><li>Available under the Apache License </li></ul><ul><ul><li>Open Source, Open License, Open Development </li></ul></ul>
    17. 17. Stratos resources <ul><li>Stratos SVN </li></ul><ul><ul><li>http://svn.wso2.org/repos/wso2/trunk/stratos/ </li></ul></ul><ul><li>Stratos-dev list </li></ul><ul><ul><li>https://mail.wso2.org/cgi-bin/mailman/listinfo/stratos-dev </li></ul></ul><ul><li>Stratos 1.5.1 builds </li></ul><ul><ul><li>(currently) freo.me/stratos151pack </li></ul></ul><ul><ul><li>http://builder.wso2.org/~carbon/releases/stratos/ </li></ul></ul>
    18. 18. Installation options <ul><li>1. Full installation </li></ul><ul><ul><li>Pre-reqs </li></ul></ul><ul><ul><ul><li>IaaS – Eucalyptus, vmWare, Ubuntu or Amazon </li></ul></ul></ul><ul><ul><ul><li>MySQL & Perl & JVM </li></ul></ul></ul><ul><ul><ul><li>Ability to run a number of VMs (one per service) </li></ul></ul></ul><ul><li>2. Laptop/Simple install </li></ul><ul><ul><li>Pre-reqs </li></ul></ul><ul><ul><ul><li>A machine with lots of memory (4Gb min, 8GB preferred) </li></ul></ul></ul><ul><ul><ul><li>JVM </li></ul></ul></ul><ul><ul><ul><li>MySQL & Perl </li></ul></ul></ul>
    19. 19. Installation of Stratos 1.5.1 pack <ul><li>Config mysql </li></ul><ul><ul><li>max_allowed_packet = 16M </li></ul></ul><ul><li>ulimit –n 65000 </li></ul><ul><li>Unzip the distro </li></ul><ul><li>cd stratos </li></ul><ul><li>./stratos-setup.pl </li></ul><ul><li>export STRATOS_DIR=`pwd`/deploy </li></ul><ul><li>cd deploy </li></ul><ul><li>./stratos.sh start all </li></ul>
    20. 20. StratosLive <ul><li>http:/ /cloud.wso2.com </li></ul>
    21. 21. Complete PaaS <ul><li>Gartner is forecasting that it will be 2015 before vendors have true, integrated, complete PaaS frameworks </li></ul><ul><li>We believe Stratos is that today </li></ul>
    22. 22. Available Services (low level) <ul><li>Multi-tenancy </li></ul><ul><li>Deployment synchronizer </li></ul><ul><li>Elastic Load Balancer </li></ul><ul><ul><li>tenant-aware </li></ul></ul><ul><li>Tenant-aware identity manager </li></ul><ul><ul><li>SAML2, OpenId, Oauth, XACML </li></ul></ul><ul><li>Tenant Metering and Billing </li></ul><ul><li>Discovery </li></ul><ul><li>Logging </li></ul><ul><li>Configuration & Repository </li></ul><ul><li>Data-as-a-Service </li></ul><ul><li>Queueing-as-a-Service </li></ul><ul><li>Health Monitor </li></ul><ul><li>Private / Public Cloud bridging </li></ul>
    23. 23. Every Service has a network API <ul><li>All admin functions and all the low level services are available as SOAP APIs </li></ul><ul><ul><li>Full SOAP support, REST in some cases </li></ul></ul><ul><ul><li>Always possible to bridge into REST using the ESB </li></ul></ul><ul><li>Why? </li></ul><ul><ul><li>Clear SOA design </li></ul></ul><ul><ul><ul><li>Allow mashups, BPEL and ESB integration </li></ul></ul></ul><ul><ul><li>Automated provisioning </li></ul></ul><ul><ul><li>Support hybrid multi-tenancy models for legacy software </li></ul></ul>
    24. 24. Available Services (mid-level) <ul><li>Application Server </li></ul><ul><ul><li>Webapp deployment </li></ul></ul><ul><ul><ul><li>Multi-tenant deployment of Tomcat 7 </li></ul></ul></ul><ul><ul><li>Service Deployment </li></ul></ul><ul><ul><ul><li>Axis2, JAXWS, POJO, Spring </li></ul></ul></ul><ul><ul><li>Transaction Manager </li></ul></ul><ul><ul><li>SaaS deployment model </li></ul></ul><ul><li>Portal Server </li></ul><ul><ul><li>Based on the OpenSocial/Google Gadget spec </li></ul></ul><ul><ul><li>Gadget repository and strong personalization features </li></ul></ul><ul><ul><li>SAML2 and OpenId Single Sign-on </li></ul></ul><ul><li>Data Services </li></ul><ul><li>Enterprise Service Bus </li></ul><ul><ul><li>Full multi-tenant deployment of Apache Synapse </li></ul></ul><ul><li>Governance Registry </li></ul><ul><ul><li>Governance-as-a-Service model </li></ul></ul>
    25. 25. Available Services (high-level) <ul><li>Business Process Manager </li></ul><ul><ul><li>Full BPEL runtime in the cloud </li></ul></ul><ul><ul><li>Human Task support </li></ul></ul><ul><li>Business Rules Server </li></ul><ul><li>Complex Event Processing </li></ul><ul><li>Business Activity Monitoring </li></ul>
    26. 26. Services available in 1.0
    27. 27. Stratos and StratosLive Timeline <ul><li>Stratos is the code </li></ul><ul><li>StratosLive is the public cloud service </li></ul><ul><ul><li>Stratos hosted and managed by WSO2 at http://cloud.wso2.com </li></ul></ul><ul><li>April 2010 </li></ul><ul><ul><li>Stratos alpha release </li></ul></ul><ul><ul><li>StratosLive alpha </li></ul></ul><ul><li>November 2010 </li></ul><ul><ul><li>Stratos 1.0 Gold </li></ul></ul><ul><ul><li>StratosLive 1.0 beta </li></ul></ul><ul><li>July 2011 </li></ul><ul><ul><li>Stratos 1.5 </li></ul></ul><ul><ul><li>StratosLive GA </li></ul></ul>© WSO2 2011
    28. 28. What is Multi-tenancy? <ul><li>Many Parties shared same set of resources, while giving each an his own space </li></ul>
    29. 29. Building SaaS webapps <ul><li>Allows a tenant to deploy an app in “multi-tenant” mode </li></ul><ul><li>All tenants login’s are accepted </li></ul><ul><li>The tenant ID is available to the code </li></ul><ul><li>The “owning” tenant must manage the data </li></ul>© WSO2 2011
    30. 30. Google Apps Integration <ul><li>Two way integration </li></ul><ul><ul><li>A Google Apps domain can use the WSO2 StratosLive Identity Server as the identity store </li></ul></ul><ul><ul><ul><li>Uses SAML2 single sign on </li></ul></ul></ul><ul><ul><li>A StratosLive domain can choose to use Google Apps as the identity store </li></ul></ul><ul><ul><ul><li>Uses OpenId and OAuth </li></ul></ul></ul><ul><li>Allows integration of Stratos into Google Apps marketplace </li></ul><ul><ul><li>StratosLive domain is the same as the Google App domain </li></ul></ul><ul><ul><li>All Google App users are automatically defined as StratosLive users </li></ul></ul>© WSO2 2011
    31. 31. Login with Google Apps Domain
    32. 32. Multi-tenant datastore <ul><li>In Stratos 1.5 / StratosLive we are offering two different database models </li></ul><ul><li>SQL/JDBC based on MySQL </li></ul><ul><ul><li>Running in a multi-tenant model </li></ul></ul><ul><ul><li>Each tenant has their own protected set of database connections </li></ul></ul><ul><li>Cassandra / NoSQL </li></ul><ul><ul><li>Running in a multi-tenant model </li></ul></ul><ul><li>Adding HDFS support in the future </li></ul><ul><li>Eventually we aim to support JPA as an API over both </li></ul><ul><ul><li>Currently only for JDBC </li></ul></ul>© WSO2 2011
    33. 34. Adding RDS Instances
    34. 35. Creating Databases
    35. 36. Using Database Explorer
    36. 37. Apache Cassandra as a Service & Carbonized Cassandra <ul><li>Users can log in to the Web Console (both in Stratos and in WSO Data Server) and create Cassandra key spaces. </li></ul>
    37. 38. Apache Cassandra as a Service & Carbonized Cassandra (Contd.) <ul><li>Key spaces </li></ul><ul><ul><li>will be allocated from a Cassandra clusters </li></ul></ul><ul><ul><li>they are isolated from other tenants in Stratos </li></ul></ul><ul><ul><li>it is integrated with WSO2 Security model. </li></ul></ul><ul><li>Users can manage and share his key spaces through Stratos Web Console and use those key spaces through Hector Client (Java Client for Cassandra) </li></ul><ul><li>In essence we provide </li></ul><ul><ul><li>Cassandra as a part of Stratos as a Service </li></ul></ul><ul><ul><li>Multi-tenancy support </li></ul></ul><ul><ul><li>Security integration with WSO2 security model </li></ul></ul>
    38. 39. Elastic Load Balancer <ul><li>A lightweight deployment of Apache Synapse running in message relay mode </li></ul><ul><ul><li>Currently overhead of around 2ms </li></ul></ul><ul><ul><li>New Relay Transport is expected to reduce this by 30-50% </li></ul></ul><ul><li>Load balancing based on load averages in VMs </li></ul><ul><li>Tenant-awareness </li></ul><ul><ul><li>Makes it possible to partition clusters by tenant </li></ul></ul><ul><li>Underlying IaaS support for Eucalyptus, Ubuntu, Amazon </li></ul><ul><ul><li>Coming soon: vmWare and OpenStack </li></ul></ul>© WSO2 2011
    39. 40. Distributed Logging <ul><li>Every service and custom applications logs are captured by the log4j/commons loggings settings </li></ul><ul><li>Logs are partitioned by tenant </li></ul><ul><li>Logs are sent to the manager service via syslog </li></ul><ul><li>Logs are then viewable / downloadable by tenant admins </li></ul>
    40. 41. MT-Logging Deployment Architecture
    41. 42. Log Viewer – Stratos Manager {Super-Tenant}
    42. 43. Log Viewer – Stratos Data Services Server {Tenant User}
    43. 44. Every tenant has access to an Identity Service
    44. 45. Identity Server / Service <ul><li>Each tenant is identified by the @tenant-domain </li></ul><ul><li>Each tenant admin can choose to manage their tenants user store either within the Stratos-internal LDAP store or using an external LDAP </li></ul><ul><li>Bulk import </li></ul><ul><li>Each tenant user has a OpenId/Infocard as well as SAML2 tokens </li></ul><ul><ul><li>Single-signon </li></ul></ul><ul><ul><li>Single-Signoff is also supported </li></ul></ul><ul><li>SAML2 is used across the Stratos deployment to ensure a smooth transition between components </li></ul><ul><ul><li>SAML2 is also available as sign-on for webapps, gadgets and other user-deployed content </li></ul></ul>
    45. 46. web.xml – Integrating Identity into WebApps <ul><li><login-config> <auth-method>BASIC</auth-method> <realm-name>Basic Auth</realm-name> </li></ul><ul><li></login-config> </li></ul><ul><li>Automatically ties into Stratos Identity </li></ul>
    46. 47. Identity Service continued <ul><li>As well as a full distributed authentication server, Stratos Identity Server also supports distributed Authorization </li></ul><ul><ul><li>OAuth </li></ul></ul><ul><ul><li>XACML </li></ul></ul>
    47. 48. Security Management <ul><li>Tenants are isolated at the core: </li></ul><ul><ul><li>Identity server provides the security model </li></ul></ul><ul><ul><li>Registry/Repository implements an isolated data-store for configuration and meta-data </li></ul></ul><ul><ul><li>Services are Isolated at the Axis2 level </li></ul></ul><ul><ul><ul><li>For services we also restrict classloading using Java Security </li></ul></ul></ul><ul><ul><li>Webapps are isolated using standard Tomcat techniques </li></ul></ul><ul><ul><ul><li>Each tenant can only load code from their tenants deployed WARs </li></ul></ul></ul><ul><ul><li>We apply security policies to stop webapps opening ports, modifying local files, calling OSGi Services </li></ul></ul><ul><ul><ul><li>These security policies can be changed based on need </li></ul></ul></ul><ul><li>Sharing is possible across tenants using standard models – e.g. federated security and web/network access </li></ul>
    48. 49. Performance Overhead of Multi-tenancy
    49. 50. Billing and Metering <ul><li>A generic multi-tenanted metering and billing module </li></ul><ul><li>Written as OSGi </li></ul><ul><li>Uses Drools to implement service levels </li></ul><ul><ul><li>E.g. 10 users, 100Mb transfer/month, 15 deployed services for free level of subscription </li></ul></ul><ul><li>Can be used to meter real business events </li></ul><ul><ul><li>How many sales transactions / month </li></ul></ul>
    50. 51. Usage Data Metering/Throttling <ul><li>Usage Metering </li></ul><ul><li>Currently available </li></ul><ul><li>01. Registry Resource Volume </li></ul><ul><li>02.Number of users </li></ul><ul><li>Planned for next release </li></ul><ul><li>01.Appserver Service Bandwidths/Request Response count </li></ul><ul><li>02.ESB Mediation Data(Bandwidths Data) </li></ul><ul><li>Throttling </li></ul><ul><li>Currently Available </li></ul><ul><li>01.Number of users </li></ul><ul><li>02.Registry Resource Volume </li></ul><ul><li>Planned for next release </li></ul><ul><li>01.Number of Request and Response counts </li></ul><ul><li>02.Service incoming and outgoing bandwidths </li></ul>
    51. 52. Stratos Billing <ul><li>Scheduled invoice generation </li></ul><ul><li>Notifies the customers via email after invoices are generated </li></ul><ul><li>Ability to view past invoices and the current(interim) invoice </li></ul><ul><li>Securely pay the invoice via Paypal </li></ul><ul><li>Notifies the customer via email on received payments </li></ul><ul><li>Notifies the super-admin on customers exceeding the credit limit </li></ul><ul><li>Presents a summary view to the super-admin </li></ul>
    52. 54. Case Studies (in progress) <ul><li>System Integrator </li></ul><ul><ul><li>Currently running Stratos for internal projects </li></ul></ul><ul><ul><li>Examining the use of Stratos for customer projects and SaaS </li></ul></ul><ul><li>Home Loan Bank </li></ul><ul><ul><li>WSO2 runs a private deployment of Stratos </li></ul></ul><ul><ul><li>Developer sandbox and test environment </li></ul></ul><ul><ul><li>Currently apps are then deployed internally in Carbon </li></ul></ul><ul><li>Betting/Gaming PaaS </li></ul><ul><ul><li>Provide an environment (Mashups, WebApps, Gadgets) for sports teams to write their own betting applications </li></ul></ul><ul><ul><li>In the context of betting legislation/regulation </li></ul></ul><ul><li>Mobile PaaS </li></ul><ul><ul><li>Building a PaaS environment for a mobile telco </li></ul></ul><ul><li>SaaS-enablement of legacy applications </li></ul>
    53. 55. Futures <ul><li>SLA management and Priority Execution </li></ul><ul><li>Better thread/CPU management and instrumentation </li></ul><ul><li>HDFS support </li></ul><ul><li>VM deployment </li></ul><ul><li>End-to-end development lifecycle integration (Maven, SVN, Hudson/Jenkins, Junit) </li></ul>
    54. 56. Summary
    55. 57. Questions? http://www.flickr.com/photos/oberazzi/