Web app development will move to online platforms, despite the trade-offs that approach often requires.
Platform as a service is a form of cloud computing that holds considerable potential to help enterprise developers quickly write and test customer- or employee-facing Web applications, something that companies of all stripes will be under growing pressure to deliver. These online development environments come from a range of vendors, including Salesforce.com (Force.com), Microsoft (Azure, starting next month), and startups such as WaveMaker.
These platforms tend to center around one development language or methodology--not a bad thing for enterprise developers, who aren't looking for just any platform but one that matches their preferences in tools and language, such as .Net, Java, or Ruby on Rails. The platforms promise more efficient coding through automation of tasks such as setting up a newly composed app as a Web service. Most also offer a cloud infrastructure service, or links to vendors such as Amazon.com, so that developers can launch what they build in a cloud infrastructure that can keep up with demand for the new application.
In those cases, the appeal of the platform-as-a-service approach is that you develop using the same standards and technologies as the application will run under in production. This approach cuts out the messy migration of moving an application off a Windows development box and into its target production environment. Debugging also occurs in an environment equal to the target production environment, leading to a surer resolution of bugs.
And it promises faster development. Developers on Force.com built Web apps 4.9 times faster than with conventional Java or .Net methods, Nucleus Research found in a review of 17 Force.com projects last May. That's thanks to Force.com's workflow engine, pre-built user interface, database connectivity, and tested application infrastructure and security.
But platform as a service is still at an early stage. Force.com is one of the most established platforms, and its road map isn't 100% clear, with questions about whether Salesforce will ever support a standard programming language alongside its own Apex. So far, the market's breaking along platform-specific lines: Engine Yard for Ruby on Rails development, WaveMaker for Ajax; Azure for Windows, Visual Studio, and .Net; and Google's AppEngine for Python and Java. To allow faster development and scalability of the cloud, the trade-off is fewer choices for the developer. Sooner or later, an enterprise developer will hit a constraint in the platform that proves unpalatable. Below is what some platform-as-a-service vendors offer, who they might appeal to, and their limitations.
Force.com is built on the Salesforce server infrastructure, and all Force.com apps, like Salesforce CRM, are built around a central database. It will appeal to companies that subscribe to Salesforce, are familiar with its data-centric apps, and are willing to learn its Apex programming language.
Force.com presents a series of wizards and forms that can speed basic application layout and connection to outside services. It includes a Web services API that's aware of which Web services can be used by an app and provides a WSDL path to the service. A year ago, Salesforce added VisualForce, a user interface builder based on Adobe's Flex components. With these tools, app builders can connect to their Salesforce CRM and other applications, extract data, and build database triggers that update various tables as events occur.
The platform also includes AppExchange, a library of 800 applications that can be bought and used by the app builder, and connectors to SAP and Oracle ERP. It has standard industry connection buses from Tibco, or IBM WebSphere MQ and Oracle Fusion middleware can connect a Force.com app to legacy software.
In some cases, these messaging connectors will transform data they're getting from the source application into the format needed by the cloud app. That's an area, though, where it's risky to take much for granted. Test early and often.
Microsoft's Azure platform is still only a promise, with launch slated for the company's Nov. 16 developers' conference, but enterprise developers used to writing to Windows should look forward to a new platform to build collaborative apps and services for use inside companies and with customers. Developers familiar with Visual Studio and .Net should find Azure to be a full-featured platform, and PHP developers also will find Azure optimized for the Web-friendly scripting language. If Microsoft delivers anything less with Azure, developers will be disappointed.
Azure's operating system will be Windows, but Microsoft is talking up interoperability and open standards. Its APIs are based on public REST, XML, and SOAP standards. Microsoft just joined Simple API, an open source project founded by PHP supplier Zend to give developers a common way to call services out of different clouds.
In addition to supporting .Net languages such as C# and Visual Basic, Azure will support the open source PHP language and Microsoft's Iron Ruby, a version of Ruby on Rails that works under Windows. Prashant Ketkar, director of Azure product management, concedes that the Ruby community "doesn't particularly fancy" Iron Ruby.
Though Azure is optimized for .Net, Ketkar doesn't rule out support for non-Microsoft languages. Java would attract the most new developers to Azure.
In the future, SharePoint and Microsoft CRM will be services available through the platform. It won't be easy to bring legacy apps to Azure initially, Ketkar acknowledges, and for now it's aimed at new applications.
SaaS As Innovation Driver?Software as a service is the clear No. 1 way enterprises consume cloud. InformationWeek's SaaS Innovation Survey reveals three tips to get the most from SaaS: Make it a popularity contest. Have an escape plan. And remember that identity is the new perimeter.
Join us for a roundup of the top stories on InformationWeek.com for the week of December 14, 2014. Be here for the show and for the incredible Friday Afternoon Conversation that runs beside the program.