PROFESSIONAL SERVICES – BUSINESS EFFICIENCY STRATEGY
HELPING ENTERPRISES BUILD A PLATFORM AS A SERVICE (PaaS)
A Cloud Infrastructure consists of Three ‘Stacks’ which we call ‘Cloud Stacks’ or ‘Business Efficiency Cloud Stack’. The following are the three Cloud Computing Stacks;
- IaaS is the hardware and software that powers it all – servers, storage, networks, operating systems
- PaaS is the set of tools and services designed to make coding and deploying those applications quick and efficient
- SaaS applications are designed for end-users, delivered over the web
To help understand how these 3 components are related, some have used a transportation analogy; By itself, infrastructure isn’t useful – it just sits there waiting for someone to make it productive in solving a particular problem. Imagine the Interstate transportation system in the U.S. Even with all these roads built, they wouldn’t be useful without cars and trucks to transport people and goods. In this analogy, the roads are the infrastructure and the cars and trucks are the platform that sits on top of the infrastructure and transports the people and goods. These goods and people might be considered the software and information in the technical realm. It is important to note that for illustration purposes we draw a clear distinction between SaaS, PaaS and IaaS, but the differences between these categories of cloud computing, especially PaaS and IaaS, have blurred in recent months and will continue to do so.
Business Efficiency Platform as a Service (PaaS)
PaaS can be defined as a computing platform that allows the creation of web applications quickly and easily and without the complexity of buying and maintaining the software and infrastructure underneath it. PaaS is analogous to SaaS except that, rather than being software delivered over the web, it is a platform for the creation of software, delivered over the web.
Characteristics of PaaS
There are a number of different takes on what constitutes PaaS but some basic characteristics include;
- Services to develop, test, deploy, host and maintain applications in the same integrated development environment. All the varying services needed to fulfill the application development process
- Web based user interface creation tools help to create, modify, test and deploy different UI scenarios
- Multi-tenant architecture where multiple concurrent users utilize the same development application
- Built in scalability of deployed software including load balancing and fail over
- Integration with web services and databases via common standards
- Support for development team collaboration – some PaaS solutions include project planning and communication tools
- Tools to handle billing and subscription management
PaaS, which is similar in many ways to Infrastructure as a Service is differentiated from IaaS by the addition of value added services and comes in two distinct flavors;
1. A collaborative platform for software development, focused on workflow management regardless of the data source being used for the application. An example of this approach would be Heroku, a PaaS that utilizes the Ruby on Rails development language.
2. A platform that allows for the creation of software utilizing proprietary data from an application. This sort of PaaS can be seen as a method to create applications with a common data form or type. An example of this sort of platform would be a Platform which is used almost exclusively to develop applications that work with one single SaaS Application.
Where PaaS Makes Sense
PaaS is especially useful in any situation where multiple developers will be working on a development project or where other external parties need to interact with the development process. As the case study below illustrates, it is proving invaluable for those who have an existing data source – for example sales information from a customer relationship management tool, and want to create applications which leverage that data. Finally PaaS is useful where developers wish to automate testing and deployment services.The popularity of agile software development, a group of software development methodologies based on iterative and incremental development, will also increase the uptake of PaaS as it eases the difficulties around rapid development and iteration of software. Some examples of PaaS include Google App Engine and Microsoft Azure Services platform.
Where PaaS May Not be the Best Option
We contend that PaaS will become the predominant approach towards software development. The ability to automate processes, use pre-defined components and building blocks and deploy automatically to production will provide sufficient value to be highly persuasive. That said, there are certain situations where PaaS may not be ideal, examples include;
- Where the application needs to be highly portable in terms of where it is hosted
- Where proprietary languages or approaches would impact on the development process
- Where a proprietary language would hinder later moves to another provider – concerns are raised about vendor lock-in
- Where application performance requires customization of the underlying hardware and software
Our Business Efficiency Cloud Strategy Consulting services help an enterprise build a ‘best-of-breed’ private cloud solution comprising of IaaS and SaaS portions of the ‘Cloud Stack’. We use OpenStack as the IaaS platform and CloudFoundry as the PaaS. This is the same technology that Intel, IBM and HP use (with minor variations) to provision their cloud services. Several other IT organizations also provision CloudFoundry on OpenStack as their landing platform for SaaS applications. The systematic approach includes formulating a strategy of consolidation ‘inside-out’ – meaning that we take your Data Center and ‘Cloud-Enable’ the Data Center first. This internal transformation makes it easier to move towards the Public cloud.;
The Software-as-a-Service (SaaS) industry continues to grow rapidly. The success of SaaS is driving broad change across the technology industry. Software vendors large and small are contemplating how to adapt to the new paradigms of the SaaS market, while a large number of developers across the world are moving to SaaS application development. In addition, the increase in SaaS application consumption and development is driving the need for a new set of platform technologies built specifically to support SaaS. Below we outline the key attributes that characterize a “best-in-class” Platform-as-a-Service (PaaS) offering – a cloud-enabled application development platform.
1. Multi-tenant architecture
A PaaS offering must be multi-tenanted. A multi-tenant platform is one that uses common computing resources including hardware, operating system, software (i.e. application code), and a single underlying database with a shared schema to support multiple customers simultaneously. This is in direct contrast to the traditional client/server architecture, which requires an entire stack of hardware and software to be dedicated to each tenant (customer).
Multi-tenancy benefits enormously from the magic of something called collective innovation. When hundreds or even thousands of other businesses/customers are using exactly the same operational infrastructure, all of them benefit from each of the different ways in which they’re challenging and stretching that shared infrastructure. All of them have access to the newest functionality that’s introduced at the behest of the early adopter minority. All of them benefit from the hardening of the infrastructure after any of them come in contact with a newly detected threat.
The strength of multi-tenancy is that each of its individual tenants keeps it constantly evolving. This is in stark contrast to single tenancy, the whole point of which is to limit evolution only to those changes that are perceived to directly benefit the individual tenant. In truth, multi-tenancy makes the difference between a SaaS application that’s destined for rapid obsolescence and one that will continue to evolve with the cloud and all the wealth of possibility that’s opening up in the connected Web.
2. Customizable /Programmable User Interface
The PaaS offering should provide the ability to construct highly flexible user interfaces via a simple “drag & drop” methodology that permits the creation and configuration of UI components on the fly. In order to jump-start the construction of user interfaces/displays, pre-defined standard UI components should be available that can be assembled in building-block fashion with minimal coding. For further customization of the UI, which may be necessary to accommodate specific user requirements, there should be the option to easily leverage or invoke a tag library of other complementary, more sophisticated, reusable UI components (grids, tree-like hierarchies, etc.) through simple HTML code without the need of writing complex code.
Furthermore, given the growing set of Web devices, additional flexibility to use other technologies such as CSS, AJAX and Adobe Flex to specify the appearance of the application’s interface should be available to the UI designer. The PaaS offering must afford UI designers/developers complete fine-grained control to shape the presentation of data to a specific context – for example, displaying the data in one format when viewed on a hand-held device and in another format when viewed in a desktop Web browser.
This “drag & drop” paradigm of constructing user interfaces, an essential capability of a robust PaaS offering, provides UI designers/developers with better control over the appearance of the application’s interface and permits the creation of new and sophisticated presentation layers quickly and easily without requiring much custom coding.
3. Unlimited Database Customization
Data persistence is core to many applications. Facilitating the creation, configuration and deployment of persistent objects without requiring programming expertise is a key characteristic of a powerful “cloud platform.” Thus, the PaaS offering must support the construction of objects, the definition of relationships between the objects and the configuration of advanced data behavior all from within the comfort of the Web browser via a “point and click” declarative paradigm.
As opposed to a relational database where tables are used to store data, objects constitute the fundamental building blocks for cloud-based applications. Through a declarative Web interface that provides complete visual control at the meta-data level, application designers/developers should be able to define objects along with the fields/attributes that determine what kind of data is stored within each object record. Specifying relationships between objects, a key requirement of any sophisticated business application, must be possible through the declarative Web-based interface as well. Other mandatory functions include the ability to incorporate validation rules and permissions at the object/field level and the ability to specify auditing behavior.
4. Robust Workflow engine/capabilities
Successful business process execution via process automation is the primary objective of any business application. A cloud platform must offer a business-logic engine that supports the definition of workflow processes and the specification of business rules to engender process automation.
A workflow process defines the different statuses a business object flows through during its life cycle. Workflow actions drive the object through different statuses within the context of a workflow process and can be triggered either through human intervention (assuming the user has the required permission to execute/invoke the action) or an event (the creation of a specific object record).
5. Granular control over security/sharing (permissions model)
The PaaS offering should provide a flexible access control system that allows detailed control over what users of the SaaS application can see and the data each user can access. Definition of access from the application level (including tabs, menus, objects, views, charts, reports and workflow actions) to the individual field level should be possible. Defining an access control model should be possible through the creation of groups and roles and the assignment of users to either groups or roles.
For complex large-scale implementations, the ability to define which features and data each user can access should be available so users can be segmented across common organizational structures to provide fine-grained access to data/application features.
6. Flexible “services-enabled” integration model
Platform-as-a-Service facilitates the rapid construction of applications in the cloud by providing foundational elements, such as data persistence and workflow capabilities, that are essential to the creation of any business application. However, given the complex IT environments that permeate most enterprises today, the PaaS offering should leverage Service Oriented Architecture (SOA) principles to enable seamless integration of cloud application data and functionality residing in the cloud platform with other on-premise/on-demand systems and applications.
At a minimum, the PaaS offering must support a flexible integration model enabled via both SOAP and REST API calls. The respective Web-based APIs should provide standard CRUD (create, read, update, delete) methods as well as search, binary file upload/download methods for working with file and image fields, methods for working with relationships, and a method for retrieving a full XML representation of an object definition and all of its components. The APIs must adhere to the same permissions and access control restrictions that have been specified via the security model.
Furthermore, to accelerate the integration between cloud applications and on-premise enterprise systems, the cloud platform should provide a range of pre-built connectors. For example: Utilize pre-built ERP connectors to send order information captured via a cloud-based CRM application to an on-premise order management system for order fulfillment (i.e. order delivery, invoicing and billing) to realize the order-to-cash business process.