A Brief History of Time
We've always talked about our hardware upgrades and how well they perform. Our hardware architecture is, no doubt, critical to the success of the site, but the software that actually runs AnandTech.com is equally important. Recently, we performed a major architecture shift from a ColdFusion based back-end to Microsoft.NET. We thought that this would be an interesting article, to highlight the history of AnandTech.com from a software perspective.
In this article, we will discuss background information on the following platforms:
ColdFusion
Macromedia ColdFusion is a web-based language that focuses on the RAD development of dynamic web content. ColdFusion started off based on a C++ runtime that interpreted code within HTML templates and compiled it into PCODE, which was then interpreted by the ColdFusion runtime and delivered to the web server and, in turn, to the end user requesting the page. ColdFusion back then was similar to PHP and ASP. Recently, Macromedia decided to take the ColdFusion language to a standards based platform, JAVA. ColdFusion runs on top of almost any J2EE server; we used the ColdFusion standalone version, which uses Macromedia JRUN as the J2EE server. ColdFusion templates are written in CFML (ColdFusion Markup Language) and then compiled down to JAVA byte code and executed by the J2EE server. Macromedia used to be the only game in town, in terms of ColdFusion. Now, a company named
New Atlanta makes a ColdFusion server that also runs on .NET.
Microsoft .NET
The .NET platform is the new framework for building Windows based and web-based applications from Microsoft. It not only replaces the older ASP platform, but introduces some up-to-date languages that run on the Common Language Runtime, which is the backbone of .NET. The three main languages used with .NET are: C# (similar to C++), VB.NET (somewhat similar to VB) and J# (fairly close to JAVA). The beauty of this architecture is that it brings different developers together on a single platform. Those who wrote mostly in C++ or JAVA will probably choose C#; and those who are familiar with VB or more verbose languages will probably choose VB.NET. J# is there for the JAVA developer. Whatever language in which you write your code, it is compiled into an intermediate language, CIL (Common Intermediate Language), which is then managed and executed by the CLR. ASP.NET is simply another .NET based environment that allows you to write in any of the languages that run on the CLR. Its syntax is similar to ASP.
67 Comments
View All Comments
PorBleemo - Wednesday, July 28, 2004 - link
vda #30:You forget that their servers are a little more powerful then 166Mhz.
JasonClark - Wednesday, July 28, 2004 - link
felix,No where in the comparison did we say the performance comparison was CF vs .NET, well aware that there are some differences in page layout along with architecture. The comparison was the old site to the new site. For us to do a fair comparions the code would have to be quite similar, and even then it is still not apples to apples. Overall, platform, css and a re-architecture of the site brought us some large gains (as illustrated).
Yes we had already invested in licensing, but with some JRUN related issues that went unresolved, and the cost of future licensing .NET was a better choice for us.
RAD is great, but honestly with Visual Studio 2003, the argument isn't as great as you might think.
fbaum - Wednesday, July 28, 2004 - link
Hey ho...
Just noted that your interface from pure HTML to CSS doesn't really result in an apples to apples comparison of cf to vb.NET performance. No matter how you slice it, larger pages = slower rendering site. Taking down pages from 130K down to around 45K in HTML would yield huge performance gains without changing your app server, and wouldn't have required you to redevelop code, just presentation.
Got to agree, the VS IDE is slick. But I'm a RAD fan and a cf fan, I like having useful builtin functions to call upon, and .NET coding sometimes makes development that should be easy harder than it should be.
Why rewrite? Your server licenses are already bought, right?
Disclaimer: my email address ends in @macromedia.com, consider my comments accordingly
-Felix
kenny4269 - Wednesday, July 28, 2004 - link
Nice article, always interesting to read behind the scenes stuff.vda:
I work as a computer tech and have one thing to say about Windows. Outside of the security holes (which ANY OS can have), most Windows problems are caused by the user. Keeping up to date with patches, antivirus, not opening attachments, etc. all all things that MUST be done on ANY OS (open source or not). If you download BonziBuddy on your Windows PC or some poorly written Linux app, you can still have problems.
Don't get me wrong, I like Linux, but don't tell me it's perfect choice for everything just because it's open source.
JasonClark - Tuesday, July 27, 2004 - link
sonixDivx, the performance gain was a combination of our new layout (removing the news), and the architecture of our .NET version. But, the way we wrote the .NET site is similar to writing a ColdFusion app with CFC's as the backend, very similar. I'm not sure we'll do a comparison of the two, since the two sites are fairly different in layout and content.Cheers
JasonClark - Tuesday, July 27, 2004 - link
vda:What happens when a 18 year old genius has the source code to the operating system that your entire system architecture relies on? Then exploits a vulnerability in the source code (yes unix developers make mistakes, enough that redhat network sends out a constant stream of e-mail :)).
Then that exploit (which was easy to find as you had source code) takes your network down and costs you thousands every hour? There is another side to the open source argument, I'm not saying I don't believe in the movement, but your argument is one-sided.
BTW, the registry has never been corrupt for us, and that's what emergency backup disks are for btw, I certainly hope you don't run linux assuming it will never break :).
Phiro: we use Linux Virtual Server (vda are you reading this? LINUX virtual server :)). We use 5 web servers run the site, we could run off of 1 except on extremely busy days. We like redundancy.
vda - Tuesday, July 27, 2004 - link
> In regards to linux, our expertise lies in windows and it hasn't given us any grief what so everProblems do happen with every OS. Now, when Windows hangs on you, what do you do? When registry got corrupted, what do you do?
Nothing. You can do nothing because you have no source of the damn thing. You have next to nothing in regard to debugging facilities. No strace. No gdb. No kernel debugger. Disassembling stuff is
possible but illegal.
It does not matter for "yesterday's advanced user"
style admins and web designers, for they are Gates' target audience.
For me, it does matter.
vda - Tuesday, July 27, 2004 - link
> Code is as bloated as the developer makes it, experience, experience...Hehe. Our corporate Internet gateway have
lots of stuff. Tons of network utils
(nmap, mtr, tcpdump, iptables, traffic shaper)
and services (*transparent chaching web proxy*,
www, mail, secure ftp, DNS server, DNS cache).
It runs on Pentium 166 and 40Mb of RAM.
Try to install Windows NT on that.
--
vda
vda - Tuesday, July 27, 2004 - link
I once said this:'What happens when you read some doc and either it doesn't answer your question or is demonstrably wrong? In Linux, you say "Linux sucks" and go read the code. In Windows/Oracle/etc you say "Windows sucks" and start banging your head against the wall.'
To my surprize, it even propagated into some .signature files :)
Aaron - Tuesday, July 27, 2004 - link
A well written C++ .Net ISAPI filter on IIS beat out Apache in any confguration last I checked.Anandtech Team: Are you looking to add any additional developers to your team? I am a senior .net dev / usability designer / MS SQL Server DBA / systems architect. Work on your application would make a welcome addition to my resume. Email me if you are interested.
aaron.dezeeuw #at# gmail.com