| More Resources
|
As acronyms go, the ASP (Application Service Provider) has been dying a slow death. But as a distribution model, its ashes have given birth to a more robust concept based on rich interactivity and a more easily updateable codebase: Software as a Service, or SaaS.
Once the ASP model began to mature, it ran into serious obstacles due to the architecture employed by most vendors. The typical ASP vendor instantiated a new app for each client, so that each account had both an independent data store and an independent codebase. This eventually made updates unmanageable and placed unnecessary demands on the vendor's infrastructure.
At the same time, Rich Internet Application (RIA) methodology has evolved to the point where developers can create more fully-featured, highly-responsive Web-based UIs in ever-shorter development cycles. It quickly made sense to apply these new coding techniques to existing products. But more than resurrecting acronyms from the marketing graveyard, this has resuscitated the ASP model and suggested new ways to build distributed applications. The result, SaaS, takes a different approach by opening up a single, easily updateable codebase to a highly scalable number of Web-based clients, or "tenants".
This one-to-many approach allows developers to push updates on a more frequent basis. (Easier to break? Easier to fix? You say to-may-to, I say to-mah-to.) Meanwhile, customers can license the software per user or group of users and not have to worry about installing patches or paying for upgrades. This win-win offers so many advantages over traditional distribution models that Gartner Research estimates the SaaS market will nearly triple, from around $6.5 billion worldwide in 2006 to $19 billion by 2011.
Building a SaaS Architecture
Creating a SaaS, however, involves more than adding a slick front-end to an existing application. While you can certainly extend your core code into a Web-based app, you must take several new criteria into consideration that are unique to a SaaS offering.
Uptime
Your SaaS will be rated on uptime. Your Web server and database should both be able to manage spikes in traffic, including thousands, or even tens of thousands, of connections.
Low-Cost Prototype
Unlike when building a desktop application for production, developers can create SaaS prototypes or early builds that can actually go to production. For the consumer side, sites do this all the time with feature-limited "beta" versions. New SaaS vendors looking to mitigate risk may build a low-cost proof of concept to see how it performs before investing in a full-scale release. If so, you'll need products you can license at reduced cost but without reduced functionality, and that won't lock you into a dead-end upgrade path.
Scalability
Conversely, you also need to plan for growth. Like any Web app, you may strike gold and experience the rush that goes with it. Not only does your server (or farm) need to scale up, your DBA also needs to set a foundation early on that can support rapid growth and increased traffic.
XML Support
As a RIA, your SaaS will love XML. You'll benefit from storing data in a highly portable data format. And you'll benefit even more from the ability to feed your REST, JSON, or Ajax code (or coding style) to manage data, build menus, or enable other client-side functionality.
What Is DB2 Express-C?
Last year, IBM began offering a free version of its enterprise-level DB2 product called DB2 Express-C. Free to download, deploy, and redistribute, Express-C doesn't skimp on features. For instance, where the free database offerings from both Microsoft and Oracle both have an artificial cap of 4G on data, Express-C allows unlimited disk space for data storage.
Express-C also supports up to 4G of RAM, as opposed to 1G for Microsoft and Oracle. And in a nod to the practicalities of our new multi-core world, it supports up to two processors, each with multiple cores, not just the one supported by competitors. All of this makes Express-C ideally suited for prototyping a SaaS, especially when you consider that it uses the same engine as all other DB2 offerings, making it extremely scalable and adaptable to the growth of your service.
For example, assuming your proof of concept is successful, which of course it will be, your next step would likely be the Express-C Support offering. For a straightforward subscription rate of $2995 per server per year, you get additional features that make sense at your current stage of development, such as upgrade protection, High Availability Disaster Recovery (HADR), and replication, including server-to-server bi-directional replication. And of course, you get 24/7 worldwide technical support. As you can continue to scale, the support option sets the foundation for a smooth transition to enterprise-level members of the DB2 family.
How DB2 Express-C Fits into a SaaS Architecture
Based on scalability alone, Express-C serves the SaaS architecture admirably. But it fills other needs, as well.
Uptime
As mentioned, your app must handle spikes in traffic and heavy loads. Reliability, quality of service, and uptime all make or break a SaaS. DB2 has built a reputation for solid, robust performance and that reputation remains undiminished with Express-C. One informal stress-test on a PHP app showed around 10,000 concurrent database connections in Express-C, though these numbers aren't officially reported by IBM. In addition, Express-C comes with its own self-tuning features. Once you install Express-C, you can let it manage itself, adjusting automatically to handle different workloads at different times.
Scalability
For a product like MySQL, scaling up means adding more hardware (although the open source fans would argue it means a move to PostgreSQL). Regardless, when the inevitable move to an enterprise-strength database product comes, it involves a difficult and painful data migration. Since it uses the exact same architecture as other members of the DB2 family, Express-C offers a key advantage over the typical upgrade path. To migrate, just move your database to the new server, install the server with different license keys and point your app to the new database.
Transactional Support and Other Features
Most SaaS applications will require transactional support somewhere in the user's workflow. MySQL doesn't have it, Express-C does. In fact, if you do a feature-by-feature comparison of Express-C to other databases at corresponding licensing levels, you should find that Express-C offers more SaaS-friendly features at every level. For example, Express-C's SQL Optimizer cuts through syntax hell and lets you focus on the data while writing SQL queries, a huge boon during SaaS development.
Express-C and XML
Express-C's XML features could've been listed as yet another SaaS-friendly feature, but they're so extensive, they deserve a section of their own.
As mentioned, Rich Internet Applications make extensive use of XML. Your primary code will require "application/xml"-type content streams for use with responseXml objects. This can include the expected functions, such as data storage, fast lookups, and dynamic navigation. But as new XML standards emerge, your database will begin storing graphics (XAML, SVG), productivity documents (OpenXML), and other content types as well.
Express-C and pureXML
It makes sense to start using an XML-ready database now. And this is where Express-C really shines. It includes native XML data types as well as extensive built-in XML functionality. IBM's marketing folks have branded all of this "pureXML". But on a practical level, this means that the database can store XML documents just as they are within a relational database. No parsing. No storing in relational fields and then trying to reconstruct the XML doc later. And no big CLOBs that let you dump XML into the database without giving you the means to access it.
Express-C has genuine XML data types. You can load XML documents into the database, then query them using XQuery. You can also expose the data more easily for use with JavaScript. In fact, the Visual Studio Add-in includes some great tools for making this happen. (See "XML Everywhere Part 1" and "Part 2" for a detailed walkthrough of how to do this.)
As an example, you can use Express-C to repurpose Office 2007 documents, which use the Ecma Office Open XML format. Use XQuery to consume an OpenXML document and transform it through XSLT. Store the result in an XML field and make it available to your SaaS in XML format with or without the extra markup.
XML Schema Validation
Here's a classic database problem: you structured your EMPLOYEE table to include work phone and home phone. But now cell phones are standard fare. Employees may even have multiple cells, one for personal use and one issued by the company. In a typical relational database, adding the extra field means refactoring the code. That's a big deal.
In a desktop app, a schema change like that could warrant a version upgrade. Of course, that could be a good thing if your company charges for upgrades. But customers subscribe to your SaaS so they don't have to deal with that. Your SaaS needs to be nimble. You should be able to roll out new features and new versions on an ongoing basis.
When you're using XML documents, you can do just that. With schema validation, just add the new element. You don't need to debug the entire app, just add the element and update the XSD you're using to validate the document. See "XML data validation using IBM DB2 Visual Studio 2005 .Net Add-in" for more on this.
|
Developer Workbench
By October, 2007, you should be able to download the new DB2 Developer Workbench. This will give you all new ways to create Web services quickly for use with your SaaS. You'll be able to target a particular platform, like Tomcat or WebSphere. Then, using simple point and click, you'll be able to drag a table into the "Web Services" folder and publish your XML data in either SOAP or REST format without coding.
WebTools Starter Toolkit
Also coming soon, look for the WebTools Starter Toolkit, a PHP-based Web site that lets you point and click on your tables to create Web services, as well as automatically generate the JavaScript code to consume them. Do the same to create Atom feeds and stored procedures from your database. The stored procedure tool will even generate browseable HTML tables for displaying and navigating through the data.
IBM SaaS Partner Program
With its robust architecture, rich tooling, and native XML support, Express-C gives new SaaS developers the perfect platform for prototyping and launching highly responsive Web apps. Even the free license for Express-C offers all the functionality necessary for building a solid foundation. With the Express-C Support Plan, developers gain a logical migration path that takes them into the next tier of feature sets as they scale up their SaaS application.
To further demonstrate its support for the Software as a Service model, IBM has also launched a partner program specifically for SaaS ISVs. Through IBM PartnerWorld, ISVs can get help with managed hosting services for their new SaaS product. IBM also offers global marketing and sales support.
For software companies looking to expand into the lucrative SaaS field, the low barrier to entry just got lower. And the timing has never been better.
Additional Resources
To learn more about Express-C and its capabilities, check out the following resources: