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.

  • 1
    Oh, god. Why on earth would you do that? Get ready to hire a new, prepubescent dev staff. – 3Dave Nov 18 '10 at 23:47
  • 1
    I should clarify: ignoring the qualifications or benefits of each community, you're not talking about porting , but rewriting. The devs may say "I can do that" (they want to keep their jobs), but this is like trying to make an F16 mechanic work on a Lamborghini. Hiring a dedicated ms stack admin will be WAY cheaper than hiring a new dev staff, or retraining, which isn't going to work with these two vastly different sets. Look up Newton and Liebniz for a good analogy. – 3Dave Nov 19 '10 at 0:54
  • So in keeping both running independently we will have two sets of devs and two sets of ops indefinitely, or cross train one set to the other over time, or both. Sounds like a total nightmare either way :( I had a previous experience at another company where despite the fact that everything ran on LAMP someone decided we had to do a new feature in Ruby on Rails, thus splitting the dev team into two technologies. That was awful, but at least it all ran on the same server architecture, and it still ended badly with Rails being abandoned because it couldn't stand up to the scale. Not excited... – Robert Swisher Nov 19 '10 at 1:40
  • 1
    I understand this from an admin point of view. But, you're not talking about a new app on rails, but an existing, apparently successful app that, I assume, provides business value. Rewriting is almost never a good idea. Keep the systems in isolation, leverage the skills you're acquiring. I work for a large company that's managed to work this our, and we're stronger for nit having limited ourselves to the limitations of either platform. There is no 1:1 correlation between lamp and the ms stack. Assuming that there us will be a lot more painful than the alternative. – 3Dave Nov 19 '10 at 2:22

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.


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.


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.


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 to http://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.

  • Begs the question, what's the point in acquiring the company if you're just going to rewrite everything? Asp.net and php are nearly orthogonal in terms of dev methods. – 3Dave Nov 18 '10 at 23:51
  • To be fair, it might not be the OP's choice to migrate from one to the other - I am merely highlighting some of the things they should be aware of. – Ben Pilbrow Nov 18 '10 at 23:53
  • Excellent point. I was trying to highlight the shoot-oneself-in-the-foot aspect of the proposal. Excellent post. You should really write a paper for a mag or conference. – 3Dave Nov 19 '10 at 0:48

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.