How Microsoft migrated HOTMAIL from FreeBSD Unix to Windows 2000 Server
Its cool stumbling on to nuggets on the web. I started out searching for Windows 2003 architecture diagrams. I found one, and noticed a box called the POSIX subsystem and wondered what it did and why it was there. Found out that the POSIX subsystem allows Unix applications to run on windows. But who does that? I have never heard of anyone running Unix apps on Windows. I searched some more and found another nugget – documentation of how Microsoft had migrated Hotmail from Unix to Windows back in 2000. Based on that documentation, the unix migration was possible due to Windows ability to run Unix services using the POSIX subsystem, specifically windows services for Unix. So it seems that the whole POSIX subsystem has been built for interoperability and to enable migrations from the Unix platform to Windows.
So now to the meat of this post – how Microsoft did it. The project documentation is hidden in technet under interoperability notes. The project involved migrating almost 3800 servers and was conducted over a 4 week period. To make it interesting, the servers were migrated remotely, automated and involved zero new hardware. Here are a some of the more interesting project constraints:
- Zero user impact or downtime. To maintain the availability of the Hotmail service, a zero user impact or downtime was considered the key requirement of the migration.
- Rapid deployment. The migration included nearly 3,800 servers, and was limited to a 4-week conversion cycle. Remain competitive in the Internet space, requires rapid response to competitive situations. This had resulted in new releases of the Hotmail application suite occurring approximately every eight weeks. It was important that the migration to Windows 2000 could be accomplished in Windows so that the development staff would not have to maintain the follow-on release of the application for both FreeBSD and Windows 2000. The same model that was used for the initial deployment will also be used for new software releases, which generally occur once every two months.
- Use existing staff. All staff should remain effective regardless of operating system. This includes staff in system development, QA, and Operations.
- Use existing site hardware and network. The migration would quickly “reimage” each piece of equipment and return it to service. No physical hardware or network topology changes should be necessary.
- Totally remote and unattended. The migration should not require any physical human interaction to migrate the servers. All updates should occur through software scheduling and should report success/failure to a central console so migration can be verified.
Reading the document, you also get some idea of the Hotmail network infrastructure from the diagrams shown in the document. Here is the pre-migration diagram and here is the post-migration diagram. The essential strategy was to reimage the UNIX machines to Windows 2000 Server running IIS 5. The reimage process were automated and remote. The Unix servers were part of a cluster. Unfortunately, the document does not reveal how the cluster configuration was migrated. There is some meat in there for developers on how the Hotmail codebase was migrated. Overall its good stuff. Understandably they dont share all the details, but there is enough meat to allow you to cook up your own massive migration project.
Here are the links:
- Project Overview
- The Project Planning Guide – most interesting stuff is here including network diagrams
- The Deployment Guide – this was not as detailed but still contained some nuggets and details about the actual deployment and code migration
2 Responses so far
Daniel Tobe
March 30th, 2009
9:46 am
What do you mean by reimage???
raheem
March 31st, 2009
4:34 pm
What I meant by “reimage” is that the migration team took the FreeBSD boxes offline, rebooted them and imaged them into Windows boxes.
Leave a comment