Saturday, April 19, 2008

A Microsoft Cloud Database. Now its starting to make sense.

I apologize in advance for this fairly technical article, but I wanted to post about this to highlight that Microsoft can produce some really impressive stuff on the Development side of things, even for SaaS.

It was announced fairly recently that Microsoft was planning to release a cloud version of its SQL Server DBMS, called Microsoft Data Services, (Whitepaper found here.).

There are a number of major players in this arena, including Google, Amazon and even Intuit but that isn't the focus of this blog post.

Despite Microsoft's sometimes "perceived" less than committed approach to SaaS and Cloud Computing in general, they always seem to come up with some great additions to their development platforms.

Their latest .NET framework 3.5 Platform introduces a component called Linq or Language Integrated queries. This component which is based upon Functional Language constructs and Lambda expression building blocks essentially provides a SQL language capability embedded in the C# and VB.NET language sets used by many. It provides an abstraction layer hiding database specific language constructs from client apps.


var query = from p in Contacts where p.LastName=="Wing" select p;

Linq can be used against all types of collections, and in fact the building blocks of Linq, Lambda Expressions and extension methods also simplifies many scenarios where you have to iterate through collections. In instances where you would traditionally write multi line code with a FOREACH statement you can replace with a single line.
string[] contacts= {"Troy","Jane","Kim"};
IEnumerable contactList= contacts.Select(p=> p += " Wing").
So back to the reason why I am blogging about this and why its "starting to make sense", these technical features which can make developer's lives a lot easier, actually have a more significant and strategic use. They will form the development platform for ISV's to build apps against Microsofts Cloud Database. Because Linq is Database agnostic, it becomes the perfect tool to use in the SaaS world when building Multi-Tenant Client apps. It removes the need to write complex database specific code anywhere in your app.

It will simplify development, and provide the ability to bring to market a SaaS product requiring a database backend a lot more cheaply and quickly and perhaps open up the SaaS market to smaller organizations who normally couldn't afford to build such an app.

It would have taken several years for such significant features to be designed and implemented by Microsoft, so although I don't know whether this was intentional or not, Microsoft has been seriously thinking about architecture for Cloud Computing for quite a while.

Monday, April 7, 2008

SaaS Vendors: Practice what you preach.

I have been quiet in March, due to my company acquiring new customers.
Writing blog posts about specialist topics such as SaaS requires a fair bit of regular reading, which was reduced to a minimum for me.
So in lieu of that I am posting on an area which was quite a significant part of what I was doing in March, Release Management and Source Control.

Like many companies, I run a distributed team of developers, some in India and some in Chicago and myself here in the East Coast. Its a major challenge communication wise but very doable if you have the correct tools in place.

True to my previous blog posts, we use lots of virtual tools to enable that communication, but one area we have stuck to traditional methods is source control.
It was an old habit that remained with me throughout the years. We have the usual on site Source Server (running Subversion on Apache) which is only accessible from inside our office VPN with regular offsite backup storage. Now this works fine, but as with all server environments this requires regular server and security support. With customer deadlines, developers were up at all hours of the night, and our internal VPN was experiencing occasional outages. Our guys in Chicago were more than helpful in getting up in the middle of the night to resolve, but this got me thinking, why are we investing in an on premise source control environment while we are trying to persuade our customers to trust us with their valuable and confidential data? We of course use a market leader in enterprise hosting for our production application and database servers which is an environment totally independent and separated from our office network and VPN.

So right now I am looking at possible outsourcing scenarios.

Option 1: Configure your own source server but leverage the infrastructure of a Rackspace or an Opsource.

Option 2: Go fully Software as a Service with your source control.
One in particular I have been looking at is Dynamsoft. If you google hosted source control, they seem to dominate. They offer a variety of hosted options including a free version for up to 5 Mb of source code and packages for Enterprise and ISVs.

It may be hard to consider putting your source code into an external environment, old habits die hard. But the same rules apply to you as a SaaS client. Simply research the SaaS Source control vendors, understand how they protect your code, look at existing customers and be comfortable with backup processes and how you can maintain a copy of the code locally.

I think its worth looking at.