Getting started with choosing the right cloud platform from multiple platforms
Platform as a service (PAAS) is generally considered as one of the three major cloud computing service delivery models, and the other two are infrastructure as a service and software as a service. It accelerates cloud application development, provides managed infrastructure, simple and flexible resource allocation, and rich tools and services to help achieve efficient code and runtime performance.
However, the term masks the wide diversity of cloud platforms. Thick look, windows ® azure Gamma There doesn't seem to be much in common with Google App Engine or force.com. Amazon Web Services Gamma (AWS Gamma )In a totally different way, IAAs gradually moved to PAAS. Private platforms, such as those provided by VMware ®, meet other needs. This article introduces some leading cloud computing platforms and provides guidance on the use cases that these cloud computing platforms can handle.
History
PAAS is a combination of two trends:
- IAAs is not the ideal cloud computing platform.
- The evolution of web applications.
Infrastructure services provide many advantages for customers who want to expand or migrate their applications to the cloud environment; however, infrastructure services usually run on platforms designed for desktop or traditional client server environments. They may be virtualized by now, but they are not optimized for the cloud.
The second notable trend is the evolution of web hosting sites. GeoCities and others have provided HTML hosting services since the mid-1990s; however, the number of web hosting services has grown at an alarming rate, supporting a variety of active server-side components, including Microsoft ® asp.net and Java Gamma Technology, as well as PHP, Python and Ruby on rails scripts. These platforms reduce the storage requirements of each application and simplify deployment compared to infrastructure services.
Considerations
When choosing a PAAS cloud, what are the basic choices for cloud application developers, cloud migration experts, or administrators who are implementing the cloud?
- Open cloud, proprietary cloud or hybrid cloud (and hybrid way) Understand some concepts of each category.
- Hosting structure and restrictions: what content is supported, what content is not supported, and so on.
- Resource allocation: automation, ease to tap, whether resource allocation is as simple as allocation, etc.
- Data storage functions and methods: persistent automatic storage or storage on request, etc
- Supported development and management tools
- Performance and transaction type and number.
- Security of various cloud components: how to achieve security?
Google App Engine
Google App Engine is one of the best known platforms. In addition to providing a basic runtime environment, it eliminates system management and development challenges that can be encountered in building applications that scale to millions of users. It provides tools to deploy code to a cluster and features such as monitoring, failover, automatic scaling, and load balancing.
Google App Engine initially only supports Python based runtime environment, and then adds support for Java virtual machines (JVM). Therefore, it can not only support applications written in Java, but also applications written in other JVM languages, such as groovy, jruby, Jython, Scala or clojure. The software development toolkit includes a complete local development environment, which can simulate Google App Engine on the developer's desktop.
Google App Engine has some restrictions on programming languages. For example, python modules must be pure Python modules because C and Pyrex modules are not supported. Similarly, Java applications can only use a subset of the Java runtime environment (JRE) Standard Edition class (JRE class white list; see resources); they cannot create new threads.
C
Listing 1 shows a simple "Hello world" Application in Google App Engine.
Listing 1. Google App Engine "Hello world"
from google.appengine.ext import webappfrom google.appengine.ext.webapp.util import run_wsgi_appclass MainPage(webapp.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/plain' self.response.out.write('Hello, World!')application = webapp.WSGIApplication( [('/', MainPage)])def main(): run_wsgi_app(application)if __name__ == "__main__": main()
The actual code used by different applications is significantly different. As shown in the python example in Listing 1, if the application logic is minimal, the command is very simple. You need to import some modules contained in the SDK and define a request handler mainpage, which processes all HTTP get requests to the root URL. This method can write HTTP responses using the self.response object. The run WSGI app () function takes an instance of the WSGIApplication and runs it in the Common Gateway Interface (CGI) environment of the Google App Engine. If you don't have a lot of requirements, it's enough to use the code content.
MainPage
GET
self.response
run_wsgi_app()
WSGIApplication
Google App Engine datastore uses optimistic concurrency control to support queries, sorting, and transactions. This is a highly consistent distributed tree database, which is based on the low-level BigTable data storage system and adds some additional functions. The query language of Google App Engine (called GQL) is similar to structured query language (SQL) in the select statement, but there are some clear limitations. For example, GQL does not support join statements, so it can only accept a single table query.
SELECT
JOIN
Despite its limitations, the environment provides a rich set of application programming interfaces (APIs). In addition to the data storage functions mentioned earlier, it also provides a set of library functions:
- Authentication. Applications can interact with Google accounts for user authentication. It can guide users to log in to Google accounts and access email addresses, and display user names after users complete authentication. Openid users can also create an identity at any openid provider and use that identity to authenticate Google App Engine applications.
- Memcached。 The memcached service provides a memory key value pair cache for applications, which can be accessed by multiple application instances. It will be useful not to use persistence and transactional features for temporary data, such as caching the data store locally for high-speed access.
- Schedule tasks. The cron service allows users to schedule tasks that run at regular intervals, for example, daily or hourly. The application can even perform tasks added to the queue itself. For example, it can submit background tasks when processing requests.
cron
cron
Although web and worker are the most common types of roles, windows azure provides additional templates for specific needs. For example, CGI web roles support the fastcgi protocol, so they can support other programming languages, including PHP, ruby, python, and Java. Windows Communications Foundation (WCF) is a web role that simplifies WCF service support. Windows azure now also provides an infrastructure service (in the form of VM), which can accept the upload of Windows Server ® 2008 R2 VM image.
Windows azure storage provides services that can host three kinds of data:
- Blobs. Blobs are unstructured data streams (or at least fuzzy data); data can be a picture, a file, or whatever an application needs.
- Table. Tables are used to store structured data. They usually hold rows of the same type (called entities) that are defined according to columns (called attributes). Although there are some conceptual similarities, there are still some significant differences between windows azure storage tables and relational tables. Windows azure does not enforce the use of patterns or support SQL as the query language.
- Queue. Queues provide a mechanism for applications to perform asynchronous communication and coordination.
The term "fabric" in the windows azure term refers to a group of machines running the windows azure operating system, which are jointly managed and usually located in the same area. Fabric controller is a code layer that assigns all user instances (web and worker roles) and performs any necessary updates. It also monitors applications, reassigns and allocates resources as needed, and ensures that all services are functioning properly.
Force.com
Salesforce.com also delivers a PAAS called force.com. It's different from Google's and Microsoft's products. It also provides managed services based on its own technology, and provides common features such as redundancy, security and scalability. But force.com focuses more on data processing than code processing.
External programming access
Force.com exposes all user specific configurations (tables, reports, workflows, user privileges, customization, and business logic) as metadata and programmatically accesses them. It provides a Web Services API (soap) that allows access to all force.com application data from any environment. The platform also provides a developer's toolkit for prepackaged connectors (SAP R / 3 and Oracle financials), desktop software (Microsoft office, IBM ® Lotus Notes ®), and Middleware (Tibco, pervasive, IBM cast iron ®) for Microsoft. Net, Java, Facebook, Google, AWS, and ERP. In addition to regular data access, force.com uses an external search engine that provides a complete index and allows search for unstructured data.
Apex
The force.com application is built with visualforce and apex. The visualforce framework is used to create a graphical user interface, and apex is a special programming language. The syntax used is similar to Java, but the behavior is more similar to the database storage process (see Listing 2).
Listing 2. Apex account update
// This class updates the Hello field on account records that are// passed to it.public class MyHelloWorld { public static void addHelloWorld(Account[] accs){ for (Account a:accs){ if (a.Hello__c != 'World') { a.Hello__c = 'World'; } } }}
Force.com has three kinds of program logic:
- Declarative logic (audit log, workflow, and approval)
- Formula based logic (data validation and workflow rules)
- Procedural logic (apex triggers and classes; Listing 3)
Listing 3. Apex trigger
trigger helloWorldAccountTrigger on Account (before insert) { Account[] accs = Trigger.new; MyHelloWorld.addHelloWorld(accs);}
Apex can be run as a stand-alone script as needed, or as a trigger when a data event occurs, as shown in Listing 3. The language allows developers to add business logic to events, such as clicking buttons or updating records and visual force pages. Workflow logic can trigger tasks, send electronic messages, update databases, and interact with external applications by sending outgoing SOAP messages to any Internet destination.
Amazon Web Services
Amazon is the market leader and de facto standard for infrastructure services. The main difference between AWS and more typical platform services is that Amazon does not have a specific runtime environment. You can use one of Amazon's pre built machine images, but it's not limited to these machines. You can run almost any platform in an Amazon environment.
The corollary of this is that while Amazon provides a way to manage and distribute VMS, it does not directly provide specific functionality to manage applications.
Figure 1 provides an Amazon elastic compute cluster (Amazon EC2 Gamma )An example of the interface.
Figure 1. Amazon EC2
click to enlarge
The core component of AWS is Amazon EC2 and its additional storage services. Amazon EC2 provides users with a template selection that can be instantiated in a shared virtualization environment (as shown in Figure 1). Each VM is invoked in Amazon Machine Image (AMI). Amazon AMI does not have any persistent storage, but can use them for logs, results, and intermediate data while instances remain active. Due to the loss of locally installed AMI disks during instantiation, Amazon also provides two permanent storage functions: Amazon Simple Storage Service (Amazon S3) implements key value storage, while Amazon elastic block store (Amazon EBS) provides the foundation of file system.
More structured data can also be stored in Amazon simpledb. Use them for general queries or Amazon relational database service (Amazon RDS), a web service that can set up, run, and extend relational databases in the cloud.
In addition to computing and storage, Amazon offers a range of value-added services, including content delivery, queue notification, load balancing, auto scaling, provisioning, and monitoring.
One of Amazon's biggest initiatives in providing full PAAS support is the release of AWS elastic Beanstalk, a service for Java developers and built on the Apache Tomcat software stack. Users can use AWS management console, AWS toolkit for eclipse, Web Services API or command-line tools to upload any standard Java Web Application Archive file to AWS elastic beanstalk.
VMware
Hosting applications in a private data center gives you maximum control and flexibility. After you install Apache or Microsoft Internet information services (IIS) on the selected hardware using any web framework you need, you can upload applications that have been developed in your own environment. You can choose your own programming language, and you are free to implement any necessary interfaces to connect to legacy or partner systems. You only need to install PHP, python / Django, ruby / rails, or a complete set of Java tool interfaces. The biggest drawback is that you can't automatically get anything about cloud computing. You can reproduce these advantages internally, but doing so requires a lot of work and a certain amount of investment, which may only be suitable for large enterprises.
For those who decide to implement a private cloud, some tools, products, and services may be needed to gain performance, utilization, and automation benefits. VMware's powerful virtualization technology portfolio can help meet these needs.
Most of VMware's cloud oriented activities are carried out in its VMware vcloud program. Vcloud represents some of the supporting technologies, including VMware vSphere, vcloud API, and vcloud service provider ecosystem. VSphere platform is the flagship product of VMware. It is a virtualization framework that can manage large infrastructure pools, including software and hardware from internal and external networks. The vcloud API is a representational state transfer interface and restful, which is used to provide and consume virtual resources in the cloud. It supports deployment and management of virtualization workloads in private, public, and hybrid clouds. This API supports the upload, download, instantiation, deployment, and operation of virtual devices (VAPPs), networks, and virtual data centers. The two main components of the vcloud API are the user API (focusing on the assignment of the vcloud) and the admin API (for platform / tenant management).
Vcloud service provider ecosystem is a common collection of cloud computing services. It is oriented to enterprises and service providers, supports any application or operating system, and can choose the location of the application (local or remote). It is delivered by service providers such as terremark and hosting.com, including applications that can be used as virtual devices.
In addition to infrastructure oriented products, VMware vfabric provides a private platform service that combines the spring java development framework with a number of integration services, including application server, data management, cloud ready messaging, load balancing, and performance management.
IBM SmartCloud Application Services
IBM also offers IAAs (IBM smartcloud enterprise) and PAAS (IBM smartcloud application services) for users who want to take advantage of the advantages of the public cloud and require enterprise standards in security, customization, and internal application integration. The two are closely related because IBM smartcloud application services automatically deploy virtual resources to IBM smartcloud enterprise. Together, they deliver a secure, collaborative, cloud based environment that supports and accelerates the full application lifecycle of development, deployment, and delivery. Figure 2 provides an example of the IBM smartcloud application services interface. .
Figure 2. IBM SmartCloud Application Services
click to enlarge
IBM smartcloud application workload services includes advanced pattern technologies originally introduced in IBM workload deployer. This advanced pattern technology provides the ability to easily create, deploy, and manage professional technology patterns. Based on years of experience, the professional technology model embeds the best implementation, configuration, management and monitoring practices, which can realize specific software solutions. These patterns are provided by IBM and independent software vendors through an online catalog. The expertise model has been simplified to create value quickly while ensuring consistent, predictable results. Users can also use the integration tools included with IBM smartcloud application workload services to create customized professional technology patterns and share them across the organization.
This advanced pattern technology is also included in IBM's new puresystems family:
- IBM PureApplication Gamma System: a platform system designed and optimized specifically for transactional Web and database applications and their workload aware features.
- IBM PureFlex Gamma System: a platform that contains patterns for managing storage, networking, RAS, installation, and security tasks.
Standardization and portability
Each of these platforms has its own advantages and disadvantages. The biggest challenge for developers is that these platforms are different. It is difficult for an application developed on one platform to run normally on another.
In order to protect user investment and reduce the risk of supplier binding, there is a growing demand for platform integration. Many standard organizations have implemented cloud computing from their own perspectives. The most famous plans focus on IAAs, but gradually add PAAS functionality. At a higher level, they use two different methods:
- Eucalyptus and cloudstack provide compatibility with AWS, so using Amazon facilitates hybrid clouds. The advantage of choosing Amazon is that its interface is more recognized, and AWS provides a huge capacity to meet the sudden increase in resource requirements. However, Amazon has APIs and can choose to develop them in any direction, which means they are not completely open.
- Openstack is a collection of open source technology projects co sponsored by a broad alliance of industry leaders, including IBM. It provides an operating platform for organizing the cloud on a large scale. It is neutral to the hypervisor and includes software that assigns VMS to standard hardware. In addition to the compute pool, it provides a distributed object store, a scheduler, network controller, and authentication manager.
Concluding remarks
As these standards initiatives mature, you can expect that an industry standards platform will become more specific and exceed the many features described in this article. In the process, you need to try out different platforms and software stacks.
Because each platform has its own advantages and disadvantages, users need to further view their requirements in programming language and development tools, as well as their dependence on infrastructure in connection, scalability and security. The good news is that you have many choices, which increases the chances of finding the right platform for you. But the bad news is that users have to make choices, which is not easy.
- Watch the demo to get started with IBM smartcloud application services.
- View tutorials on Google App Engine, windows azure, force.com, and AWS.
- Learn about VMware vcloud, openstack, cloudstack, and Eucalyptus cloud
- Explore developerWorks cloud computing, where you can find valuable community discussions and learn about new technology resources related to the cloud.
- Keep an eye on developerWorks technology events and webcasts, and on a variety of IBM products and it industry topics.
- Watch the developerWorks demo, which includes product installation and setup demos for beginners and advanced features for experienced developers.
- Evaluate IBM products in the best way for you: Download product trials, try products online, use products in a cloud environment, or learn how to efficiently implement a service-oriented architecture in an SOA sandbox.