6 ms·
Stackoverflow's WISC (Windows, IIS, SQL Server, C#) Architecture
- benologist 16y agoMS is not a horrible stack to develop on. It performs great and for the most part you can avoid a lot of the licensing costs anyway - on dedicated servers the difference is like $10 or $20 if you're leasing, and if you're rolling your own hardware there's BizSpark. SQL Server starts free and it was actually only halfway through last year that I stopped using the free version at Playtomic. It's also the only significantly expensive part - and very easy to not use in favor of something that is free/open source/cheaper/whatever. I'm glad I went with .NET for my startup - a few days ago I calculated some current numbers: 29 million unique people logged over 3 billion events during a 10 day period. It's holding up well enough for me and my very lean, mostly Microsoft-flavored startup. Yesterday I came across this writeup on what Quora is built on too: http://www.philwhln.com/quoras-technology-examined http://www.philwhln.com/quoras-technology-examined
- sielskr 16y agoThe writeup on what Quora is built on say that, "Quora uses Ubuntu Linux as it’s OS of choice," and does not mention any Microsoft technologies at all.
- benologist 16y agoThe Quora link is just a look at how another Q&A site is built, not related other than their overlap in purpose.
- sielskr 16y agoSince the link is in a comment that begins, "MS is not a horrible stack to develop on," and ends, "I'm glad I went with .NET for my startup," a reader could get the impression that the link somehow provides support for your pro-MS position.
- benologist 16y agoGood point, I moved it above the Quora link.
- brown9-2 16y agoon dedicated servers the difference is like $10 or $20 if you're leasing, and if you're rolling your own hardware there's BizSpark. How much does BizSpark cost after the initial pricing period lapses?
- kenjackson 16y agohttp://www.microsoft.com/BizSpark/Faqs.aspx#Startup-Question9 http://www.microsoft.com/BizSpark/Faqs.aspx#Startup-Question... Startups may take advantage of the BizSpark Graduation offer that allows startups to keep the software they have with the option to purchase subscriptions and maintenance if they want to keep it up to date. This also allows them to continue using their Microsoft software at no cost in perpetuity and allows them to renew subscriptions to this software without paying any initial license fees. Startups can: •Keep their MSDN Ultimate software and optionally renew their MSDN subscriptions at any level •Keep all their Windows and SQL Servers they are using in production and optionally purchase the first two years of Software Assurance (updates and ongoing maintenance) at a 50% discount
- benologist 16y agohttp://blogs.msdn.com/b/somasegar/archive/2010/11/04/bizspark-graduation-offer-for-startups.aspx http://blogs.msdn.com/b/somasegar/archive/2010/11/04/bizspar... It's remarkably friendly although you could paint yourself into a corner if you went crazy with SQL Server, but there are a lot of options these days for dealing with large volumes of data. At the end of 3 years the costs are hopefully going to be incidental.
- TomOfTTB 16y agoIt's funny because Microsoft is known for selling their solutions but in my experience their main problem is they don't know how to sell solutions. A lot of the white papers they put out are just laughable. If what is being said in this post is correct (and my personal anecdotal evidence suggests it is) than Microsoft needs to hire the best Ruby and Python developers they can find. Have a program written in both languages on a Linux stack and then write the same program on a Windows stack. Then open source it all so anyone who knows ruby or python can point to code mistakes that might inhibit performance. Once that's all done MS should stress test all the solutions and publish the results. The Razor engine is the most credible thing MS has given the development community in a while so there's no time like the present.
- barrkel 16y agoThey are known for selling to larger orgs, because MS partners can pull in local MS heavy hitters when necessary to convince targets to pull the trigger. I wouldn't say their whitepapers get them much in the way of sales. In my view, the more status-conscious the sales target is, the more easily MS can sell to them. It's not really the tech that seals the deal.
- kenjackson 16y agoOnce that's all done MS should stress test all the solutions and publish the results. This is lose-lose for MS. If it turns out they do worse or the same then they lose. If they do better, even much better, people just say its MS funded, please ignore. And for any non-trivial app there are 1000! different ways to build it. Even if they happened to find the optimal non-MS implementation, someone will say it isn't. And unless you implement all 1000! of them you'll simply have people saying, "No one would do it that way".
- TomOfTTB 16y agoBy that logic Microsoft might as well pack it up and close shop. Because any act they would take would be an act funded by Microsoft. So if they can't do anything because people will say it was funded by Microsoft than they can't do anything at all. But you did get me thinking and I wouldn't see anything wrong with them having someone else do the actual tests. Hand it off to CNet, ZDNet, AOL or whoever. Provide them the funding and let them run the tests. I don't think any big media company would say no.
- pohl 16y agoWISC? I have a vewwy gweat fwiend in Wome called WISC.
- 100k 16y agoI think the open source stack alternative is getting a bad rap here mostly because of MySQL, which has historically not scaled well on multi-CPU systems. C# is certainly faster than a Python or Ruby but you pay a price in development speed (or perhaps Joel would argue not - if you're a C# expert but Ruby newb you'll probably go faster with what you know). But you could use Clojure or Java if that's a concern.
- noblethrasher 16y agoPython and Ruby code would likely win more beauty contest (which is actually kind of important to me) but, with the advent of C# 3 and 4, I don't think that there is much difference in expressive power. Not having a REPL still sucks though.
- kenjackson 16y agoYou get a poor man's REPL with the Immediate Window in the debugger. You can't create classes (or statements in general). but you can evaluate expressions. But it does appear C# REPL is coming in C# 5.0.
- noblethrasher 16y agoMono also has a REPL (http://www.mono-project.com/CsharpRepl http://www.mono-project.com/CsharpRepl).
- contextfree 16y agoThe compiler rewrite that's meant to enable REPL (along with some cool metaprogramming features, I hope) isn't targeted at 5.0, but a still later release. Though you can get a C# REPL in Mono today.
- kenjackson 16y agoReally? That sucks. (The post 5.0 thing sucks, not Mono). With REPL and Async (and the other metaprogramming stuff) I was thinking 5.0 was going to be their biggest release yet.
- whakojacko 16y agoI hate to be "that guy" but "(...)When I compare our performance to similar sites that are running on the open source stack, we are using about 1/10th of the hardware that they are, unfortunately, and maybe that’s because they are not good programmers. But just in terms of the types of queries we are doing and stuff, the Microsoft stack is actually, appears to be paying for itself – in terms of reduced hardware” Doesn't really provide any real justifications. I have indeed anecdotally heard good things about mssql, but apart from that I have a hard time believing you couldn't get more or less identical performance from jvm/linux/etc (and maybe mysql/postgres really can give mssql a run for its money, but I admittedly know little about relative database performance) On the other hand, it seems like Jeff/Joel had lots of experience with the MS stack before, so its not an illogical choice. You want to spend your time building a product, not wasting it figuring a new stack you aren't very familiar with.
- brown9-2 16y agoThe statement about the "open source stack" is especially ironic considering that StackOverflow just switched over from using MSSQL full-text indexing to using Lucene for search: http://blog.stackoverflow.com/2011/01/stack-overflow-search-now-81-less-crappy/ http://blog.stackoverflow.com/2011/01/stack-overflow-search-...
- johns 16y agoAnd they've used jQuery since the beginning. Not sure how that is relevant to their core tech choices.
- unoti 16y agoI've been through the gambit of making heavily used applications under ASP, ASP.NET, CakePHP, and Django. Part of what comes up in these kinds of discussions has to do with how a .NET website works vs how a "Linux" website works. The difference in performance per hardware dollar for a .NET setup and a Linux type setup can be quite large. Especially if you compare an ASP.NET site to a PHP site. The .NET stuff is going to be compiled, or at least pre-parsed, and likely jitted. To get comparable performance out of PHP, you'd need to use APC or Zend or something similar. For small sites the difference may not be all that large. But if you're using something like CakePHP, there can be a good amount of stuff for the server to parse on every single request. Also a dead simple dumb LAMP setup is going to use Apache prefork, and won't have nearly as good scalability for the same amount of memory as an ASP.NET setup would. A naive Linux PHP setup is actually more like what the ancient, pre-.NET world of ASP looked like. So in short, ASP.NET is going to blow the doors off of a dead simple LAMP setup if you have a huge amount of code and don't use Zend or APC. A more modern setup under Linux would do much better of course, say Python and WSGI use Apache-worker. This setup is going to give much better performance (due to not having to precompilation) and make better use of memory (through threads in apache-worker vs what you get with apache-prefork). Microsoft's technologies come out of the box building higher performance apps in the default configuration than some of the more naive pure-Linux approaches.
- KyleBrandt 16y agoAlthough we use MS for our core we do use Linux and open source projects as part of our stack. The routers/firewalls, redis for caching, and haproxy for load balancing are all run on Linux. In addition we use Linux for a lot of the management such as Bacula for backups and Nagios for monitoring. We try to be open about our infrastructure and both George and I blog about the changes we make at http://blog.serverfault.com http://blog.serverfault.com
- felideon 16y agoI will also be "that guy"---as another commenter said---mainly due to the author's title and finishing rhetoric, even though he is not even attempting to make any convincing arguments in the body but merely pointing out SO's technology stack which has been known since quite some time. Yes, StackOverflow is a nice success story for a .NET stack, but I think an important piece here is actually mentioned by Joel: "We are using about 1/10th of the hardware that they are, unfortunately, and maybe that’s because they are not good programmers" StackOverflow says little about "the power of WISC" and more about Attwood and Spolsky being good, experienced Microsoft-tech developers. We cannot compare the power of WISC vs the power of LAMP (for example) when performance and productivity are metrics. It's hard enough to compare each one on its own, but even harder to mix the two. The purported value is thus a red herring. Compare SQL Server to MySQL or C# to PHP, and then we'll have a discussion. "Can you beat phenomenal performance, reduced CPU usage and great productivity which now comes at no cost up-front?" I can copy and paste that into any flamewar thread on any side of the argument and it will still make sense and you will still want to agree. The reader here agrees with the question, and never with the thesis---as much of a thesis there can be in this post, which is only implied. An unbiased question to be asked should be, free licenses or not, is WISC worth it? Well, no: * Windows -- Yuck. The only reason to ever want to develop on Windows is if you are using the AllegroCL IDE[1]. Windows as a server? Is there ever any argument there, or is just acquiescence due to the rest of the stack? * IIS -- Seriously? Have you ever had to manage a farm of servers all running IIS? There may be tools out there to automate IIS maintenance across servers, but do they beat good ol' text config files? * SQL Server -- Fine, it may have its merits without needing 10 years of experience, so again, where's the SQL Server vs MySQL practical comparison? * C# -- Mixed feelings. If you're stuck with the above three, not too terrible of a choice if you know the language well and are in a hurry. Else, learn Boo. Pardon my sarcasm, but there really is no point in belaboring the merits of WISC in terms of performance or productivity. It has its place, and its values, but this leads to a different discussion. But here's kind of what I felt[2] when I was developing on the MS stack at my previous job: "I once saw a nature special in which some insect or other dragged some other dead insect somewhere then turned around and dug a whole for it to bury it but the researchers moved the dead insect a bit while it was digging so it had to drag it back but while it did they filled in the hole and back and forth this insect went indefinitely until a PETA sniper took out the researchers."[3] [1] The AllegroCL IDE is only "full-fledged" on Windows. [2] After taking the red pill, of course. [3] Kenny Tilton on comp.lang.lisp
- tzury 16y agoSorry, but with all the respect I have for Joel and Jeff, almost every-time one tells about "why I prefer using windows for my scalable website rather than open source solutions", it reminds me the quote from the Woodie Allen's movie "Doc, uh, my brother's crazy; he thinks he's a chicken." And, uh, the doctor says, "Well, why don't you turn him in?" The guy says, "I would, but I need the eggs." It is all about an imaginary benefit, as an outcome of a silly process (eggs from that imaginary chicken, saving $$ by choosing MS). Even if you tend to believe MS-SQL is the best database out there, there is no way, coding/testing/distributing your layers (and trust me, there are plenty of them at SO) in C#/Windows is better than {Python||Ruby}/Posix. This is my opinion, based on my experience from smaller scale web apps, if at small scale the gap is huge, when things grows to millions of page-views a day, the gap is far larger. Just try to imagine friend-feed, reddit, facebook, justin-tv or any other large website, you name it, scaling and pushing versions on top of MS platform.
- dangrossman 16y agoMySpace is WISC and bigger than many of the sites you named.
- deleted 16y ago[deleted]
- tzury 16y agoapparently, myspace is powered by pimpled faced geeks (see output below [X-PoweredBy]). But that was said as a joke, talking seriously, there is no doubt, the web is powered by the open source software. Most of the major sites, are using the tools which are not made at Redmond. There are however, some large sites which are exceptionally using the WISC stack, but amongst the largest sites, take the top 100, top 1000, you name it, they are the minority. root@clonezilla-srv:~# wget -O- --server-response --spider http://www.myspace.com/ Spider mode enabled. Check if remote file exists. --2011-02-02 13:25:18-- http://www.myspace.com/ Resolving www.myspace.com... 216.178.39.11 Connecting to www.myspace.com|216.178.39.11|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Cache-Control: no-cache, must-revalidate, proxy-revalidate Pragma: no-cache Content-Length: 74124 Content-Type: text/html; charset=utf-8 Expires: -1 Server: Microsoft-IIS/7.5 X-Server: 896c6f7da640823d4508c54f3b48fc12058736fbc4e59bcf Set-Cookie: MSCulture=IP=81.218.172.217&IPCulture=he-IL&PreferredCulture=en-US&PreferredCulturePending=&Country=SUw=&ForcedExpiration=634322139193426057&timeZone=0&myStuffDma=&myStuffMarket=&USRLOC=QXJlYUNvZGU9MCZDaXR5PUtmYXIgU2FiYSZDb3VudHJ5Q29kZT1JTCZDb3VudHJ5TmFtZT1Jc3JhZWwmRG1hQ29kZT0wJkxhdGl0dWRlPTMyLjE4MTcmTG9uZ2l0dWRlPTM0LjkzNTgmUG9zdGFsQ29kZT0mUmVnaW9uTmFtZT0wMiZMb2NhdGlvbklkPTA=&UserFirstVisit=1; domain=.myspace.com; expires=Wed, 09-Feb-2011 11:25:19 GMT; path=/ Set-Cookie: SessionDDF2=8Q/cYHD2nDXwG4IfpqngrVTCZxMtlFsPs8sS2KKXpeayPKeoIq6z3xJLZvQ7dssRE48xuBfthlzlt6O7FCHJxQ==; domain=.myspace.com; expires=Sun, 02-Feb-2031 11:25:19 GMT; path=/ Set-Cookie: MYUSERINFO=; domain=.myspace.com; expires=Wed, 19-Jan-2005 08:28:17 GMT; path=/ Set-Cookie: MYUSERINFO=; domain=myspace.com; expires=Wed, 19-Jan-2005 08:28:17 GMT; path=/ Set-Cookie: USER=; domain=.myspace.com; expires=Wed, 19-Jan-2005 08:28:17 GMT; path=/ Set-Cookie: USER=; domain=myspace.com; expires=Wed, 19-Jan-2005 08:28:17 GMT; path=/ Set-Cookie: SECUREUSERAUTH=; domain=.myspace.com; expires=Wed, 19-Jan-2005 08:28:17 GMT; path=/; secure Set-Cookie: SECUREUSERAUTH=; domain=myspace.com; expires=Wed, 19-Jan-2005 08:28:17 GMT; path=/; secure X-AspNet-Version: 4.0.30319 X-PoweredBy: Pimple Faced Geeks Date: Wed, 02 Feb 2011 11:25:18 GMT Connection: keep-alive X-Vertical: globalsites Length: 74124 (72K) [text/html] Remote file exists and could contain further links, but recursion is disabled -- not retrieving.
- bascule 16y agoAm I the only one who noticed this? "This entire site is serving 16million pages a month and we’re doing it off of 2 servers, which are almost completely unloaded. So we’ve got a ton of headroom on those 2 servers – one server is a webserver, the other server is running Microsoft SQL Server 2008 and they’re both 8 core Xeons." They have only one web server and one database server? Does Joel not understand the concept of "single point of failure"?
- dansingerman 16y agoTo be fair this was from April 2009; I am sure after their expansion and funding since then this has changed. However Jeff/Joel (from listening to their podcast when they did it) seemed to have a massive black spot when it comes to some areas of web scaling that I would have thought were trivial. e.g. saying it was extremely hard to scale beyond a single webserver as it held session state (they seemed to have not heard of memcache)