http://strom.com/awards/328.html
Since
1995, my friend Tristan Louis ran his web site TNL.net on Microsoft Windows. He
started his site on Windows NT using Microsoft IIS. In late 2000, he moved to
Windows 2000 and continued to run on this until recently, when he switched to
Linux. So why did he decide to change things? Here is his story.
First
were upgrade issues. With the introduction of Windows 2000, Microsoft started
upping the price of Internet servers, requiring a separate set of licenses for
the Internet services as an add-on to the operating system costs. As my site
grew in popularity, I was going to need more horsepower than just using
Microsoft Access, so I purchased a license to SQL Server. That was the first
problem, I quickly learned that I had to start worrying about another set of
patches on a weekly basis. As new security patches were released weekly for
Windows 2000, IIS, and SQL server, I found myself spending more time doing basic
administration of the box and less and less time doing development on it.
Then
came licensing issues. Microsoft made changes to their licensing structure,
drastically increasing prices and forcing me into yet another upgrade cycle,
whether I liked it or not. Microsoft was essentially telling me that if I
wanted to play long term, I would not only be forced to pay more but also be
forced into buying software on a subscription basis. This would not do. I was
already an eager Microsoft user and, having paid for all my licenses, had
already laid out a substantial amount of cash into staying with Microsoft.
More
than the money, however, was a question of independence. I wanted to still have
control and the new licensing terms Microsoft was offering were clashing with
my own view of how much control they and I could have over my system.
Third
was a difference of philosophy between myself and the folks at Microsoft. One
of the things that allowed the Internet to grow as quickly as it did over the
past decades is the fact that most people are willing to share. However, in the
Windows world, the logic is that what you create is for your own and you charge
for it. This left me in the odd position of being one of the very few
open-source Windows developers in the world. If I had a cool piece of an active
server page (ASP) written, you just had to ask and I would send you the code.
Meanwhile,
the open source community was producing products that were growing more stable
by the day and at a fraction of the costs offered by Microsoft. Most of the
products were running on Linux, using Apache as their Web server. By 2001-2002,
they had grown mature enough to being considered enterprise grade. I decided
enough was enough, and it was time to move on over to the open source world.
The
first step was to investigate the alternatives. The question became what
operating system, which Web server, whether to use another application server,
and what language to use for developing my back-end, whether to use a database
(and if so, which one).
Should
I go with Linux or BSD or something else? If I went with Linux, which
distribution should I pick? In the end, I decided to settle on Linux because of
its wide level of support. With backers like IBM, Oracle, and even
(begrudgingly) Sun Microsystems, I feel that Linux is here to stay and will
continue to grow not only as a hobbyist OS but also, increasingly, as one of
the foundation tools for Web businesses of the future.
However,
looking at the different Linux distributions was a much more complicated
matter. I wanted something that would require little day-to-day administration
and could be easily and quickly patched. At the same time, I had to ensure that
the operating system would run on the new TNL.net box, a dual 1.3Ghz Pentium
configuration with a SCSI RAID array. Unfortunately, I learned one of the tough
lessons of the Linux world very quickly: Linux hardware drivers do not always
get upgraded at the same speed as the rest of the OS does. In the case of my
box, I discovered while there is a new kernel patch coming out every few weeks,
it is impossible to keep a machine up to the latest kernel if you have a
proprietary set of RAID drivers.
In the end I decided to pick up RedHat Linux 7.3 because my RAID vendor
supported it and because it offered superior auto-updating features through the
RedHat Network.
Next
was to pick my Web server. This decision was a much easier one to take as the
Web server from the Apache Foundation has become the de-facto standard for
anyone who is serious about delivering Web content on an open source platform.
I did not go very far in my research on alternative servers. The only decision
point on the Web server end was whether to use Apache 1.3 or Apache 2.0.
Influencing this decision was the module architecture that Apache offers, but
version 1.3 offered a much wider set of modules than 2.0 (some of them more
important to me than others) so I decided to hold back on using the bleeding
edge version.
Coming
from the Microsoft world, I have had extensive experience with ASP and could
have kept using it thanks to a helpful module developed to run the Microsoft
technology on Linux. However, I had already made the decision that I would
rewrite substantial parts of my code so I decided to completely abandon ASP as
part of the migration. My choices were therefore choosing among perl, PHP,
Java, and Python. Each of the languages was equally good for what I wanted to
do. I ended up picking PHP.
PHP
seemed to have managed the proper balance between extensibility and ease of
use. It seemed like a new language developed specifically for Web use -- the
only trouble was that I had not played with it. The big question on my mind,
though, was whether it could support large amounts of traffic.
At the
time of the migration, TNL.net was already received upwards of three million
page views a month and growing slowly towards four million. As if someone had
read my mind, Michael Radwin made a presentation highlighting how Yahoo had
come to the decision of using PHP. Reading their analysis of the different
languages, I felt that someone else had gone through the same thought process I
did. Their conclusions were that PHP was solid enough to run large portions of
the Yahoo site. If that was the case, there was now no doubt in my mind as to
which scripting language I would use.
My
final step was in assessing which database I should use. After careful
consideration, I decided to use the mySQL package largely because of its tight
integration with PHP. Furthermore, investigation showed that this is a
relatively standard configuration known as LAMP (Linux, Apache, MySQL, and PHP)
and is being used by a number of people all over the world.
Having
moved to an open source package was much easier than I had initially expected.
With a complete rewrite of the back-end TNL.net code, I was able to clean
things up and make sure that the site was optimized to support the traffic it's
been getting to date and still have some room to breathe in terms of supporting
more traffic. I have already seen some dividend in my joining the open source
community, as some of the code implemented by other people served as a
blueprint for the new TNL.net. All and all, count me on the list of people who
have made the switch from Windows to Linux. I don't think I will look back any
time soon.
Thanks
for the migration diary, Tristan. You can subscribe to Tristan's occasional
newsletter and view his weblog at his site, tnl.net. I will be writing about
Linux migrations in an upcoming issue of VARBusiness -- those of you that would
like to share your tales and wisdom feel free to drop me an email in the next
week or so.