Lately I found myself in the middle of a discussion with a client about which web platform / architecture to choose for a new SaaS project.
The web app itself is eminently doable on any platform, and is not all that scary from a technical difficulty standpoint. The client is very much adopting an MVP approach and there is buy-in across the board to tightly control what gets in for V1 so there won’t be huge feature creep. While scalability is a consideration they believe they will roll it out in a measured pace in the initial months, so it is not necessary to plan for, say, 5 million uniques and 15 million page views in a month – they have no plans to push the traffic while they are in learning mode. So there is time to learn and adjust once the app is launched.
If there is no development history to the project, everything could have been handled with open source technologies. Drupal could be used as the content management system for the marketing stuff, Java / Ruby / Python or even php could be used on the server side, and one could use MySql or Postgres for the database. One never has to worry about exploding server side license fees if one stays away from IIS, .NET, Microsoft SQL server and stuff like that. Open source platforms are great if you have a pronounced need for speed. There are many reusable open source code libraries one could leverage. Lastly, all the cool kids want to do Ruby on Rails these days and it is much easier to recruit for a Ruby developer than a C# developer.
Alas, there is actually quite a bit of history that complicates things. First of all, there is a legacy Microsoft SQL database with an existing schema, much of which is applicable to this application, and it would be highly advantageous to be able to migrate it instead of having to redo it all in another database. So moving away from MS SQL doesn’t seem to be advisable. Second, and more importantly, this company is a Microsoft shop. The development and operations talent in house are all world-class experts in .NET/C++/C#. This made the decision process very non-obvious. Do we choose a hot new platform so we can build it quickly with external resources, only to go through a steep learning curve later when this new work is brought back in house?
This is a head scratcher for me and I am actually not sure what I would do if it was my team. I think I would lean towards picking the trendy platforms. I probably would plan on hiring at least one new senior or principal level developer who is highly experienced in the new platform, and retraining those who are able and willing to share custodianship for the new platform. But it is as much a budgetary and human resources consideration as it is a technical decision. The best technical decision could be an ill advised business decision in the long run.
What would you do if this was your team?