My company is about to acquire another company; we run the LAMP stack, they run the Microsoft stack. We're not going to run duplicate infrastructures forever, we'll most likely move their stuff to LAMP. We're in the process of trying to determine the best course of action. These are both fairly mature and high traffic colocated sites, our team has no experience with MS stuff and their team has no experience with LAMP. Not trying to start a flame war over which technology is better so for the sake of argument, let's say we're going to migrate to LAMP.
Does anyone have experience migrating a large Microsoft based server infrastructure (MS Server, IIS, MSSQL, ASP.NET) to LAMP(Linux, Apache, MySQL, PHP)?
How did it go? What were the pitfalls? Any info would be helpful.
It is going to cost you an absolute fortune migrating your apps from Windows to Linux, and (in my opinion) you might well be better off leaving everything running on what it's currently running on now.
Applications
If you're migrating from ASP.net to PHP, you'll need a developer who can either code well in both, or you'll need an ASP.net developer trying to explain to a PHP developer what each line of code is doing. You better hope the ASP.net system is documented well, as you'll have to mimic the code in PHP exactly for this to work properly (this includes any bugs or oddities in the ASP.net code as well).
If the Windows platform will handle data (for example SOAP calls), you are going to have to test the hell out of that - if ASP.net returned some weirdo tags along with the regular tags, you will have to code PHP to return the weirdo tags as well - you have no idea what remote servers are doing with the information.
Databases
If the ASP.net code was using things specific to SQL Server, you might have a big problem if you can't get MySQL to mimic SQL Server's functionality. You could always re-architect the code in this case, but that goes against what I mentioned above about migrating the code exactly, and introduces the potential for subtle errors to occur.
Until recently, MySQL had very poor support for things like triggers and stored procedures. If SQL Server makes use of these things, you might get unexpected results when you run it on MySQL.
You will also need to think about how you back up MySQL - its backup capabilities are nowhere near as nice as SQL Server backup is. I'm sure you already have experience in backing up your current MySQL databases, and this probably involves backing up slave instances of your databases. Bear this in mind, just in case you need to buy more slave MySQL servers.
Cost
You'll need to dedicate a LOT of developer time to this, as well as the time it takes for it to be tested and pass QA.
Additionally, you didn't mention what was happening to the current Windows team. If they're being made redundant, your current Linux staff all of a sudden have a load more servers and infrastructure to manage and you might need more Linux admins or PHP programmers.
If you're keeping the Windows guys, they will all need retraining in their various fields. You'll need Linux server admin training, PHP training and MySQL training. I can almost guarantee at least one of them won't be happy moving over to Linux, so they'll either complain like mad and make your life a misery, or leave. Whinging staff are never fun to deal with, but unfortunately your problem :) If they leave, you've then got to hire somebody with the necessary skills.
Don't Break Stuff For Users!
Consider your users while you're doing this. If they have bookmarked
http://www.acme-widgets.com/Products.asp
and this then changes tohttp://www.acme-widgets.com/Products.php
you have broken their bookmark (the extension has changed).Have any RSS feeds? They're now all potentially broken as well because the extension has changed.
You'll need mod_rewrite rules of some description to rewrite all
.asp
pages to.php
pages.There will inevitably be some downtime while things are migrated over from Windows servers to Linux ones - this will inconvenience users while the Windows based website is switched to its Linux counterpart.
Since you're acquiring this other company, you are probably going to (eventually, if not immediately) merge their website into yours. This will also break user bookmarks and links embedded on the internet which you have no control over. Again, make sure you have appropriate mod_rewrite rules in place.
We migrate two and from; cross platforms all of the time, the biggest obstacles from a customer standpoint is making sure that everything is up and running since once there is an interruption in mission critical applications that is when the fires start to flare.
In order to avoid this step the first thing I would take on is determining the hardware architecture, what will be used and where it is contained. From there see if there are some things you utilize in terms of p2v migrations if its going in VM and running things in parallel dev to prod so that the systems can run while you have the time to do product testing.
The database migration should be a seamless operation if your DBAs are comfortable with the things this will be the easiest part of the transition.