Technical challenges of software as a service
One of the interesting things about the challenges of Software as a Service (SaaS) brings is not necessarily that new technology brings new problems, but that it offers new spins on the problems we already have.
Take the biggest challenges as examples: integration and data migration. If your SaaS solution needs to interact with systems outside of your SaaS provider's domain, you need to spend some time figuring out how to do that. It is in a SaaS provider's best interest to provide you with multiple options to get data in and out of the system. There are also Integration as a Service options where, as long as both ends of your system can be reached over the Internet, you can extend your integration options further (for a price). There are many options available, but allocate reasonable time and budget to figure out how your SaaS solution is going to fit in with the rest of your application landscape.
Similarly, it's in the best interest of SaaS providers to make it as easy as possible to get your data into their domain. But unless you're starting afresh, don't underestimate data migration (I'd be interested in any stories of your experiences). One of the speakers at the recent Cloudcamp told of their experience of a customer who moved to a SaaS solution as it was the cheaper option, but didn't migrate any data; they just set people up on the new system who presumably were then left to migrate what they needed manually! People are looking at SaaS and other related technology to save money on developing the applications they need; the savings are there to be made but there's no need to throw the baby out with the bathwater.
As with any new technology, whichever SaaS provider you work with, your application developers are going to spend some time adapting to their new environment. Once again, the SaaS provider should do its utmost to make developers feel at home. But multi-tenant environments place limits on what you can do and try and force you into their "best" way of do something. Salesforce.com application developers are probably familiar with forum threads such as this one; and when Google App Engine was first released, not everyone was prepared for the change in mindset required. Understand the limits imposed by your SaaS provider and make sure you're able to do what you need to within those constraints. Otherwise, at best, you'll end up paying more for it.
On that same point, when developing with SaaS or Platform as a Service (PaaS), you're playing in someone else's garden and you need to play by their rules. Give your developers the space to figure out and learn these rules, don't just look at the syntax and assume that because it looks like something else your team already knows, there won't be any overhead.
One thing to keep in mind is what requirements your SaaS provider can and cannot meet. Of the SaaS offerings out there, is there one that is going to meet all of your requirements? What are you options when your SaaS provider doesn't offer something that you need to have? Partner applications can help fill in these gaps, but will usually add to the cost and add another point of integration for your solution.
Finally, there are plain old, boring infrastructure issues. When delivering applications over the Internet, obviously a network connection that is able to cope is essential. It sounds easy, but how many people do you know that have complained about the Internet connection at work? Are you deploying a SaaS solution to increase the mobility of your workforce? If so, are they going to have the necessary connectivity when they need it?
Those are just a few of the technical challenges SaaS can pose, but this post is by no means comprehensive, nor is it meant to be. There are topics I intended to cover, but I'm sure they'll come up over the coming months on this blog anyway. There are also some topics I've avoided altogether, as they'll take up series of postings on their own! More importantly though, I'd like to hear about what challenges you've faced when implementing SaaS solutions - feel free to comment.