While Microsoft might be a good solution for many people (Use what get the job done), this specific article has absolutely no real reasons why you _should_ use Microsoft. The truth is if One 8-gig windows server is what he needed for his start up he could get by with one 8-gig Linux server and save a couple of bucks a month. While that might not be a big deal now, if he ever wants to get big, those little costs start to add up.
Also while its great Microsoft is subsidising his starup via the Biz Stark program, we have seen many times what happens when you rely on "free" to run your buisness. Even tually he will need to start paying for those software licenses he is getting for free and by then he might not have a choice in what platform he is using.
>"this specific article has absolutely no real reasons why you _should_ use Microsoft"
He does give some reasons, which might not apply to everyone is another thing:
(from the article)
Because I love C#.
Because "MS is expensive" is a myth.
Because of Visual Studio
Of all the three I am very agreed with the third one. I wish it would be different but I haven't used a better alternative to VS so far (XCode, Eclipse, Netbeans, etc. just didn't work for me for several reasons )
And the list seems to be missing the most important point.
The .Net Framework is extremely powerful and extensive.
The number of problems the framework has prevented me from needing to solve is staggering. We get work done here, fast.
Eg. Recently I had to convert times from any random time zone into another random timezone accounting for daylight savings etc. I cannot imagine having to solve that problem in just about any other language suggested in this comment section.
Wow I hate VS so much, Eclipse is so much better! I guess it's just personal preference.
I like C# a little more than Java, but I cant stand assemblies. Jars are much easier to handle.
edit:
Troll? Not.
Like a very simple thing: quick watch in debug blocks the edit window? Really WTF?! I have to move it the second screen to see the actual code. I can name a lot of these small annoyances.
I can't help but feel like you're trolling. Eclipse is a slow, bloated, feature-laking pile of crap. I honestly can't believe anyone would prefer it to, well, just about anything else. I've used it and I get by on it when necessary, but in terms of preference its at the bottom of my list.
Rubbish. Use the latest version with an SSD with 8GB ram and it flies - SSD and ram are cheap enough to not be a barrier to entry, either. It's got more features than any other IDE I can think of, as well as a pretty huge library of plugins. Sounds like you're the one that is trolling. If Eclipse really was that bad, nobody would use it, and it wouldn't be probably the most widely used IDE in the world.
>If Eclipse really was that bad, nobody would use it, and it wouldn't be probably the most widely used IDE in the world
I don't think this means much. It has (poor) support for just about every language under the sun and its free so of course its going to be widely used. It has many features for Java, but features for other languages quickly fall off a cliff. But its the slowness that is a showstopper for me unless I absolutely must go with eclipse. Yes, eventually computer technology will advance to the point where its bloated codebase is no longer a liability, and perhaps we're approaching that. I use the Juno release occasionally for python programming and everything I've mentioned still applies.
Personally I'm not a big fan of plugins in my IDEs: they always feel slow and clunky with a "bolted on" feel. This has been true of every IDE + plugin environment I've tried so far.
I agree, he could easily be using a JVM-based stack to get the same or better efficiency out of his 1-server configuration.
Also there's some clearly naivety when bragging about his "low cost" $200/month setup. His SQL Server licenses alone will probably triple or quadruple his costs when his Bizspark status runs out.
I'm not a huge fan of Java either, but sometimes it's important to get past that and either try and work with a language that's extremely effective for some deployments, or consider that the JVM supports quite a bit more platforms than just Java.
Oh you're not alone. I dislike Java as well, but there's no denying the power of the JVM and the ecosystem around it. If you really dig into it and look at it as a polyglot platform with choices like Groovy, Clojure, JRuby, and Scala, it becomes more palatable.
Regardless this post is not about .NET tooling, more about server efficiency and cost. Two areas where I think the JVM is a little further ahead.
In that case porting FROM it should be simple. TO it would be hard if you're using all those fancy features of your current DB. That's why I eschew all the sirens from Oracle DBA's of "oh... but Oracle can do that too!" Keep database activities in the database and application activities in the app.
The problem is that MySQL deviates from the standards (all of them) in surprising and uncomfortable ways. porting from MySQL is fun, when, for example, your target database actually ENFORCES the constraints that MySQL accepted but silently ignored. MySQL doesn't have that feature, but it won't bother to tell you.
Postgres, Oracle, MS SQL all support a (very large) common subset of features, so if you avoid stored procedures and db-specific features, you can port among them easily. This is not true for MySQL.
In my experience, MySQL lets you get into a state where questions like "hang, on - what's the difference between a DATE of '0000-00-00' and NULL?" are commonplace. This makes porting from it... not simple.
Although I have no experience with MySQL, this kind of problems have to be resolved by using LINQ to SQL since every db type is automatically mapped to its .NET counterpart. The DateTime .NET type then has only one representation of null.
Or what you're saying is that if you store a date of zero VALUE to MySQL it could be magically replaced by NULL internally? That would be really crazy.
To be fair, the post is titled "My start-up is Microsoft-based..." not "Here's why your start-up should be..." I feel like he just wanted to make a fair case that Microsoft isn't impossible to deploy as a viable solution for a start-up. In start-ups versus say...a corporation , there is a write-off of Microsoft pretty much out of the gate. I agree with most companies, there are certainly a stack of reason why not to use it. But, its nice to see someone putting some personal reasons out there why Microsoft tech isn't useless to a new, fledgling company.
It seems a lot of MS stuff, used properly, scale well and easily, making it particularly suitable for single founders or small teams where they don't want to devote a lot of time to ops (while still keeping it in-house).
Becoming a member of their "BizSpark" program literally provides you with all the software free of charge. Entering BizSpark is easy and costs nothing.
If you can get in, of course, which is far from certain. My company seemed to fit the criteria well a couple of years ago but was rejected without explanation. Of course, now we are profitable enough to afford any software we want but have stuck to open source as, well.. that's what we built our stack on instead ;-)
Don't forget StackOverflow: http://highscalability.com/blog/2009/8/5/stack-overflow-arch... - apart from the somewhat unbelievable PlentyOffish project, it's the only prestige project based on MS software most people will recall. In their 2011 update, they claimed to be using "a lot more Linux machines", because apparently it's fun to develop using Microsoft technology, but for some infrastructure components (proxying, Nagios...), there's no way to beat Linux even if you're a MS fanboy. ;-)
Plenty Of Fish shouldn't be considered unbelievable. I've been following information about their infrastructure from the first moment they posted about it. There's nothing unbelievable about it at all. Over the years he has openly described changes to the site's setup as they've scaled, and it makes fine sense.
Stack isn't the only prestige product. Nearly all of Microsoft's infrastructure runs on their own dog food. That's a lot bigger of a product than Stack Exchange is.
I got into it with my game company but once you graduate, then you need to start paying up. Maybe it only cost him a couple hundred bucks a month now but once he needs to pay for the licenses then that's when he can judge if it's really worth it. Until then, he's just getting stuff for free and saying how great it is.
>It seems a lot of MS stuff, used properly, scale well and easily, making it particularly suitable for single founders or small teams where they don't want to devote a lot of time to ops (while still keeping it in-house).
This is the thing, I've regularly scaled MS, almost RAD tool technologies to multi-thousand request per second scenarios. Normally for in house things, so I've had the benefit of warning for demand.
But it gives me the nicety of fast to dev tools, the fact maintaining C# code is almost pleasurable at times, with good performance.
Sure some custom C in Linux kernel land system will be faster, but the price performance is really good.
Comparing MVC 4 to Ruby on Rails and Django for a new project, the performance of MVC4 was an order of magnitude better under load.
But at the last HN meetup I went to in London they were taking an informal survey of languages. Despite having Erland and Lisp mentioned, the hosts didn't ask about C# or F#, despite my knowledge of at least 10 people there heavily in to it, I'd have guessed at least 30 people must have been.
You also get some bizarre comments, a friend of mine who spends most of his time in just one nameless language, half ask/told some people that Asp.Net doesn't scale... Some people have a religious zeal against it I think. Which is a shame, C# is a great language, and if people want to 'stick it to MS' go contribute on mono instead of bitching about MS!
This has nothing to do with MS, but why would you set up such an architecture? If one of the apps hits a memory leak (their HeatTest project did), than all of your other critical services/apps are interrupted.
That costs us about $200 a month. By the way, that's Amazon
What Amazon configuration gets you 8GB or RAM for $200/month?? Am I missing something?
Database servers for all of the above
MS SQL licensing costs are crazy stupid. You either (a) have to fork over about $2-3k fee or (b) the cloud based cost is an extra ~$150/month on top of the standards windows vm cost.
I'm genuinely curious about all of the above, because I am working with a MS-based startup and would be good to know.
But most importantly, because the customer doesn't give a darn.
>> All our stuff runs on one (1) server
> This has nothing to do with MS, but why would you set up such an architecture? If one of the apps hits a memory leak
> (their HeatTest project did), than all of your other critical services/apps are interrupted.
It's hard to believe a company would "admit" to running all of these services on a single server. There's no way I would pay for a CRM or Ticketing App (relatively mission critical for many companies) that wasn't highly-available.
> It's hard to believe a company would "admit" to running all of these services on a single server. There's no way I would pay for a CRM or Ticketing App (relatively mission critical for many companies) that wasn't highly-available.
One also has to take into account how many systems that are distributed over n servers have actually n points of failure. My estimate would be "quite a lot".
Very true. It's expensive and complex to have real HA/redundancy, but they can't even bounce a DB server without taking down every one of their apps. I have no idea about administering Windows servers, but based on my experience with Windows Update on the desktop, I would imagine that you need to do that relatively often.
Hopefully they have a staging environment running somewhere internally at least.
> What Amazon configuration gets you 8GB or RAM for $200/month?? Am I missing something?
You can easily get near 8GB for way under $200/mo using reserved pricing. A one year reservation, heavy utilization m1.large gives you 7.5GB of RAM for $40/mo and $676 up front, or about $100/mo total.
Wait, am I an idiot then? I thought $200/mo just gets you reduced per minute rates? So ~720*0.00x + $200 = $y/mo. As far as I know, there is no way on Amazon to pay a flat monthly fee. It's all "pay for what you drink".
I think you actually understand it just fine but might be confusing yourself a bit.
Paying the reservation fee does just get you reduced per minute rates, but the fee is not $200/mo. The reservation fee in this example is $676 for an entire year. Once you pay that, your hourly rate for a single m1.large goes down to $0.056. My final $100/mo total is based on 24/7 uptime on that single server you've reserved.
Keep in mind that BizSpark "runs out" when you pass a million dollars per year in revenue. At which point you can presumably afford a thousand dollars for a SQL Server license.
Fortunately, they reinvent the program every few years. So in reality you can be in EmpowerISV for 3 years, then BizSpark for 3 years, then [thing that replaces bizspark in 2/2014] for 3 years, etc.
I've personally been in Microsoft's "let's give developers everything for basically free" programs since 2006, and am not worried that I'll suddenly face a crippling bill down the line.
Shafting little startups for a lousy grand or two really is not their business model. Think about it for a second and it'll make sense.
EDIT: To be clear, I'm not advocating gambling your business on Microsoft's goodwill here. For the same reason I don't advocate building a business that a single bill for $1,000 can kill.
The worst case result of MS pulling the rug on all their BizSpark-esque programs is an extra couple thousand dollars a year in the expense column. Here's hoping nobody here works for a shop where that would be a big deal.
What? You're basing your business continuity on a corporation creating a special 'free pass' for you every 3 years explicitly? Because they've done it once before? This seems like a terrible idea. Godspeed man, godspeed.
One could just as easily scoff at someone for basing their business off of "open source community supported" tools.
But, instead, the realistic position is to understand Microsoft's tools and programs will be a decent choice for years to come, just as using FOSS would be.
How is that even remotely comparable? I'm not saying anything about the quality of using MS tools - they're great - but they have a fee attached. They specifically say you will need to pay that fee within X years. Pretending the fee doesn't exist because you don't have to pay it until next year is what I'm scoffing at. Not the tools, the idea that MS will continue to make their expensive tools free when they have put an expiry date on that free license already.
Open source community supported tools are completely different. The price and license are very clear - $0 up front, pay for support if you need it. Don't want to pay for support? No problem. Need a new feature? No problem, pay someone regular rates to add it. You can't lose access to anything because you already have everything. You can't be sued into paying because the GPL specially disallows the creator from suing you.
We might be talking past each other here. No one is saying that it's a good business plan to assume that programs like BizSpark will never run out. That is of course a bad idea. But since no one suggested that, I assumed you were saying that using things like BizSpark at all is a bad idea.... which is not the case.
A valid business plan can be created that involves the pricing structures that Microsoft gives. You can have a plan that involves using a program from MS that gives you their software for free now, with the idea that you will eventually be able to afford to pay for them. Any company worth existing should be able to afford it eventually.
And, hey, look, it even happens that those windows of time can be extended. No one is saying that it would be a good business plan to rely on programs like BizSpark never ending... but it's still worth mentioning that MS has been forgiving if things don't go exactly as planned, and provides a way to delay the fees kicking in.
In theory, maybe. But, let's say you want to go maintain X11/GCC/Qt (or even xterm), I doubt "anyone" can. Some people are full time developers on these projects, paid by some company we somehow rely on. You cannot just replace an expert working on such a big piece of software.
Of course, using free software might widen your "trusted base" compared to the situation where you go full MS.
As a graduate of the BizSpark program, $100 gets you full license to the software you were using. Software licenses are then transferred to your organization. You don't suddenly incur $1000s of expenses.
but one instance on Amazon is not high availability.
The rest of your post could be read as apples with oranges, Charm was expensive because they made massive architectural mistakes. End of story.
This is not to say that what you are doing/saying is incorrect. Your stuff works and is able to cope with the load thrown at it on one server.
To be honest I'm quite mystified why startups boast about using n instances to serve a few thousand hits. Node, some python frameworks and ruby are ridiculously wasteful[1]. All it tells me is that you've not though about the best way to do things, you've just used the latest tools and smooshed them together. If you had to have more than one server to handle 2[2] tickets a minute and 1 hit a second on your website I'd be questioning your programming skill
The one thing I do take issue with is your implied claim of high availability. Hourly backups, and no hot spare or active active replication is not high availability. Yes you can rebuild an instance in 5 minutes, but only in best case, and you've still lost up to an hour's worth of user data (around 60 tickets). That is a commendable recovery rate, but its still downtime.
[1] depending on usage, of course.
[2] using stats from the article
I'm a little late to the party, but can't believe so few people brought up the lack of availability admitted in this article. The OP is admitting that the company's official stance of availability is that it will restore from 1 hour ago ... and lose client data.
Losing client data is the worst thing you could do as a SaaS. The second worst thing you could do is to not be online - e.g., as someone pointed out; because one app (or even something out of your control) took out all your services.
MS is not really the story here. Cost of HA in typical Linux vs. MS stacks, which wasn't addressed at all in the article, is what is relevant.
Depending on what version of SQL Server he needs, it's either a $0.136/hr additional cost to add Web Edition or $0.610/hr additional cost to add Standard Edition. That works out to an approximate $97.92 or $439.20 additional cost per month. So, not a huge jump in cost.
I'm not sure why anyone, with the technology options available today, would choose a single monolithic server approach and scale that vertically.
I think this is just poor design and probably not an MS stack issue. But could this be an MS community thing, where they generally prefer proven technical solutions from 2001?
Possibly because it's actually pretty cost-effective. You need at least two machines for availability. But you get more bang per buck by making those two machines bigger than by adding a third.
Until you hit the limit of what you can do on commodity-ish x86 servers, and would need to start buying Gucci kit from Sunacle or IBM or whoever, at which point your CFO is going to start crying like a baby.
This may be cheaper up-front, but scales terribly which will increase costs exponentially whenever there is a need for growth.
Additionally, like others have mentioned, a simple memory leak from one app will affect every other app on this box. Also, it doesn't sound like there's any redundancy. What happens when the HD blows up?
If they fired these app up as separate VMs, they could at least scale each to what their needs are and only pay for what they are using.
I manage an app architecture that consists of several Heroku apps along with a couple DBs at mongoHQ for under $100/month. Heroku definitely isn't the cheapest solution, but it allows me to scale horizontally and takes the massive load of sysadmin tasks off my back so I can focus on development.
Because the original poster shouldn't need more than one server to deal with 1 ticket a minute. (1500 tickets a day) you should be able to grow that by 1000% and still not break a sweat. In fact it should be able to cope with 1 a second.
In reality most people are never going to deal with that level of scale.
Yeah, 8gigs of RAM on ec2 works out to about a m1.large? I assume they're running SQL Server Standard Edition (do Saas apps like this one qualify for web edition?)
I don't want to bash microsoft or anything. But 2.5 daily visitors and 1.5k new tickets daily can probably be served by nginx, a raspberry pi and a potato.
How much of this is old-school admin practices vs. the new "cloud" philosophy of spinning up lots of boxes that you don't care about? I don't see a Microsoft vs. Open-source argument for alot of this stuff.
Many of the devs I see working with "cool kids" tools don't know anything about operating IT environments, yet they are playing admin. They're spinning up dozens of single-purpose VMs, sometimes to perform trivial tasks.
The motivation is often to reduce the need to have dedicated admins ($$$) and change process (time). But... managing dozens of VMs ain't free either!
This--and by "this" I mean cultural or philosophical differences--is what I feel is ultimately behind the stark performance gulf described in the OP's article.
I love Microsoft's technologies. I use Windows on my development environment (even though I don't do Windows development; I know, I am crazy). I own a Surface and a Nokia Lumia phone. Nevertheless, I also know that there's nothing absolutely fast about Microsoft's web stack [1].
I suspect what is at play here, instead, is one side being efficient with resources and the other being reckless.
My opinion is that some platforms and frameworks come bundled with a set of philosophical characteristics that most practitioners adopt. Some popular open source web frameworks include a poster of Knuth's famous quote about premature optimization and adopters consider that quote to mean more than it does, thereby expressly avoiding spending time thinking about performance because doing so might lead to time spent on optimizing code and that is evil.
Further, in our efforts to capture production-grade deployment instructions for many open source frameworks, we were left wanting, often having to turn to community opinion rather than specific instructions. Many frameworks' communities were Balkanized, leading to uncertainty about the best performing production-grade configuration.
It's not surprising when systems get built and deployed without any performance benchmarking, let alone tuning. I have no idea what "Charm" was or if it suffered from this sort of thing, but I've seen the described situation before and suspect it's fairly common.
Meanwhile, although I've not been a Windows developer, I suspect their culture comes bundled with a modest helping of being mindful of CPU and disk resources and preparation for production deployments. Microsoft is too friendly with corporate IT to leave production deployments a guessing game.
Finally, perhaps the OP in particular is just especially careful about performance, perhaps without even consciously making it a priority. Certainly none of us think it should be especially difficult for an m1.large server to process hundreds of thousands of dynamic web requests per day. It's more instructive to me, frankly, that we have come to think that is noteworthy.
It's not just a cool cloud thing. Managing multiple services on a single host comes at its own price too. Trying to manage security separation, disk space, specific user access, projecting bandwidth / cpu / memory / disk usage in the future, figuring out which services cannot run on the same host for yet another set of reasons. Then you add HA for only one service and end up with host A with services X,Y,Z and host B with X,P,Q.
There's a lot of great things about being able to say - these are the two DNS boxes. They pretty much serve static data and have minimal traffic - stick them on two minimal instances which cost us ~0, but give a very high isolation from other failures.
It depends on the technology stack that you're using. If your apps are .Net/CLR-based, it's very possible to get the separation that you're looking for. On Unix this is done all of the time with JVM-based apps as well.
End of the day scaling horizontally or vertically requires real engineering and operational discipline. I am seeing much more sloppy horizontal scaling than I used to, because the marginal cost of a VM is so low.
The difference is, when scaling up everyone intuitively understood that many services on one OS instance introduced risk. When scaling out, I think people with weak ops backgrounds intuitively feel that the OS instances are giving them a security barrier. That's a dangerous assumption!
The simplicity of spinning a VM is obscuring the complexity of the system as a whole.
> If your apps are .Net/CLR-based, it's very possible to get the separation that you're looking for.
I'm not sure I follow. Unless I'm missing something, the only thing this separates is the memory between applications and optionally user privileges via the standard permissions / security domain. Other resources are completely shared - that is, one app can fill the disk / bandwidth / server thread pool / ... of other apps, right?
It's not free, but configuration management tools make it pretty cheap. There's a reason Puppet/Chef/Ansible/Salt are getting a lot of attention in the DevOps world.
>"But most importantly, because the customer doesn't give a darn. My clients don't care what I'm based on as long as it works. So when choosing a platform for your great idea - just go with whatever platform you're comfortable with and start hacking, stop wasting time."
This is really the best advise. What you actually use is less important than you being comfortable with using it (assuming it is not something totally bonkers). The customers want results, they don't care if you wrote it in Ruby or .net. They won't know the difference anyway.
Every bit of my little software empire runs on a single Windows box. That includes my 3 main money-making products, a couple dozen smaller sites being hosted for consulting clients and my partner's businesses, and the Expat blog. Lots of steady-state traffic to lots of sites, several Techcrunch, Reddit and HN poundings, nothing to write home about as far as downtime or drama in the 6 years it's been running.
Say what you like about Microsoft, but their server stuff just plain works.
I've worked in IT for 12 years. Microsoft server stuff never just works. I'm in the process of replacing a $1 MM video asset management system that sits on top of Windows Server with OpenStack/Debian precisely because of this.
I've worked in IT for more than 15 years. More often than not, Microsoft's enterprise products do "just work." In fact, due do volume pricing (making server 2008/2012 licenses very cheap), around here I recommend Server 2012 w/ standalone LDAP role when people need an LDAP server. Why? Because it just works.
An a related note, I, too, am in the process of building a new video management system based on windows (why anyone would want to sit and stare at solar PV panels all day is beyond me). Install and set up has been a breeze.
Don't get me wrong, I'm more likely to use linux for things. Most of my development is done on linux, our video wall display management, AMI emulation platform, any many other tools and utilities, but MS does have its place, and where it fits, it usually beats everything else in set up configuration and management.
Have you ever had Active Directory go sideways? I mean, really badly? In a large (100+ employee) setting? If not, please don't say "it just works", especially when you're calling to get "enterprise support" from Microsoft and not even the engineer you're on the phone with can explain why your configuration is failing.
Microsoft might have had its place. On the desktop. 5-10 years ago. But for environments where you need uptime? No. No. No.
EDIT: With regards to your video management system, does it have to be broadcast grade? Mine does. The FCC doesn't let you explain away fines for not being on the air "because the Windows box crashed".
100+ Employees? Well, my current environment is about 500,000 users across 3 campuses, and 4 domains. Throw in federated authentication (shibboleth), custom apps, *nix auth, etc.
With that in mind: It just works!
With any large deployment (100 users isn't large) there are bound to be difficulties. That isn't the exclusive realm of Microsoft. As mentioned elsewhere, have you ever done a large deployment of kerberos? I have. I'll take AD on the infrastructure side any day. "Sideways" AD is a whole lot easier to manage than a sideways MIT Kerberos5 KDC.
Microsoft does have its place. In the enterprise, in the server room, today.
Not really. AD is krb5 mutual auth backed by an LDAP datastore. LDAP is also used for storing various bits of other metadata. You can (with much pain and sadness) implement a AD-like system using MIT Kerberos5 and OpenLDAP (I've done it)
In fact, even saying that the LDAP portion is extended is a bit misleading. In fact, AD implements a fully compliant LDAP interface. It does lack the more common LDAP Schemas (though they can be installed if you wish), and relies on a schema that MS developed, but the LDAP server is not, itself, extended.
It does just work, very well in fact. I've run a 1.3 million uniques / month site on a $150 / month Windows 2008 server. Zero downtime. Zero crashes. Zero maintenance. Zero effort at all really.
MySQL + IIS + Win2008. The server was cheap, fast, and trivial to set up and operate. I'd have no concerns about using Windows Server again.
Meanwhile millions of businesses are able to get it to work quite well. Ever use StackOverflow? NewEgg? Their server and tools revenue continues to increase by double digits. You think that's all media manipulation? Go search Dice for for the number of openings.
Just because someone was not able use the right tool for the right job in your instance doesn't prove anything. One of my friends used Windows Server to stream popular sports and got so much traffic that he got shutdown by Dish.
It would be more enlightening and people might agree with you if you told us what was going wrong to cause you such pain?
I have had many windows servers and often you can almost just forget about them entirely once they're setup, which takes all of like 2 hours even if you're using a whole new stack.
Excellent point. I apologize for my brevity in my previous posts.
I agree that you can't color Microsoft's server offerings by their older products (Server 2000, 2003). I do agree that 2008/2012 are much more solid products comparitively speaking, but I still would not use them in a production environment for several reasons:
Debugging: Have you ever attempted to debug edge case issues in a Windows server environment? I don't mean ASP/.Net issues, but I mean issues within Server itself (random reboots, OS hang, etc). Sometimes, your only answer is "Windows does that occasionally". I have Linux servers with uptime measured in thousands of days, almost as stable as the solid state networking gear.
Cost: I worked on the CMS detector for data taking at the LHC. We had over 6000 servers, not only doing data crunching but also providing REST services, database services (for both data and parallel file system metadata). Everything was Linux. The licensing cost alone for just the Windows OS on all of those machines would have been massive.
Patching/Upgrades: The only time you need to reboot a Linux box is when you're upgrading/patching the Kernel. Windows boxes? Patch Tuesday. Rarely have software updates broken a Linux box, and if they do, its much easier to revert back to a previously known good config.
I can go into greater detail if necessary. I agree, 12 years of experience is just a drop in the bucket, and my experiences are anecdotal in nature. I just rarely see (if ever) someone using Microsoft software in missions critical environments.
I don't, but I could probably check my email. I was responsible for benchmarking boxes from major manufacturers for the selection process (which ended up being a waste of time, because only one of the vendors met our price criteria).
Amazon and Google write their own custom code. Hell, all of the major "linux" users have hand-built infrastructure that they don't share with the open source community.
Stackoverflow and Newegg use a vanilla Microsoft Stack.
1) If traffic is low enough, you can fit 100+ different apps on 8GB of RAM, regardless of tech.
2) Hourly backups are better than nothing, but not good enough if you want to make claims of durability and/or high availability.
3) BizSpark is more or less a loophole (they don't always accept), and when they do, you have to hope you go out of business w/in 5 years or never make more than $1M in revenue, or you're out.
4) Snarky comments about what the "cool kids" are doing hardly (in)validates anything.
5) If you enjoy the Microsoft stack and it works for you, then awesome. We're developers and should enjoy what we work on day in and day out.
6) My current projects have me bouncing back and forth between Node.js and .NET on a daily basis. Aside from getting an order of magnitude more enjoyment from developing w/ node, I'll also add that our node servers (plural) have been running for ~2 years for a total cost that isn't even approaching the cost of my Visual Studio license. If that makes me a "cool kid", then I'll rock that sag all the way to the bank (if cool kids are still sagging, that is).
Our startup diphur.com is 100% Microsoft and also went through the BizSpark program and highly recommend it.
When you exit the program you get to keep all licenses free with all future patches. We exited the program 2 years ago and have yet to buy a MS license for IIS or SQL.
When we upgrade to Windows 2012 which is not free, we will let our business plan we implemented pay for it and choose our MS Server versions according to function.
80% of my costs come from securing client data and having a HA environment. We were using Oracle DB for many years, switched to PostgreSQL last month due to usability problems, not cost.
I hope you make clear to your users that there will be data lost (to the point of your last backup) in an event of failure (which is certain thing in AWS).
If you think Multi-AZ will save the day: we lost a whole region of data in 2011 and again in 2012. If we didn't have a slave node on another region, we would have to restore a 13 hours old backup, that would pretty much make us go bankrupt.
The author doesn't explain why his stack is better than
Java/Scala/Go/C#(Mono) + MySQL/Postgresql + Linux/BSD.
You don't have to use Ruby/Python/PHP/Perl/node.js to have an open stack. What happens in 3 years when his bizpark runs out? What happens if he is successful before then and is running many servers and DB instances.... What if he need to re-arch to support HA?
Its almost like his argument is.. meh.. in the short term running a Microsoft stack wasn't overtly harmful, since its what I am used to I discarded other considerations...
BizSpark is fantastic, not for the free MS software but for the $150 a month of free Azure use for 3 years. For my bootstrapped project which has a significant server-side component it has removed my only monthly expenditure. There is also no compulsion to use MS products or to develop for Microsoft platforms either as i'm using Azure to power the Linux based backend of my iOS app.
BizSpark is kind of awesome for startups. Even if you're not "Microsoft-based" you can still take advantage of their free software (Windows, Office etc.) which otherwise will cost you a small fortune.
I'm amazed that more people don't use Mono. Best of world to me is using Visual Studio for local development, and then deploying to a Linux server running Mono and Apache/Nginx. It's actually a lot less painful than people think, after you get ramped up a very small learning curve as to what is not supported in Mono.. And if you want to go completely free, MonoDevelop also isn't too bad, though you will find an occasional bug
Unless mono has improved dramatically in the last 5 years it has that poor man's C# feeling about it - when I had to develop for it was nightmare - it had problem managing a lot of io buffers and silent improvements like making dictionary thread safe had some very very bad side effects in non blocking io applications.
So compare like with like. If you had a similar architecture using open-source equivalents - not trendy mongo/node/etc, just basic Java/postgres - what have you got? A similar, slightly worse language. A much bigger open source library ecosystem. Similar, slightly worse IDEs. Better admin and deployment options. Free licenses forever, rather than until MS decides they want you to start paying.
You can write distributed large-scale SoA under microsoft, and you can write high-performance monolithic applications under open source. Stop conflating two very different issues.
I totally understand the "I like C#" argument - that's a personal taste, and we all have personal tastes when it comes to languages.
What I don't understand is the "we can run it on one server, so Microsoft is better". The same sites could very easily be run on open source software on the same hardware or even less. I've never heard anyone, not even Microsoft, claim that Microsoft server software requires less RAM and processing power than open source software.
Don't forget about Mono. You can write code in your favourite MS language (F#, in my case) and have all the benefits of cheap linux hosting and your favourite SQL database/NoSQL solution.
I really don't see any point why this post has been upvoted to this position. This someone got some discount because of being in some MS sponsored program and has no clue on how safe or unsafe his architecture is and has absurd rational on pricing. Good for him if he is happy to build with his MS gifts. Only if I could down vote this post and down rank it to absurdity.
BizSpark is a better deal than most people realize.
You get permanent licenses and a decent amount of cloud hours. You get office. You get dev tools.
When the program finished, if you are not making enough money to afford to pay them, then you should just shut down and do something else. But even if you keep going, you can probably live on old versions for 3-5 years before it gets too painful.
Wouldn't you be doing something horribly wrong if you couldn't serve 70k requests a day? It's actually less than 1 a second: 70000 / (60 * 60 * 24) = .81
I think this article is more about distributed systems being costly (yes) and perhaps overly complicated for the types of applications most people build. I agree. However, you could easily do the same with Linux.
Requests to a typical smallish site will not be uniformly distributed--not by a long shot. Given that the peak is what matters, if we might get a day's worth of traffic in a single hour, that's 19 requests per second instead of 0.8. Those 19 transactions per second will still sound tiny to many people, but a couple months ago we heard that Mt. Gox could only do 37 TPS. So 70k requests per day is not nothing, especially assuming non-uniform distribution, minimal effort to optimize performance, and cheap hardware (or virtual hardware).
On my home dev machine which is nothing to brag about (i5-750 overclocked to 4.2 ) golang was able to process that per second on a single core if you keep the static stuff prezipped in the ram.
I don't see what the anecdote about the other person has to do with your story. It seems like you're citing it to try to imply that Linux can be expensive, but that's not really a valid point based on that anecdote. Their software costs were $0/mo of that $3000/mo. Linux has nothing to do with whatever reasons they had for such expensive server costs. There is no question that whatever their server costs, they would have been even higher if they had been Microsoft based.
Secondly, I'd disagree with your assertion that the customer doesn't matter. Customers may not care when they're using your SaaS product, but my company is in the market for new support software and we looked at yours but because yours is Microsoft based, it's disqualified. We are looking for a self hosted solution. So you lost at least one customer right here. I'm not making this up, this all happened a couple weeks ago prior to this blog post.
EDIT:
PS - I liked your previous blog post about A/B testing, so it's nothing personal I just think this one is kinda bogus.
I think it is not about Linux in isolation, but about the fancy, over hyped tech stacks you see people using.
About 6 months ago I was having a few days off, out in the wilderness so to speak, I decided to try this whole Go thing. When reading about it, I thought nice I like the actor paradigm, I was doing a prime solver from someone's tutorial, and... It was slow. Not slow, slow, but slow.
Compared the same thing to a similar idea in C# in Rx and in TPL, and in F# and in CamelLight, with one in Java.
For my preference the syntax of C# was the best, and funnily enough the old fashioned style implementation I did in Java was the fastest, but not by much at all. Go was about 20% of the speed of the java one, not much faster than the CamlLight implementation.
This wasn't scientific, this wasn't a fair comparison, but I am cynical about the 'buzz' or hype for some of these frameworks.
People often view things like Node.js as free. Which isn't true when you are paying for the hardware it runs on. The 'cost' of C# or MS SQL server isn't just the Microsoft licenses either. You can't look at these things solely in isolation.
However its rather un-interesting to say that a behemoth and status quo are actually good options. 'new' things are much more interesting, so get spoken about a lot more, but I'd love to know something truly high scale, highly available in Node.js, and how much it has really cost them.
Go tops the techempower benchmarks for concurrent db access and page rendering, and for pure math performance, it has an average case performance of 17% slower than Java( highly dependent on problem chosen of course )
Quite, Go 1.1 wasn't released 6 months ago. People were reporting 20-40% performance improvements[1] in 1.1 so maybe it would be faster now.
It is also certainly going to do with the fact I learn Java first some 13 years ago. C# some 8 years ago (I didn't care for it before it had generics / nullables, CamL 10 years ago etc.
Plus I can't find the tutorial I was using to let people tell me how bad it is.
The thing is, go back to something which was been hyped 6 months ago, as super-everything. You use it, and it isn't. Then 3 months later you see (unfairly!) the headline zomfg it's 40% faster, I can't help but feel 'meh', fool me once....
That said I will look at it again, its just today the tooling is certainly not as rich as I'd like, the libraries aren't there yet and I don't have the time to help make it better.
I do like learning new languages, even if you go back to the older one, it often helps shape new thought processes, and whilst I really do try to think in the manner fitting for it, it is very possible I went in with the whole when you only use a hammer, everything looks like a nail approach.
Linux has nothing to do with whatever reasons they had for such expensive server costs.
It might do. The point is that Node/Ruby etc aren't particularly efficient compared to C# and the CLR, so you need more Server power for a given application.
Techempower's benchmark's paint a different story than you describe. Node.js seems to be the fastest. ASP.NET MVC shows some strong performance in a handful of database tests but when it comes things like json serialization etc it falls behind the competition.
Edit: FWIW it doesn't test Microsoft SQL Server. Still, for most simple-ish web applications I can't imagine MSSQL server being significantly faster than Postgres or MySQL. Its selling point is really its feature set as opposed to its performance anyway.
>Edit: FWIW it doesn't test Microsoft SQL Server. Still, for most simple-ish web applications I can't imagine MSSQL server being significantly faster than Postgres or MySQL. Its selling point is really its feature set as opposed to its performance anyway.
More than just that, they tested mono, which sadly is often very slow, and didn't test on IIS.
The ASP.NET tests run on Windows (EC2) used IIS. We have a SQL Server pull request [1] but haven't been able to incorporate it yet and this will not be included in the upcoming Round 6.
I appreciate it might be cheating a bit to bring in a 3rd party library when looking at a full stack provider, but it would explain the discrepancy between Read and Write performances.
Additionally, with the EntityFramework (MS's ORM) when the security you are using is not that of the SQL back end, it can be beneficial to 'cache' it, rather than use a session each time. There are obvious cons to this, but it is a very real world scenario, one of the nice things about an ERM (Entity-Relationship-Model), well the only nice thing, is that it ensures the integrity of the data. Assuming you defined it correctly, which is sometimes an arse, in the same way you don't end up with the perfect 3NF design the academics taught us.
I've put a reminder in my calendar once I'm done on this project (all hands on deck time, as the business has imposed a deadline, without consulting...) I feel I could give a more realistic example.
For instance why is the performance in the Fortune example so good, yet so bad in the simple multirequest response.
Ultimately, I think people have to bench with something in mind for their intended usages.
If someone (as in this thread) is doing some massive data gathering with 6000+ nodes, well windows licenses will be prohibitive against any dev time saving, and ultimately, performance is going to be optimised so heavily a 'thinner' OS is obviously going to be a possible better choice.
This isn't always the case, for us the agile nature of what we are doing, the fact it's only a couple of hundread nodes means that we will have different demands.
Platform Performance,
Platform Cost,
Platform Dev Costs.
It is just an exercise between those three. Looking at some of the comparisons there, it reminds me of the whole BSD vs Linux thing that was so 2004. Oh BSD takes a few extra op codes to do hello world....
The problem is some people never include the use of say MVC4 or C#. It isn't that they are missing out, it is that they are so vocal about how bad the platform they have never used is.
The last HTML site I delivered, I could have done in about a third of the time, with much more reliable user experience if we had used Silverlight. It was an internal project too. Yet someone who had never even used anything but HTML decided it had to be a website.
I think people are just trying to rally against that cry. All I was trying to do is point out that those simple number comparisons are not only flawed / unfair but also irrelevant.
There isn't a one size fits all technology, there never will be.
> The point is that Node/Ruby etc aren't particularly efficient compared to C# and the CLR, so you need more Server power for a given application.
Node and Ruby aren't Linux (they run on all kinds of platforms, including both Linux and Windows), and Node and Ruby aren't the only alternatives to C# and the CLR (either on Linux or anywhere else).
> Customers may not care when they're using your SaaS product, but my company is in the market for new support software and we looked at yours but because yours is Microsoft based, it's disqualified. We are looking for a self hosted solution.
The final paragraph seems to answers his question with the statement that it is simply "what he knows best". And in fact the rest of the article backs that up with his lack of information about alternatives (as many of the comments here point out). There is nothing wrong with going with a solution because it makes you more productive for your small problem, but trying to make any conclusions beyond that seems forced. I am 100% sure that there is someone who could write the exact same article, but instead they use a single Linux box with PostgreSQL, emacs, etc because it is simply what they are comfortable with.
Ok, so I'm on about day 3 of trying to get a MS ASP.NET 4.5 environment set up, and I feel like killing myself. Every download is gigabytes and gigabytes. It feels like everything wants me to reboot my PC. Installations take hours at a time. On opening the project, half the references are gone, and I have to rebuild (takes ages) the solution to figure out what exactly is missing. Using NuGet doesn't seem to actually install many of the things and so I have to manually do it and wonder why some need me to put -pre on the end. SQL Server is a ~4GB download. Everything is hidden away in weird little dialogs and installation steps that if you mess up you have no idea how to fix. Windows is now taking up about 50GB and it's rising. Install steps appear to do nothing and then spring a window up after about five minutes. I don't know what is going on.
My co-worker and I just want to sob and have this nightmare finish. I never want to use Windows ever again. I need a fucking drink.
I miss being able to `apt-get install python-virtualenv postgresql-9.1 virtualenvwrapper; mkvirtualenv derp; pip -r requirements.txt` and be pretty much set up.
On the plus side I've read quite a lot of this book...
I'd consider Windows more readily, but you are a bit screwed if you do decide you want to dip in the Open Source pool. You can dip there, but it's harder and less well supported, and some things simply don't work. So you are tying yourself to Windows, and often, Microsoft tools. Fine if you're sure it'll work, but I would feel like I was gambling.
We're building a web-based saas on a Microsoft stack. We use coffeescript, sass, compass in our development environment and it works really well. There are open source libraries for doing REST, unit testing, performance testing and they work pretty well. Node.js and npm run on Windows. Mercurial always has and git now works as well.
It does sound a bit as if you were using a node.js stack on top of a Windows operating system, which I wouldn't exactly call a Microsoft stack. In which case there is really just the question of what you know better, linux ecosystem or Microsoft...
No, we're are using a Microsoft stack - ASP.NET MVC and Sql Server.
We're not actually using Node.js in that sense. I was just pointing out that it works well (we use Node and npm to run the coffeescript compiler - that's it)
I have several dozen asp.net sites and one startup (asp.net + background services). And people ask me why I use MS products, they are expensive. But reality is: prices of win shared hosting are almost exact like linux shared hosting. Windows licence on Hetzner (or many other win VPS providers) is 15€/m. I don't mind paying 15€/m, I spend more on coffee and cola, and dont make any money from that.
And for database, if sql express is not enough, I go with mysql/postgre, simple as that.
I also played with ruby and php little bit, but don't find any special advantage or stuff that are hard/complicated/long to do in .net, even they're nice products (RoR at least). All those tools looks very similar to me, and hosting price on VPS/cloud is really low also today.
Maybe one thing that's missing in .net compared to some other ecosystem is community, but last few years that changed a lot (to better of course).
2 SP3's from OVH would be both cheaper (89*2) and have way, way more bang for the buck than a single weak amazon instance. (E3 1245v2 8 ht cores @ 3.4ghz , 2 x 120GB SSD in soft raid and 32gb memory) If you wanted to run windows on those, you'd need to buy two licenses pushing an extra 50$ a month onto the price. You also wouldn't need to screw around with spawned instances in failover, and you could actually use the capacity of both systems at the same time to massively increase your initial capacity before it becomes necessary to expand that investment again and get more steel.
None of your windows based software will scale well horizontally, especially at the storage layer compared to the competition, and if you're relying on bizspark for the price advantage, you should also mention it expires in 3 years and you then either have to go full in to microsoft licensing and massively increase your software spend, or drop your engineering investment in the past three years and go with something off the MS stack. It sure is a neat trap from microsoft's perspective, but it's a pretty shitty deal for anyone that actually looks at it economically and long term.
On the other hand, if you build your apps around a horizontally scalable storage solution (of which there are about fifty hojillion these days on open source stacks) you have near infinite ability to scale upward by just throwing more boxes at the problem. Visual Studio may be very pretty but for a nice IDE you drop a well behaved git, and everything that goes with it.
You also lock your software engineer options to people that are satisfied working on the MS stack, which whilst acknowledging that anecode is not data and all, in my experience means that you will get poor results.
If you look around and all you see is masses upon masses of startups pursuing fairly similar infrastructure strategies, you should probably think very hard about why everyone else thinks you're wrong before you're certain you're not.
From my perspective the equation looks like this;
Pros;
Visual studio.
MS CLR performs well against python / ruby / php.
In a single server environment, you can probably get away without any sysadmin expertise.
Cons;
Everyone has to use Windows.
Storage layer doesn't scale well horizontally.
Git not so great. (apparently this no longer applies and msysgit works perfectly well now)
CLR may perform well compared to interpreted languages, but not so great if you're willing to go a bit more esoteric or if you're happy with boring old java.
Application server scaling is largely the easiest part of any horizontal scaling stack at any rate, minimising the significance of your competition using even extremely slow interpreted languages.
Licensing fees are infinitely more than the (typically free) competition. When BizSpark expires, even moreso. And you bought yourself a nice solid vendor lockin by using their sandpit in the meantime.
You're stuck with microsoft monoculture and all the associated baggage that implies from a HR and strategy perspective.
Most of the stuff everyone else is using that you might want access to works either not at all or poorly on windows, meaning when you run up against the same problems as your competition, they'll have more ground on you from the get-go. (ansible, redis, practically every NoSQL db in existence, etc etc etc, pick a problem space you need to find a solution in and compare the MS CLR based options to "everything else" and MS rarely comes out on top unless it's dealing with MS proprietary formats or interfaces in some way)
That is a personal opinion. To me it's not a "Con", just a personal choice. I work on both platforms (Windows and Linux) and I don't view either one as a Pro or a Con. Just a different environment. If it's not your first choice doesn't make it a bad choice, which I think summarizes a lot of the article in question.
It's a massive con. I work on Linux primarily and when there's a ASP.NET project, I'm forced to use an operating system I hate, it destroys my workflow, and forces me to either partition my laptop or work in a VM which is slow. Everything takes bloody ages to install, and are huge files (MSSQL is 4GB, Visual Studio is 1.5GB, MSSQL manager is like 1GB...wtf?!).
It would be interesting to see someone build a Django-like platform on top of C#.
It's a con because everyone has to use windows, not because of using windows, an open source tech stack typically works just fine with both Linux and Mac using devs, and has leftovers for windows users. An MS stack? Everyone's stuck using windows, and many people hate it. That's what's bad about it, not that windows is necessarily bad in every use case.
They do?! Oh dear, I'd better tell the DBAs about that.
They only need to use windows if they want to run IIS or Visual Studio.
There is a hell of a lot more to the sort of infrastructure a lot of people use .Net for than that. Hell I was working with a bizarre mainframe relic last year in it.
That isn't to say for a lot of usages, anything that isn't the latest windows is a poor relation, the latest debugging features for TPL require 8.1.
> They do?! Oh dear, I'd better tell the DBAs about that.
You mean the MS SQL DBA's? Cause generally that's what people in MS shops are going to be working with, should they not be able to run tests on MS SQL and write SQL scripts locally to actually test on their environment and get results? Perhaps I do not understand what being a DBA actually entails, but I assumed that it would necessitate extensive experience with the actual database, up to and including running it yourself locally for development?
SQL databases in general don't scale well once they've maxed out a single machine, cross server joins are never going to be pretty and there's a pretty good reason why denormalising data and the adoption of NoSQL solutions with baked in clustering is taking off in a big way.
Re NoSQL solutions on windows, theoretically possible, sure, but which NoSQL solution targets windows as its primary platform rather than an afterthought? If you file a bug report, will they notice or care?
> Your first sentence is has 0% to do with the tech stack.
It does if the target area is massively underrepresented in the tech stack in question. It's just a plain old fact that there are far more options for NoSQL storage layers built with linux first in mind than there are windows. Just like there are far more options for games toolkits and libraries built with windows first in mind than there are for linux.
RavenDB I had never even heard of before, but it does look like it fits the bill of NoSQL datastore that primary targets windows, compared to the competition though that doesn't come near to nullifying my point that it's a vastly outscaled matchup. Also, if you even want clustering in RavenDB, you need an enterprise license. There are many completely free NoSQL datastores for linux that handle clustering just fine without an enterprise license.
Re MongoDB, it's good that they fixed that, however;
In our tests NoSQL was far slower than SQL solutions the advantage was it dealt with hardware failures more easily, but if you use 5% as much hardware it's far less of an issue.
Edit: I think one of the largest probmems is most developers doin't understand SQL or databases that well. Indexed Views for example are an incredibly efficient tools that allow you to avoid a lot of expensive joins without the normal risks of denormalizing your data. However, try and think of the last time a developer mentioned them.
In SQL server normal Views are basically just a select statent but indexed views can have large performance advantages. http://technet.microsoft.com/en-us/library/cc917715.aspx Other DB's have there own optimizations for the same idea.
Last I saw cassandra and pgsql were pretty close to even on single systems, but you can push as many shards in a cassandra cluster as you want. Where are you getting 5% from? Do you mean to imply sql is typically 20x faster than NoSQL on comparable hardware prior to clustering?
They provide similar performance where there features overlap but Cassandra is still missing important RDBMS optimizations. A great example being transactions, if you actually need that type of protection it takes a lot more overhead to fake if you don't have DB support. That said I am a believer in mixing both approaches it takes a little more thought and effort, but the benefits can be dramatic.
I agree with you here, NoSQL can't be used for everything yet, maybe one day, hyperdex + acid looks promising, we'll see. But even restricting the field back to first tier SQL based solutions, you're still talking MS SQL vs PostgreSQL, and the associated licensing fees involved in both scenarios (expensive vs free).
I think performance is pretty similar between the two also last I checked. And you can setup PGSQL with a drbd failover without that much hassle. What are the licensing implications of running two windows servers with an MS SQL server failover? Do you actually need to purchase two copies for that?
If this is just terribly out of date I'm glad to hear that and sorry to cast dispersions based on out of date information, I can't test it out anymore though as I don't actually even have any more windows systems, anywhere.
Nothing particularly about Visual Studio, and I know msysgit does work, but it worked absolutely terribly back when I tried it. That wasn't intended to be a mark against Visual Studio in any way, I agree completely it's a very nice IDE and the statement about it maybe being the best in the world is probably quite defensible. I just don't think that alone is a good reason to ignore all the other things about the MS stack that don't compare well to the competition, and the first example that sprung to mind was real git vs msysgit.
As another commenter noted, you do not get hammered on cost when you exit BizSpark -
"When you exit the program you get to keep all licenses free with all future patches. We exited the program 2 years ago and have yet to buy a MS license for IIS or SQL."
This really makes no sense. Pointing to someone who is 5 years into learning the Microsoft ecosystem and who got their last software update two years ago is the worst possible way to prove you don't get "hammered" when you leave Bizspark.
Are we really going to pretend that never upgrading their software is an option?
For the sake of technical correctness, I'll agree with you, yes its true that you don't get "hammered" when you leave Bizspark.
You get "hammered" when you get 5-7 years into the Microsoft ecosystem and realize that you can no longer put off the software upgrades.
At that point you have to do the math and figure out which is cheaper:
throwing away most of what you have learned and rewriting your software using completely different language and ecosystem
OR
Dropping "5 figures" on software licenses.
Where does the "5 figures" figure come from? An InfoQ interview with the guys behind Tekpub who dropped MS for Rails after being in Bizspark:
"RB: If the platform was holding up fine, what prompted the change of architecture?
RC: Money. We were enrolled in Microsoft BizSpark Program and it was great for getting off the ground, but projecting into the future we realized that everything - from our database down to our development environment would have to be paid for after 3 years. We also figured that we'd probably need a separate server to run videos properly (for streaming) to Silverlight (using Streaming Media) which would be another license cost - and, in addition, we'd need to buy Media Encoder in order to encode the video for Smooth Streaming.
This might not be an issue for a large company, but when we sat down to assess what the bills would be - well let's just say that it was about 5 figures. We put our business hats on and tried to justify that cost - and we couldn't.
Not only that, James and I both knew Rails pretty well. We realized we could push everything into the cloud with better streaming and throughput for a microscopic fraction of the price - so that's what we did.
JA: As Rob mentioned cost was one of the factors, BizSpark is great but it is basically a ticking time bomb. I think more than cost though the motivating factor was around what we both wanted to be using day to day. ASP.NET MVC and .NET are very lacking in some areas that are very important to us. The testing story on .NET is not the best, you have to jump through a lot of hoops to design your application in the right way to handle testing and then writing the tests themselves is not as clean or usable as some other languages. One of the other areas of high friction was deployment, there are ways to handle it in .NET but nothing as nice or clean as Capistrano.
RB: So what does the TekPub platform look like today?
RC: We moved to Rails 2.3.5 using MongoMapper against MongoDB. We have a reporting setup that uses MySQL to track stuff we need to report on which uses DataMapper. We also plugged in New Relic RPM to keep track of our site and it's health - all of this is less than 1% of what it would have cost us, on average, with BizSpark. "
I have no beef with MS (disclaimer: I don't have any close friends who work there but I do live in Seattle area and talk to lot sof people in the C#/C++/F# spheres). The one problem here is the C++11 implementation and how it's been rolled out, or not in the VS 2012/2013 releases. If anybody's interested, /r/cpp has herb Sutter and a couple other MS people dialoging:
The reference to Amy Hoy's Charm is interesting, just because that was such an interesting (and somewhat distressing scenario, if you're into RoR and Ubuntu).
But to say that the Windows architecture is significantly better bang for the buck requires more of an apples to apples comparison. The best I can find is that Hoy describes Charm as having 3,800 interested users in Oct. 2012...The OP describes having hundreds of companies (each with a variable number of users) issuing about 1,500 support tickets daily.
(I'm not counting the traffic visits to the blog because that should be trivial, in the scheme of things, to manage...though I guess kudos for putting it on the same server as the software platform?)
I guess knowing the other costs, such as developer time/salaries, would be helpful.
Two of the biggest help desk app on the web are running on rails. Salesforce helpdesk app with this as its url http://www.desk.com/ and ofcourse the helpdesk startup http://www.zendesk.com/.
Based on the facts above, I submit to you that there is nothing interesting about the reference to Amy Hoy's charm (and there is nothing in there to depress a rails developer using ubuntu).
As far as I am concerned, Amy Hoy's app did not get the kind of traction they envisaged simple. Hence they shut it down.
I am sure that both jitbit's app and Amy Hoy's were not as big customer wise as that form Zendesk and Salesforce. I am sure their traffic numbers wasn't anything near what zendesk and desk.com does.
Meh, I have an instance hosted on Linode for $26 per month (price includes backup + 1 additional IP used for an extra SSL certificate).
My Linode hosts about 3 static websites (2 blogs generated with Middleman [1], plus one Maven repository in which I publish stuff). It also hosts a Wiki and a CRM (both powered by Ruby / MySQL). So that's Ngix + Passenger + 5 MB of Memcached + MySQL + file storage.
I also host several apps I've made on free Heroku dynos, which can get you quite far if you use Scala/the JVM in combination with all the freebies ;-)
While the article speaks of server costs and such, lest us not forget (from wikipedia but, I believe, attributed to Larry Wall):
"The design of Perl can be understood as a response to three broad trends in the computer industry: falling hardware costs, rising labor costs, and improvements in compiler technology. Many earlier computer languages, such as Fortran and C, aimed to make efficient use of expensive computer hardware. In contrast, Perl is designed to make efficient use of expensive computer-programmers."
Thus having your people accomplishing things in a more efficient fashion trumps all :-)
This article could really do with a disclaimer at the top. I got about 25% in before i realised there was more than meets the eye (i didn't previously know who jitbit were, i had no idea of their Microsoft relationship).
Anyone can get into BizSpark. It's not a special relationship. It basically just requires that you have a company of some kind formed and ostensibly are building some kind of software targeting the Microsoft ecosystem.
Microsoft cannot be trusted. They'll change the game out from under you at some point and you'll have no recourse, because you're depending on Microsoft's proprietary software.
I switched from windows/.net/SqlServer to linux/mono/MySQL two years ago and in a single server I handle among many many other things 10k-20k reservations/day.
The server is a small dedicated machine with 8 cores and 16GB ram but never goes beyond 30-40% cpu and 2GB ram. This in Hetzner for about 60€/month.
So I don't understand what the author finds so amazing about the numbers he posted.
For my side projects I use Visual Studio express editions (free) and use postgres (local) for one and mongodb (hosted at mongolab) for another for storing data. I host both of them on 1 VPS with single core and 1 GB of RAM. So All I am paying extra is 2$ a month for a windows vps instead of a linux vps, and I think that 2$ extra that I am paying is well justified.
His point is, it's dirt cheap to do any solution, and all that matters to the customer is customer value, assuming you are on a platform that can deliver on the "ilitys" (maintainab-, reliab-, supportab-, etc.), which Microsoft can.
The thing he doesn't point out is how much cheaper it would be if he dumped the VM and went with Windows Azure Cloud Services.
i was a bit coffee deprived when I read this and was starting on a teeth gnashing trollfest - but then realized it is 'JitBit' not 'FitBit' which I seemingly need to find a Windows machine to get to work...
Then was interested in this article because at our company we have 400-500 servers - mostly Ubuntu with some CentoS and FreeBSD. Lately we need WinSvr to run a BI app that generates nice visualizations for datasci to feed business/ sales.
Funny how not one sysadmin wants to touch this project... ;)
That all being said, the developer affection, in certain neighborhoods, for C# and .Net seems genuine, which makes an argument for developing an app on this platform - that seems clear.
I do not see this scaling out however. And historically Microsoft largesse (in education, research or with this startup initiative) has a way of drying up...
This was the most relevant bit, far as I can tell:
>> Because I love C#
Fair enough. If I liked C#, I'd live in a Microsoft world, too. I don't, though, and without this being a language war, the ones I like are easy enough to set up on Linux, and tend to be a heck of a lot more stable and easy to install, too.
> Fair enough. If I liked C#, I'd live in a Microsoft world, too.
That says more about you than about C#. I like C# too, I think it's the best imperative statically typed language out there. If you'd take the time to research it you'd find that it's easily the most advanced and developed language out there period.
Still, I think the whole statically typed idea is not feasible for large applications. So I use Ruby for professional stuff, and C# for performance critical things (like videogames).
Visual Studio lifts a lot of the pain of developing on Windows (which is still rather painful).
"Becoming a member of their "BizSpark" program literally provides you with all the software free of charge. Entering BizSpark is easy and costs nothing"
Yeah I really don't understand how anyone can justify paying for a constantly-running EC2 instance. Amazon's prices are absurd; even Linode is better value. For $200/month I could rent three dedicated servers with vastly better hardware specs.
Another opinionated, lame IDE addict thinks that his stupid little startup is an example for others, wow HN, didn't see that coming.
“I found an expensive hosting package, and compared it to a less expensive one from another provider running Microsoft Windows” is a really compelling argument.
If you are defining your startup based on the operating system of the servers, you are really really looking the wrong way.
As you name-checked Amy Hoy in the first paragraph, I assume you follow the 30x500 list, or at least know of it, which is pretty basic common sense - and all of it focused on users not servers.
Now - stop flame-baiting HN and get out of the office
Also while its great Microsoft is subsidising his starup via the Biz Stark program, we have seen many times what happens when you rely on "free" to run your buisness. Even tually he will need to start paying for those software licenses he is getting for free and by then he might not have a choice in what platform he is using.