My company is one which has grown up rapidly over recent years in multiple territories. We are not a software company per se, but a technical one who have developed various bespoke applications inhouse. Some of these are now sold as SAAS.
I am personally responsible for 3 of these applications: all internal web applications, one written in MySQL/Python/Django, one written in SQL Server/Python/Django and one in MySQL/PHP/Symfony. My developer resource includes expertise in all of these, as well as some Java and Adobe Flex. None of us have any significant experience in Microsoft technologies beyond SQL Server.
However, all the other departments in my company that have developers all work using the Microsoft stack - all our other webapps are C#/asp.NET etc etc etc.
I have been asked to evaluate integration of our depts products with others in the company at a data-sharing and presentational level.
I see 3 possible routes:
We bite the bullet and move to the Microsoft development stack, and this becomes a company-wide policy. Pros: standardisation, ability to pool resource, integration can be done at any level. Cons: massive licensing costs we can't really afford right now, complete retraining of all developers required, having to use IIS instead of nice Ubuntu/Apache servers, and general philosophical opposition (we're mostly open-source evangelists in my dept).
Middleware. We've been looking at Adobe Flex in order to handle data subscriptions between services. Pros: relatively cheap solution, existing in-house experience, can use whatever underlying tech we choose. Cons: it took ages to get a quote for Adobe data services, it isn't clear to me how futureproof this route is - are we potentially buying into a tech that's going extinct?
DIY. We stick with open-source all the way, and custom-write web service APIs between all the apps. Pros: cheap on licensing, open-source. Cons: additional time required, more testing, core issue of techology proliferation not tackled
I'd be interested to know what other approaches there might be here. Are there other Middleware ways of going about this? Am I hopelessly out of date with my views? What's a safe bet for the future?