Transcription

International Journal on Cloud Computing: Services and Architecture (IJCCSA) Vol. 6, No. 1, February 2016COMPARATIVE STUDY OF VARIOUS PLATFORM AS ASERVICE FRAMEWORKSMohan Krishna Varma and Eunmi Choi*DISC Lab, Graduate School of Business IT, Kookmin University, Seoul, South Korea*Corresponding Author, School of Business IT, Kookmin University, Seoul, KoreaABSTRACTCloud computing is an emerging paradigm with three basic service models such as Software as a Service(SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). This paper focuses ondifferent kinds of PaaS frameworks. PaaS model provides choice of cloud, developer framework andapplication service. In this paper, detailed study of four open PaaS frameworks like AppScale, CloudFoundry, Cloudify, and OpenShift are explained with the architectural components. We also explainedmore PaaS packages like Stratos, mOSAIC, BlueMix, Heroku, Amazon Elastic Beanstalk, Microsoft Azure,Google App Engine and Stakato briefly. In this paper we present the comparative study of PaaSframeworks.KEYWORDSCloud Computing, AppScale, Cloud Foundry, Cloudify, OpenShift, Stratos, BlueMix, Heroku & Stackato1. INTRODUCTIONCloud computing [2] is a widely used technology in which computers are networked to providestorage and compute services using virtualization technology. Cloud computing must satisfy fiveessential characteristics. They are on demand service, access network, resource pooling, elasticityand measured services. To achieve these five essential characteristics, cloud computing providesthree kinds of service models: Software as a Service (SaaS), Platform as a Service (PaaS) [8] andInfrastructure as a Service (IaaS) [9]. Cloud computing service models are shown in Figure 1.Customer Relationship Management (CRM) applications are widely used services in the SaaS.Application platform delivered as a service is described as PaaS and it is used to deploy the usercode. AppScale [3], Cloud Foundry, Cloudify and OpenShift open-source environments can beused as PaaS. IaaS is used to build their private infrastructure, which reduces the setup cost. IaaScan provide virtualized resources such as computation, storage and communication. Eucalyptus[1], open stack and cloud stack open-sources can be used to provide IaaS.Figure 1. Cloud computing service modelsDOI : 10.5121/ijccsa.2016.610323

International Journal on Cloud Computing: Services and Architecture (IJCCSA) Vol. 6, No. 1, February 2016This paper will focus on the PaaS service model. It is easy to deploy, run and scale applicationusing PaaS. Some of the PaaS have limited language and framework support. They do not deliverkey application services needed for cloud applications. They sometime restrict deployment to asingle cloud. Whereas open PaaS provides choice of cloud like private, public or hybrid, choiceof developer framework like spring, ruby, or java and application services like mongoDB,MySQL, or PostgreSQL for running the applications. This paper deals with the architecturalcomponents of major open PaaS frameworks like AppScale, Cloud Foundry, Cloudify andOpenShift. And also given some explanation about PaaS frameworks such as Stratos, mOSAIC,BlueMix, Heroku, Amazon Elastic Beanstalk, Microsoft Azure, Google App Engine and Stakato.The paper is organized as follows. Section 2 introduces AppScale and its components, CloudFoundry architecture and component explanation given in Section 3, Cloudify open PaaS isexplained in Section 4, Section 5 deals with OpenShift, other PaaS frameworks are introduced inSection 6, comparison of PaaS frameworks are given in Section 7 and finally Section 8 concludesthe paper.2. APPSCALEAppScale [4] is a scalable, distributed, and fault-tolerant cloud runtime system that executes overcluster resources. It can be deployed on Xen [5], Kernel-based Virtual Machine (KVM), AmazonEC2 or Eucalyptus. AppScale initial design utilizes the standard three-tier web deployment modelin the design. In the later design cycles more components are added to the AppScale. Table 1shows the AppScale components, language used to design the component and their functionality.Table 1. AppScale dBalancerRuby on RailsAppServerPythonDatabase MasterPythonDatabase SlavePythonAppScale ToolsRubyFunctionalityExecutes on every node and starts automatically whenthe guest virtual machine bootsProcesses arriving requests from users and forwardsthem to the application serverRunning through a number of distant hosts to supportautomated execution of applicationsOffers persistent storage for applications, processesprotocol buffers from apps and makes requests on itsbehalf to read and write data to the data storeFacilitate distributed, scalable, and fault tolerant datamanagementStarts an AppScale system, deploys and tear downapplications, queries the state and performance ofAppScale deployment or application, and manipulatesAppScale configuration and state3. CLOUD FOUNDRYCloud Foundry [13] is an open PaaS, which provides choice of clouds, developer frameworks andapplication services. Cloud Foundry makes application development faster and easier. We canbuild, test, deploy and scale applications with help of Cloud Foundry. It is an open-source projectavailable through a variety of private cloud distributions and public cloud instances. CloudFoundry started as a platform to deploy Java Spring applications on Amazon Web Services.VMware acquired the Cloud Foundry and made it into an open-source, multi-language and multiframework PaaS. Cloud Foundry supports multiple languages and multiple runtimes such as Java,24

International Journal on Cloud Computing: Services and Architecture (IJCCSA) Vol. 6, No. 1, February 2016Ruby, Scala, spring and Node.js. Cloud Foundry can run on anything like laptop, desktop, microcloud, private cloud or public cloud. So, it is called as open PaaS as shown in Figure 2. CloudFoundry has three dimensions to the platform: choice of frameworks, choice of applicationservices and the deployment choice. Cloud Foundry supports spring for Java, Rails and Sinatrafor Ruby, Node.js and JVM languages like Groovy, Grails and Scala. It also supports Microsoft.NET Framework and became the first non-Microsoft platform to support .NET.Figure 2. Cloud Foundry as Open PaaSCloud Foundry supports RabbitMQ for messaging, MongoDB and Redis for NoSQL, relationaldatabases MySQL and PostgreSQL. Cloud Foundry can be deployed on notebooks through MicroCloud Foundry. It is the complete version of Cloud Foundry designed to run in a virtual machine.It can also be deployed on Private Cloud or Public Cloud. These features made Cloud Foundry asa flexible PaaS.Cloud Foundry components perform routing, authentication, messaging, logging, applicationstorage and execution, provide services and take care of application life cycle. The router routesincoming traffic to the appropriate component, usually the Cloud Controller or a runningapplication on a DEA (Droplet Execution Agent) node. The User Account and Authentication(UAA) server work with Login Server to provide identity and authentication management.OAuth2 Server is uses as the user account and authentication server. Cloud controller and healthmanager components take care of the application lifecycle in the cloud foundry. Cloud controlleris responsible for managing the lifecycle of applications. When a developer pushes an applicationto cloud foundry, application is targeting the cloud controller. Cloud controller then stores the rawapplication bits, creates a record to track the application metadata, and directs a DEA node tostage and run the application. Health manager monitor applications to determine their state,version, and number of instances. Applications state may be running, stopped, or crashed. Healthmanager determine applications expected state, version, and number of instances. It reconciles theactual state of applications with their expected state. Health manager directs the cloud controllerto take action to correct any discrepancies in the state of applications. The Droplet ExecutionAgent manages application instances, tracks, started instances, and broadcasts state messages.25

International Journal on Cloud Computing: Services and Architecture (IJCCSA) Vol. 6, No. 1, February 2016Application instances live inside warden containers. Containerization ensures that applicationinstances run in isolation, get their fair share of resources, and are protected from noisyneighbours. Blob Store holds the application code, build packs, and droplets. Applicationstypically depend on services like databases or third-party SaaS providers. When a developerprovisions and binds a service to an application, the service broker for that service is responsiblefor providing the service instance. Cloud Foundry uses a lightweight publish-subscribe anddistributed queueing messaging system for internal communication between components. Thisinternal communication performed via message bus. The metrics collector gathers metrics fromthe components. Operators can use this information to monitor an instance of Cloud Foundry. Theapplication logging aggregator streams the application logs to the corresponding developers.Cloud Foundry components are shown in Figure 3.Figure 3. Cloud foundry components4. CLOUDIFYCloudify [14] is another open PaaS cloud application manager. It automates common processesneeded to perform and to manage the applications in a cloud environment. Cloudify composed ofthree main components. The components are Command line interface client, Agents, andManager. Command line interface client is an executable file which is written in Python. It ispackaged with python and relevant dependencies in an executable file. Command line interfaceclient can run on Windows, Linux and Mac operating systems. Command line interface clientpreform two tasks. First one is manager bootstrapping and another is managing applications.Bootstrapping is the process of installing the Cloudify manager. Command line interface clientprovides the user with the full set of functions for deploying and managing applications includinglog and event browsing.26

International Journal on Cloud Computing: Services and Architecture (IJCCSA) Vol. 6, No. 1, February 2016Cloudify Agents are responsible for managing the manager’s command execution using a set ofplugins. There is a manager side agent per application deployment and optional agent on eachapplication Virtual Machine (VM). The manager side agents handle IaaS related tasks, likecreating a VM or a network, and binding a floating IP to a VM. Manager side agents can also beused with other tools such as REST to remotely execute tasks. The application side agents areoptionally located on application VM’s. The user can state in the blueprint which VM’s will havean agent installed on them. The application side agents are installed by the manager side agent aspart of the VM creation task. Once running, the application side agent can install plugins andexecute tasks locally. Typical tasks will be middleware installation and configuration, andapplication modules deployment.Cloudify Manager deploys and manages applications described in blueprints. The manager’smain responsibilities are to run automation processes described in workflow scripts and issueexecution commands to the agents. Cloudify is controlled via a REST API. The REST API coversall the cloud orchestration and management functions. Cloudify’s Web GUI works with the RESTAPI to add additional value and visibility. Cloudify uses a Workflow engine to allow automationprocess through built-in and custom workflows. Workflow engine is responsible of timing andorchestrating tasks for creating or manipulating the application components. The user can writecustom workflows in Python using API’s that provide access to the topology components.Figure 4. Cloudify StackCloudify uses different databases as data store, some of the technologies for processing andmessaging, and different servers as front end. Total stack is shown in Figure 4. Cloudify useselastic search as its data store for deployment state. The deployment model and runtime data arestored as JSON documents. Blueprints are stored in the elastic search and it is used as runtimeDB. Cloudify uses InfluxDB as the monitoring metrics repository. Influx provides flexibleschema for metrics and metrics metadata as well as a query language. Cloudify stores everymetric reported by a monitoring tool into influxdb and define time based aggregations as well asstatistic calculations. Clodify uses RabbitMQ task broker for messaging. Cloudify offers a policyengine that runs custom policies in order to make runtime decisions about availability, servicelevel agreement, etc. For example, during installation, the policy engine consumes streams ofevents coming from monitoring probes or tools. The policy engine analyses these streams to27

International Journal on Cloud Computing: Services and Architecture (IJCCSA) Vol. 6, No. 1, February 2016decide if a specific node is up and running and provides the required functionality. Policies areregistered, activated, deactivated and deleted by the Workflow Engine. For logging purposelogstash is used and agent play main role in processing. Nginx proxy and file server, Flask orGunicorn REST server, and Node.js GUI servers can be used as front end in the Cloudify.5. OPEN SHIFTOpenShift [15] enables us to create, deploy and manage applications within the cloud. Two basicfunctional units of the Openshift are the Broker and Node servers. Communication between theBroker and Nodes is done through a message queuing service. Broker is the single point ofcontact for all application management activities. It is responsible for managing user logins, DNS,application state, and general orchestration of the applications. Customers don’t contact thebroker directly; instead they use the Web console or CLI tools to interact with Broker over aREST based API. Nodes are the systems that host user applications. In order to do this, the Nodesare configured with Gears and Cartridges. The division is shown in Figure 5.Figure 5. OpenShiftA gear represents the part of the Node’s CPU, RAM and base storage that is made available toeach application. An application can never use more of these resources allocated to the gear, withthe exception of storage. OpenShift supports multiple gear configurations, enabling users tochoose from the various gear sizes at application setup time. When an application is created, theBroker instructs a Node to create a new gear to contain the application. Cartridges representpluggable components that can be combined within a single application. These includeprogramming languages, database engines, and various management tools. Users can choose frombuilt-in cartridges that are served directly through OpenShift, or from community cartridges thatcan be imported from a git repository. The built-in cartridges require the associated languages anddatabase engines to be installed on every Node.6. MORE PAAS FRAMEWORKSIn this section we are going to give brief introduction about Stratos, mOSAIC, IBM BlueMix,Heroku, Amazon Elastic Beanstalk, Microsoft Azure and Google App Engine, and Stakato PaaSframeworks.28

International Journal on Cloud Computing: Services and Architecture (IJCCSA) Vol. 6, No. 1, February 20166.1. STRATOSApache Stratos [6] is a highly-extensible PaaS framework that helps to run Apache Tomcat, PHP,and MySQL applications, and can be extended to support many more environments on all majorcloud infrastructures. For developers, Stratos provides a cloud-based environment for developing,testing, and running scalable applications. In Single JVM deployment model Stratos couldaccommodate up to 100 cartridge instances. In a distributed deployment model Stratos couldaccommodate up to 1000 cartridge instances.6.2. MOSAICmOSAIC [10] is an open-source API and platform for designing and developing multi-Cloudoriented applications. The architecture has been designed with open and standard inter faces. Themain goal is to provide a unified cloud programming interface which enables flexibility to buildapplications across different cloud providers. The main middleware components providingintegration features are the Cloudlet, Connector, Interoperability, and Driver API. The Cloudletand Connector API layers facilitate the integration into the target language environment which isused by the developers in their applications. The Driver API layer provides abstraction overresource allocation on top of the native resource API. Interoperability API is the middleware layerthat integrates the connector API and compatible driver API implementations that could bewritten in different languages. It is a remote API that follows the model of RPC withfunctionalities including marshalling, request/response correlation, and error detection. Apartfrom its cloud integration features, mOSAIC framework is promised to have a semantic-orientedontology for describing cloud resources.6.3. BLUEMIXBluemix [16] is the newest cloud offering from IBM. BlueMix allows developers to create,deploy, and manage applications on the cloud. It is an implementation of IBM’s Open CloudArchitecture based on Cloud Foundry, an open source Platform as a Service (PaaS). It deliversenterprise-level services that can easily integrate with cloud applications without requiring toknow how to install or configure them.6.4. HEROKUHeroku [17] is a PaaS solution created on top of the Amazon EC2 that allows to deploy, run andmanage applications written in Ruby, Node.js, Java, Python, Clojure, Scala and PHP. It runs ontop of Amazon EC2 VMs and offers a readymade set up environment in which the developer canupload code, compile it and run it. All these things can be done with some simple commands. Thedeveloper has the opportunity to test and deploy applications without necessary knowledge ofunderlying infrastructure. Heroku can manage the resources required to scale the project.6.5. ELASTIC BEANSTALKAmazon Elastic Beanstalk [12] supports users to deploy their applications on Amazon WebService (AWS) cloud platform. AWS Elastic Beanstalk PaaS framework allows users to createapplications and push them to a definable set of AWS services, including Amazon EC2, AmazonS3, Amazon Simple Notification Service (SNS), Amazon CloudWatch, auto scaling, and elasticload balancers. Elastic Beanstalk frameworks support different languages for cloud development.29

International Journal on Cloud Computing: Services and Architecture (IJCCSA) Vol. 6, No. 1, February 20166.6. AZUREMicrosoft Windows Azure [11] allows the application deployment and management on Azurecloud platform. The Microsoft Azure framework offers a cloud services operating system and aset of services to support easy development and operation of applications for cloud platform.Azure provides functionality to build and manage applications that span from consumer Web toenterprise scenarios.6.7. APP ENGINEGoogle App Engine [18] allows developers to deploy their application on Google cloud platform.App Engine framework allows developers to use Java, Python and some other languages fordeveloping their web applications.6.8. STAKATOStackato [7] is open PaaS software based on Cloud Foundry, Docker and other open-sourcecomponents. It has multi-tenancy capabilities and can be installed on internal infrastructure orpublic cloud. Multi-tenancy capabilities are important because they allow us to run multipleapplications on the same IaaS infrastructure. Stackato allows developers to automatically packageapplications into their own Docker containers and scales instances up or down on demand.Stackato provisions all required components, including languages, frameworks and servicebindings, automates logging and monitoring, allows for automated application versioning androllback.7. COMPARISON OF MAJOR PAASIn this