Tuesday, January 13, 2009

Google for the Enterprise

So I am involved in bringing Google to the Enterprise ....

There are a bunch of products that work well together and fit well with the needs of enterprise customers. I am currently struggling with one major issue that I need to resolve, at least in my own head, to make this successful. It is the same issue that may enterprise architects have struggled with in the past and I guess continue to struggle with and it is one that leads to a never ending, and often heated, debate;

"What technology stack do I use?"

Let me explain. There are a bunch of technologies that are being used to deliver and enhance the Google product set. At the core is Apache and Python, then there is Java and PHP. Plus, there are a bunch of enterprise customers that want to deploy into a Microsoft environment. I want to package solutions up around the core Google Enterprise Technologies into reusable products. Given that many enterprises have standardised their infrastructure on particular platforms and technologies what do I do.

Do I adopt the array of technologies being used currently to deliver Google solutions or do I look at re-engineering existing solutions around a common platform? As an example, to deploy the GSA with features like Search As You Type, Parametric Search, Feeds and Connectors I would have to support Java, Python, PHP, Apache HTTPD with CGI and Tomcat. Do I re-engineer the PHP and Python functionality so that everything is Java and Tomcat (or Servlet Engine of choice) or go with the broader set of technologies? 

The problem with standardising on a single technology is that I cannot then leverage the available functionality as it evolves; for example, each new release of SAYT is released as PHP and I have to re-engineer to Java! In the SMB & Consumer space having a bunch of different technologies to support a solution is not an issue, but in the Enterprise it is.

"If one standard is good, many must be better" does not ring true for the Enterprise.

I think the answer is that I have to support Java and .NET (providing duplicate functionality for each platform) and re-engineer anything that is released using a-n-other technology. This is not great - I can see this leading to problems. The ideal would be that Enterprise customers become less choosey about the technologies they deploy which, would require a massive mind-shift for many CTO's / CIO's.

Also I wonder, how much longer it will be before Java and .NET go the same way as C, C++, CORBA, COBOL etc. How long before Enterprises migrate to Ruby or PHP or Python or the next thing as their standard platform?

I want to write my solutions using all of these technologies, but I don't think that my customers will accept that! I want to standardise using Python (or PHP or Ruby), but I don't think my customers will accept that either! I want the Google developer community to get behind a standard platform so that I don't have this problem - but that would take all the fun out of it!

0 comments:

Post a Comment