Exploring Platform as a Service - Using Platforms - Cloud Computing Bible (2011)

Cloud Computing Bible (2011)

Part II: Using Platforms

Chapter 7: Exploring Platform as a Service

IN THIS CHAPTER

Understanding the PaaS service model

Learning about PaaS development

Viewing examples of PaaS sites and tools

Discovering common PaaS-built application features

The Platform as a Service model provides the tools within an environment needed to create applications that can run in a Software as a Service model. For this reason, some overlap between vendors has created Software as a Service products, and those vendors have broadened their services to make their Web applications more customizable. Salesforce.com, the largest CRM application service company in the world, is an example, with Force.com being its PaaS (Platform as a Service) offering.

Applications developed in PaaS systems can be composite business applications, data portals, or mashups with data derived from multiple sources. PaaS environments can offer integrated lifecycle management or anchored lifecycle applications. An integrated system provides a broad range of tools for customization, whereas an anchored system is based on already established software.

Application frameworks are a particularly powerful tool for creating cloud computing applications. For this reason, many vendor products are based on this model. In other chapters, you learn about Google AppEngine and Windows Azure Platform. This chapter presents several examples of PaaS systems that can create captive hosted applications, portable applications, extended blogs or content management systems, or rich Internet data applications. Some of the sites you learn about in this chapter with PaaS tools include Drupal, Eccentex AppBase, LongJump, SquareSpace, and WaveMaker.

Each of these systems or tools presents a very different aspect of cloud application development. What all these tools have in common is that they are standards-based.

Defining Services

In many ways, the Platform as a Service model is the most interesting of all the hosted services in cloud computing. IaaS offers a service that is akin to installing an application on a computer. That computer is virtual, of course, but it is still a computer. By the time you are using an SaaS model, the software is pretty well mapped out for you. You can do some modest customization, some branding perhaps, but the software's capabilities and design has largely been worked out.

With Platform as a Service systems, you are given a toolkit to work with, a virtual machine to run your software on, and it is up to you to design the software and its user-facing interface in a way that is appropriate to your needs. So PaaS systems range from full-blown developer platforms like Windows Azure Platform to systems like Drupal, Squarespace, Wolf, and others where the tools are modules that are very well developed and require almost no coding. Many Content Management Systems (CMS) are essentially PaaS services where you get standard parts and can build Web sites and other software like Tinker Toys.

Thus you find that PaaS models span a broad range of services, including these, among others:

Application development: A PaaS platform either provides the means to use programs you create in a supported language or offers a visual development environment that writes the code for you.

Collaboration: Many PaaS systems are set up to allow multiple individuals to work on the same projects.

Data management: Tools are provided for accessing and using data in a data store.

Instrumentation, performance, and testing: Tools are available for measuring your applications and optimizing their performance.

Storage: Data can be stored in either the PaaS vendor's service or accessed from a third-party storage service.

Transaction management: Many PaaS systems provide services such as transaction managers or brokerage service for maintaining transaction integrity.

PaaS systems exist to allow you to create software that can be hosted as SaaS systems or to allow for the modification of existing SaaS applications. You've seen many examples of PaaS systems already, and whole chapters are dedicated to vendor-specific PaaS platforms. The next chapter describes the Google AppEngine, which is a system for deploying Web applications on Google infrastructure. Chapter 10 describes the Windows Azure Platform with its emphasis on creating Windows applications using the .NET Framework on Microsoft infrastructure.

A good PaaS system has certain desirable characteristics that are important in developing robust, scalable, and hopefully portable applications. On this list would be the following attributes:

• Separate of data management from the user interface

• Reliance on cloud computing standards

• An integrated development environment (IDE)

• Lifecycle management tools

• Multi-tenant architecture support, security, and scalability

• Performance monitoring, testing, and optimization tools

The more vibrant the associated market of a PaaS's third-party add-ons, applications, tools, and services, the better they are. These extras allow you to extend your application by buying functionality, which is almost always cheaper than having to roll your own.

Salesforce.com versus Force.com: SaaS versus PaaS

There can be no better example illustrating the difference between a SaaS and PaaS system than that of Salesforce.com and Force.com. Salesforce.com is a Web application suite that is an SaaS. Force.com is Salesforce.com's PaaS platform for building your own services.

Salesforce.com was formed by several Oracle employees in 1999 to create a hosted Customer Relationship Management (CRM) system. CRM has long been one of Oracle's core database services. The Salesforce.com team created hosted software based on a cloud computing model: pay as you go, simple to use, and multifunctional. The Salesforce.com platform looks like a typical Web site such as Amazon.com, with a multi-tabbed interface—each tab being an individual application.

Shown in Figure 7.1 is a Salesforce.com portal with the multi-tabbed interface exposing the different applications.

FIGURE 7.1

In Salesforce.com, each tab is an application, and data is shared. Shown here is a dashboard view.

9780470903568-fg0701.tif

Some of the applications included in the site are:

• Accounts and Contact

• Analytics and Forecasting

• Approvals and Workflow

• Chatter (Instant Messaging/Collaboration)

• Content Library

• E-mail and Productivity

• Jigsaw Business Data

• Marketing and Leads

• Opportunities and Quotes

• Partner Relationship

• Sales

• Service and Support

Which tabs you see, and how capable each hosted application is, depends on the level of service you purchase from Salesforce.com, as well as the particular type of bundle you buy. Salesforce.com tailors its SaaS for individual industries.

As Salesforce.com developed its SaaS production, it became obvious that many customers wanted to extend their Salesforce.com applications beyond what an SaaS offering would allow. Salesforce.com developed a PaaS platform known as Force.com, which allows developers to create applications that could be added to Salesforce.com's offerings and hosted on Salesforce.com's infrastructure.

Figure 7.2 shows the Force.com platform page at Salesforce.com.

Force.com uses a Java-based programming language called Apex for its application building, and it has an interface builder called Visualforce that allows a developer to create interfaces using HTML, Flex, and AJAX. Visualforce uses an XML-type language in its visual interface builder. Using the Force.com platform, more than 1,000 applications have been created and are offered for sale on Salesforce.com's AppExchange, which has greatly enhanced its PaaS offerings. These applications can show up as customizable tabs for different functions in customer applications or as a set of S-controls that are JavaScript widgets.

Because Salesforce.com is browser-based, it is platform-independent. However, the company has extended its audience to mobile devices, such as the Android, Blackberry, iPhone, and Windows Mobile Devices. It also has a server product that supports Salesforce.com applications in-house called the Resin Application Server.

Force.com has been a major hit and has served as the model from many of the PaaS systems of today. The company Salesforce.com is a recognized thought leader in the field of cloud computing. It is a $1.3 billion company as of 2009, with over 2 million subscribers.

FIGURE 7.2

Force.com's Web site (http://www.salesforce.com/platform/) leads to a set of developer tools as well as a gallery of sites built on this PaaS.

9780470903568-fg0702.tif

Application development

A PaaS provides the tools needed to construct different types of applications that can work together in the same environment. These are among the common application types:

• Composite business applications

• Data portals

• Mashups of multiple data sources

A mashup is a Web page that displays data from two or more data sources. The various landmarks and overlays you find in Google Earth, or annotated maps, are examples of mashups.

These applications must be able to share data and to run in a multi-tenant environment. To make applications work together more easily, a common development language such as Java or Python is usually offered. The more commonly used the language is, the more developers and developer services are going to be available to help users of platform applications. The use of application frameworks such as Ruby on Rails is useful in making application building easier and more powerful.

Most of the application building tools in this chapter create their own frameworks. Many are based on visual tools, and often these tools allow developers to extend applications using a common language for Web application development. These applications almost always adopt a Service Oriented Architecture model and use SOAP/REST with XML data exchange.

All PaaS application development must take into account lifecycle management. As an application ages, it must be upgraded, migrated, grown, and eventually phased out or ported. Many PaaS vendors offer systems that are integrated lifecycle development platforms. That is, the vendor provides a full software development stack for the programmer to use, and it isn't expected that the developer will need to go outside of the service to create his application.

An integrated lifecycle platform includes the following:

• The virtual machine and operating system (often offered by an IaaS)

• Data design and storage

• A development environment with defined Application Programming Interfaces

• Middleware

• Testing and optimization tools

• Additional tools and services

Google AppEngine, Microsoft Windows Azure Platform, Eccentex AppBase, LongJump, and Wolf are examples of integrated lifecycle platforms. The latter three services are described in this chapter. Refer to Chapter 8 to read about AppEngine, and see Chapter 10 to learn about Azure.

Some PaaS services allow developers to modify existing software. These services are referred to as anchored lifecycle platforms. Examples of an anchored lifecycle platform are QuickBooks.com and Salesforce.com. The applications in these two services are fixed, but developers can customize which applications the users see, how those applications are branded, and a number of features associated with the different applications. An anchored service offers less customization, but has a faster development cycle and may be less prone to software errors.

Using PaaS Application Frameworks

Application frameworks provide a means for creating SaaS hosted applications using a unified development environment or an integrated development environment (IDE). PaaS IDEs run the gamut from a tool that requires a dedicated programming staff to create and run to point-and-click graphical interfaces that any knowledgeable computer user can navigate and create something useful with.

In selecting the six different examples of Web sites and application building PaaS systems, a full range of user experience is considered. Many Web sites are based on the notion of information management and organization; they are referred to as content management systems (CMS). A database is a content management system, but the notion of a Web site as a CMS adds a number of special features to the concept that includes rich user interaction, multiple data sources, and extensive customization and extensibility. The Drupal CMS was chosen as an example of this type of PaaS because it is so extensively used and has broad industry impact, and it is a full-strength developer tool.

Whereas Drupal is used in major Web sites and organizes vast amounts of information, the site Squarespace.com was chosen to illustrate a point-and-click CMS system aimed at supporting individuals, small businesses, and other small organizations. Squarespace is often associated with blogging tools (as is Drupal), but it is more than that. Squarespace works with photos, imports information from other social tools, and allows very attractive Web sites to be created by average users.

Caution

The portability of the applications you create in a PaaS is an extremely valuable feature. If your service goes out of business, being able to port an application by simply redeploying that application to another IaaS can be a lifesaver.

Eccentex AppBase, LongJump, and Wolf were chosen as examples of developer-oriented services aimed at users and developers who want to create Web-based applications based on Service Oriented Architecture protocols and services. These services vary in some details, but they have these common characteristics:

• They separate data-handling from presentation (user interface).

• They offer tools for establishing business objects or entities and the relationships between them.

• They support the incorporation of business rules, logic, and actions.

• They provide tools for creating data entry controls (forms), views, and reports.

• They provide instrumentation, tools for measuring application performance.

• They support packaging and deployment of applications.

These services differ in which language they use, support for different rendering technologies, and in other features. For the most part, they provide point-and-click tools where snippets of code provide exception programming. These services are extensible and customizable through application code. The goal of these services is to create portable applications, although each service includes a hosting platform for developed applications. Some cloud application platforms such as WorkXpress (http://www.workxpress.com) describe their environment as a 5GL PaaS (Fifth Generation) as opposed to something like Force.com, which they call a 3GL/4GL PaaS because 5GL environments have no programming requirement and you can host your application anywhere.

A 5GL programming language solves problems by acting on constraints and inputs and then uses intelligence to solve the problem. By comparison a 4GL programming language requires the programmer to build modules to solve specific problems. For a description of early programming language generations you may want to read the following reference: http://en.wikipedia.org/wiki/Programming_language_generations.

Drupal

Drupal (http://drupal.org/) is a content management system (CMS) that is used as the backend to a large number of Web sites worldwide. The software is an open-source project that was created in the PHP programming language. Drupal is really a programming environment for managing content, and it has elements of blogging and collaboration software as part of its distribution. Drupal is offered to the public under the GNU General Public License version 2 and is used by many prominent Web sites. The Drupal core is the standard distribution, with the current version being 6.19; version 7.0 is in preview.

Drupal is in this section because it is a highly extensible way to create Web sites with rich features. Druplas has a large developer community that has created nearly 6,000 third-party add-ons called contrib modules. Several thousand Drupal developers worldwide come together twice a year at the DrupalCon convention. It's a vibrant community of users and developers.

The number of Web sites that use Drupal is really quite remarkable, and many of them are very well known. Drupal is very popular with government agencies and with media companies, but its reach extends into nearly any industry, organization, and business type you can think of. Some of these sites are beautifully constructed. A short list of sites includes att.com, data.gov.uk, gouvernement.fr, intel.com, lucasfilms.com, mattel.com, thenation.com, whitehouse.gov, and ubuntu.com. Drupal has a gallery of screenshots of sites and features on its Web site, but for a better look at some of the more attractive sites, go to the Showcase of Popular Web sites Developed Using Drupal CMS (http://artatm.com/2010/02/showcase-of-popular-website-developed-using-drupal/), shown in Figure 7.3.

You find Drupal applications running on any Web server that can run PHP 4.4.0 and later. The most common deployments are on Apache, but you also can find Drupal on Microsoft IIS and other Unix Web servers. To store content, Drupal must be used with a database. Because LAMP installations are a standard Web deployment platform, the database most often used is MySQL. Other SQL databases work equally well.

The Drupal core by itself contains a number of modules that provide for the following:

• Auto-updates

• Blogs, forums, polls, and RSS feeds

• Multiple site management

• OpenID authentication

• Performance optimization through caching and throttling

• Search

• User interface creation tools

• User-level access controls and profiles

• Themes

• Traffic management

• Workflow control with events and triggers

FIGURE 7.3

Artatm.com has a gallery of some of the more attractive and well-known sites built with Drupal.

9780470903568-fg0703.tif

Drupal is modular and exposes its functionality through a set of published APIs. The contrib modules can be added to Drupal to replace other modules, enhance capabilities, or provide entirely new features. Third-party modules include messaging systems, visual editors, a content construction kit (CCK) for database schema extension, views, and panels. CCK Fields API is in the latest version of Drupal, version 7.0.

Drupal is reputed to be somewhat difficult to learn, and new versions often break old features. It is much more widely used than its competitor Joomla! (http://www.joomla.org/), and Drupal seems to have better performance than Joomla! as well. Another open source competitor in the content management space is eZ Publish (http://ez.no/).

Eccentex AppBase 3.0

Eccentex is a Culver City, California, company founded in 2005 that has a PaaS development platform for Web applications based on SOA component architecture to create what it calls Cloudware applications using its AppBase architecture. Figure 7.4 shows the AppBase platform page.

FIGURE 7.4

The Eccentex AppBase (http://www.eccentex.com/platform/platform.html) PaaS application delivery platform creates SOA applications that work on several different IaaS vendors.

9780470903568-fg0704.tif

AppBase includes a set of different tools for building these applications, including the following:

Business Objects Build: This object database has the ability to create rich data objects and create relationships between them.

Presentation Builder: This user interface (UI) builder allows you to drag and drop visual controls for creating Web forms and data entry screens and to include the logic necessary to automate what the user sees.

Business Process Designer: This tool is used to create business logic for your application. With it, you can manage workflow, integrate modules, create rules, and validate data.

Dashboard Designer: This instrumentation tool displays the real-time parameters of your application in a visual form.

Report Builder: This output design tool lets you sort, aggregate, display, and format report information based on the data in your application.

Security Roles Management: This allows you to assign access rights to different objects in the system, to data sets, fields, desktop tabs, and reports. Security roles can be assigned in groups without users, and users can be added later as the application is deployed.

Figure 7.5 shows the AppBase architecture with the various tools identified. You can view a set of screenshots that illustrate the different tools and some features in the build process at http://www.eccentex.com/platform/screenshots.html.

FIGURE 7.5

AppBase's architecture with the different tools and modules shown

9780470903568-fg0705.eps

Applications that you create are deployed with the AppBase Application Revision Management console. The applications you create in AppBase, according to the company, may be integrated with Amazon S3 Web Services (storage), Google AppEngine (PaaS), Microsoft Windows Azure (PaaS), Facebook, and Twitter.

LongJump

LongJump (http://www.longjump.com/) is a Sunnyvale, California, company hosting service created in 2003 with a PaaS application development suite. Its development environment is based on Java and uses REST/SOAP APIs. Figure 7.6 shows the LongJump platform page.

FIGURE 7.6

LongJump's PaaS (http://www.longjump.com/index.php?option=com_content&view=article&id=8&Itemid=57) is based on standard Java/JavaScript, SOAP, and REST.

9780470903568-fg0706.tif

LongJump creates browser-based Web applications that are database-enabled. Like other products mentioned in this section, LongJump comes with an Object Model Viewer, forms, reports, layout tools, dashboards, and site management tools. Access control is based on role- and rule-based access, and it allows for data-sharing between teams and between tenants. LongJump comes with a security policy engine that has user and group privileges, authentication, IP range blocking, SSO, and LDAP interoperability. Applications are packaged using a packaging framework that can support a catalog system, XML package file descriptions, and a distribution engine.

LongJump extends Java and uses a Model-View-Controller architecture (MVC) for its framework in the Developer Suite. The platform uses Java Server Pages (JSP), Java, and JavaScript for its various components and its actions with objects built with Java classes. Objects created in custom classes are referenced using POJO (Plain Old Java Object). Localization is supported using a module called the Translation Workbench that includes specified labels, errors, text, controls, and messaging text files (and header files) that allow them to be modified by a translation service to support additional languages. The development environment supports the Eclipse (http://www.eclipse.org/) plug-in for creating widgets using Java standard edition.

Squarespace

Squarespace (http://www.squarespace.com/), shown in Figure 7.7, is an example of a next-generation Web site builder and deployment tool that has elements of a PaaS development environment. The applications are built using visual tools and deployed on hosted infrastructure.

Squarespace presents itself, among other things, as:

• A blogging tool

• A social media integration tool

• A photo gallery

• A form builder and data collector

• An item list manager

• A traffic and site management and analysis tool

The platform has more than 20 core modules that you can add to your Web site. Squarespace sites can be managed on the company's iPhone app.

FIGURE 7.7

Squarespace lets you create beautiful hosted Web sites with a variety of capabilities with visual tools alone.

9780470903568-fg0707.tif

With Squarespace, users have created some very visually beautiful sites. Users tend to fall into these categories: personal Web sites, portfolios, and business brand identification. Although Squarespace positions itself as a competitor to blogging sites such as Wordpress (http://wordpress.org/), Tumblr (http://www.tumblr.com/), Posterous (https://posterous.com/), and other sites of their ilk, the site borders on a full content management system with a variety of useful and eclectic features.

WaveMaker

WaveMaker (http://www.wavemaker.com/) is a visual rapid application development environment for creating Java-based Web and cloud Ajax applications. The software is open-source and offered under the Apache license. WaveMaker is a WYSIWYG (What You See is What You Get) drag-and-drop environment that runs inside a browser. The metaphor used to build applications is described as the Model-View-Controller system of application architecture. In this regard, WaveMaker has some similarities to PowerBuilder (http://www.sybase.com/products/internetappdevttools/powerbuilder).

Figure 7.8 shows the WaveMaker home page. A gallery of features is accessible from that page.

FIGURE 7.8

WaveMaker is a visual development environment for creating Java-based cloud applications.

9780470903568-fg0708.tif

WaveMaker is a framework that creates applications that can interoperate with other Java frameworks and LDAP systems, including the following:

• Dojo Toolkit 1.0 (http://dojotoolkit.org/), a JavaScript library or toolbox

• LDAP directories

• Microsoft Active Directory

• POJO (Plain Old Java Object)

• Spring Framework (http://www.springsource.org/), an open-source application framework for Java that now also includes ACEGI

The visual builder tool is called Visual Ajax Studio, and the development server is called the WaveMaker Rapid Deployment Server for Java applications. When you develop within the Visual Ajax Studio, a feature called LiveLayout allows you to create applications while viewing live data. The data schema is prepared within a part of the tool called LiveForms. Mashups can be created using the Mashup Tool, which integrates applications using Java Services, SOAP, REST, and RSS to access databases.

Applications developed in WaveMaker run on standard Java servers such as Tomcat, DojoToolkit, Spring, and Hibernate. A 4GL version of WaveMaker also runs on Amazon EC2, and the development environment can be loaded on an EC2 instance as one of its machine images.

Wolf Frameworks

Many application frameworks like Google AppEngine and the Windows Azure Platform are tied to the platform on which they run. You can't build an AppEngine application and port it to Windows Azure without completely rewriting the application. There isn't any particular necessity to build an application framework in this way, but it suits the purpose of these particular vendors: for Google to have a universe of Google applications that build on the Google infrastructure, and for Microsoft to provide another platform on which to extend .NET Framework applications for their developers.

If you are building an application on top of an IaaS vendor such as AWS, GoGrid, or RackSpace, what you really want are application development frameworks that are open, standards-based, and portable. Wolf Frameworks is an example of a PaaS vendor offering a platform on which you can build an SaaS solution that is open and cross-platform. Wolf Frameworks (http://www.wolfframeworks.com/) was founded in Bangalore, India, in 2006, and it has offices in the United States.

Wolf Frameworks is based on the three core Windows SOA standard technologies of cloud computing:

• AJAX, asynchronous Java

• XML

• .NET Framework

Wolf Frameworks uses a C# engine and supports both Microsoft SQL Server and MySQL database. Applications that you build in Wolf are 100-percent browser-based and support mashable and multisource overlaid content. Figure 7.9 shows the Wolf Frameworks home page.

The Wolf platform is interesting in a number of ways. Wolf has architected its platform so applications can be built without the need to write technical code. It also allows application data to be written to the client's database server of choice, and data can be imported or exported from a variety of data formats. In Wolf, you can view your Business Design of the software application that you build in XML.

Wolf supports forms, search, business logic and rules, charts, reports, dashboards, and both custom and external Web pages. After you create entities and assign their properties, you create business rules with a rules designer. You can automate tasks via business rules. There are tools for building the various site features such as forms, reports, dashboards, and so on. Connections to the datacenter are over a 128-bit encrypted SSL connection, with authentication, access control, and a transaction history and audit trail. Security to multiple modules can be made available through a Single Sign-On (SSO) mechanism.

FIGURE 7.9

Wolf Frameworks offers an open platform based on SOA standards for building portable SaaS solutions.

9780470903568-fg0709.tif

In Wolf, the data and transaction management conforms to the business rules you create. The data and UI rendering are separate systems. Thus, you can change the UI as you need to without affecting your stored data. Wolf lets you work with Adobe Flash or Flex or with Microsoft Silverlight. You can also use third-party on- or off-premises applications with your SaaS application. A backup system lets you back up data with a single click. Figure 7.10 shows the WOLF platform architecture.

These features enable Wolf developers to create a classic multitenant SOA application without the need for high-level developer skills. These applications are interoperable, portable from one Windows virtual machine to another, and support embedded business applications. You can store your Wolf applications on a private server or in the Wolf cloud.

FIGURE 7.10

The Wolf platform architecture; source: http://www.wolfframeworks.com/platform.asp.

9780470903568-fg0710.eps

Summary

In this chapter, you learned about one of the core service models in cloud computing: Platform as a Service. With PaaS, the goal is to create hosted scalable applications that are used in a Software as a Service model. For this reason, some vendors start out offering SaaS systems and then broaden them to make them more customizable and programmable as PaaS systems.

Applications built using PaaS tools need to be standards-based. They often are constructed using similar sets of tools: data object and relationship builders; process and business logic systems; forms, views, and reporting tools; and more. This chapter looked at some of the better-known PaaS systems and considered what those tools have in common. You learned about a number of tools in this chapter, including Drupal, Eccentex AppBase, Force.com, LongJump, Squarespace, Wolf, and some others.

Chapter 8 continues the discussion of PaaS by describing one of the largest PaaS systems in use today: Google's AppEngine.