Introduction We have discussed the SPI model of Cloud Computing – IaaS – PaaS – SaaS
To better take advantage of Cloud, some vendors have crafted cloud platform that enables faster time-to-market, a common user experience, and an easier development environment over distributed systems. IaaS can be viewed as machine-centric approach for cloud computing PaaS can be viewed as application-centric approach for cloud computing
Cloud Platform Cloud platform act as run-time enviroments that supports a set of programming languages. Cloud platform may offer additional services such as reusable components and libraries. Typically, cloud platform will offer plug-ins into common development environments, such as Eclipse, to facilitate development, testing, and deployment
PaaS examples: - Google App Engine - Microsoft Windows Azure - Force.com
Google App Engine - Functions Google App Engine enables developers to build web applications on the same scalable systems that power google’s own applications It means that, by using Google App Engine, you can easily design scalable applications that grow from one user to millions of users without infrastructure headaches This page is cited from https://appengine.google.com
Building an environment to support the whole life cycle of a web application is actually pretty complex: - runtime environment to run the code - environment to serve static content - database access - request and application logs - methods to push new release of the code - security of the application - backup - load balancing - scalability Google App Engine provides an environment that supports the whole life cycle of web application
With Google App Engine, you can serve your web applications from your own domain name, or use a free name on the appspot.com domain You can share your application with the world, or limit access to certain users. Directly cited from http://code.google.com/appengine/docs/whatisgoogleappengine.html
Google App Engine also provides APIs for your application to access a series of Services: - URL Fetch Service: Your application can use the same high-speed Google infrastructure to retrieve web resources. - Mail Service: Your application can send and receive email message Information from http://code.google.com/appengine/docs/whatisgoogleappengine.html
- Memcache Service: Your application can access a high performance in-memory key-value cache. - Image Manipulation Service: Your application can process images (resize, crop, rotate, and flip) - Google Account: Your application can allow user to sign in with a Google account. Information from http://code.google.com/appengine/docs/whatisgoogleappengine.html
Sandbox: Application run in a secure and isolated environment with limited access to the underlying operating system. - An application can only access other computers via URL fetch service and email services - Other applications can only access your application via http (https) request - Application can not write to the file system of the runtime environment. - Application can only read files uploaded with the application code. - Application can only runs in response to a web request, a queued task, or a scheduled task. Information from http://code.google.com/appengine/docs/whatisgoogleappengine.html
Data Storing - App Engine DataStore: provides a schemaless object datastore - Google Cloud SQL: provides a relational SQL database service for your application - Google Cloud Storage: provides a storage service for objects and files.
Windows Azure Windows Azure is a cloud platform running on Microsoft’s data centers. It supports the life cycle of a hosted service. Developers can build and deploy applications as a hosted service for Windows Azure by using the.NET framework Information from MSDN.microsoft.com/en-sus/library/windowsazure
A windows Azure hosted service can contain the following roles - web role - worker role - vm role
A web role instance can accept incoming http(https) requests and support web application hosted in IIS A worker role instance supports applications that are not hosted in IIS A VM role allows you to run a preconfigured OS image in Azure.
An application can contains an individual role or combination of them. You can request more instances of any role to scale your application up. For example, your application needs more computing power to handle increasing requests, you can spin up a new VM role instance.
Developer can use Visual Studio with the following toolkit installed: - The Windows Azure Software Development Kit - Windows Azure Tools for Microsoft Studio. You can test your code locally and publish to Azure.
Force.com Force.com is a cloud platform for creating and deploying applications for the social enterpise. On this platform, you can build apps that include build-in social and mobile functionality, business process, reporting, and search. Your apps run on a secure platform that can be easily scale up/down with automatically backup. Information from Force.com
Google Apps Engine and Windows Azure can be viewed as code-centric PaaS Force.come can be viewed as data-centric PaaS It exposes all cuomer specific configurations (forms, reports, workflows, user privileges, cusomizations, business logics) as metadata which is programmatically accessible.
The force.com Integrated Development Environment (IDE) is simply a plug-in to the Eclipse platform. The plug-in directely connects to the Force.com services in the cloud and acts on the test environment. The tested application can be deployed into production by one click.
Force.com also provides two tools for building GUI of your service. - UI builder - Visualforce