My startup is Microsoft-based, here's why
jitbit.com
jitbit.com
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.
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.
Added bonus: some versions will segfault if you pass an un-formattable date value.
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.
Maybe but believe it or not, there are people who HATE Java (that would includes me)
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.
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 )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.
You should try Kepler. Some amazing performance improvements out of the box.
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.
If you had said IntelliJ I might have believed it.
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.
In my experience you get more built-in with .net, but richer third-party ecosystems elsewhere.
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.
100% agree.
Which will happen, when BizSpark runs out.
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.
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.
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.
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.
Of course, using free software might widen your "trusted base" compared to the situation where you go full MS.
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.
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.
Shouldn't that be more than $200 a month?
MS SQL is free since we're in BizSpark.
For how much longer? And then what?
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.
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
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.
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".
Hopefully they have a staging environment running somewhere internally at least.
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?
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.
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.
In reality most people are never going to deal with that level of scale.
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 ;-)
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.
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!
But yeah - people seem to gravely underestimate the power of the current hardware and how much of it is wasted currently.
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!
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.
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.
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.
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.
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?
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 don't mean getting the data back, I mean actually having your software empire back online, serving live traffic again with minimal data loss)
That 2nd machine is already running all the same sites (as a QA/Staging server), so it's pretty much good to go already.
Sorry if I wasn't clear that "running everything from a single server" doesn't equal "only owning a single computer".
Microsoft server just works. Hah!
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.
Amazon? Linux. Google? Linux. Apple? Linux. Large Hadron Collider? All. Linux.
Using Microsoft server in a production environment? Gonna have a bad time. There's a reason most sane people don't use it in important places.
I don't hate on Microsoft server products because its in fashion. Its because I like to sleep at night.
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.
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.
Stackoverflow and Newegg use a vanilla Microsoft Stack.
True if you are speaking about the custom built machines doing real time data analysis.
However, many users have Mac OS X and Windows as their desktop machines.
When I was there (2003-2004), quite a few researchers were even moving away from LaTeX to Word and FrameMaker.
There are a few ASP.NET servers at CERN.
I'm guessing Microsoft isn't your problem.
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.
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".
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.
Anyone who doesn't agree, hasn't tried to setup the Kerboros LDAP crap on Linux.
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.
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.
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).
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.
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.
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...
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.
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.
http://thecodedecanter.wordpress.com/2013/06/22/hosting-webs...
(Sorry If you've answered in the article - I can't read stuff on WP at work)
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.
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.
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.
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.
For example StackOverflow ran from a single windows server in the early days, they didn't add a second one till Oct 2008 http://blog.stackoverflow.com/2008/10/adde-a-second-server/
[1]this isn't passing comment on any of the people referenced in the original post
http://www.techempower.com/benchmarks/#section=data-r5&f=ug-...
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.
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.
My understanding is Node.js is caching the same read requests to avoid having to hit the DB?
ApiController does not do that by default in MVC4, for reasons best known to themselves, regular vanilla controllers do.
However, this: https://github.com/filipw/AspNetWebApi-OutputCache
Fixes that.
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.
But I guarantee you that the traffic that the article describes could be handled by Node and MySQL or MariaDB on a single server too.
Just because someone is inefficient with certain tools doesn't mean those tools are themselves inefficient.
There are many, many other tools besides Node/Ruby that run on Linux. Many of them are as efficient or more efficient than C# and the CLR.
Any hard data you can point to in support of this rather bizarre statement?
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).
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.
You're probably doing something wrong.
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 )
refs:
http://www.techempower.com/benchmarks/
http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...
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.
[1] - http://dave.cheney.net/2013/05/21/go-11-performance-improvem...
> 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.
OP offers a self hosted solution as well.
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...
What are the components that you miss?
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)
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)
?
What about Visual Studio makes git behave badly?
I'm assuming you're talking specifically about Sql Server because there is no technical reason you can't use MS tech with Node, Mongo or MySql.
What about Sql Server doesn't scale horizontally?
Sql Server was scaling horizontally in the enterprise space since 2005.
And also, all the fancy middleware ( memcache, lucene, whatever ) that we put in front of MySql to scale it these days work just fine with Sql Server.
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?
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.
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?
RavenDb.
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;
https://jira.mongodb.org/secure/IssueNavigator.jspa?sorter/f...
So there are 117 Windows specific issues with mongodb, many of which have not been touched for years or months, and none of which affect linux.
I couldn't actually find any tickets which only pertained to linux, though maybe they're there they're certainly not as common.
Um,what? Please try out latest msysgit and tell me what's not great about it.
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.
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.
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?
It would be interesting to see someone build a Django-like platform on top of C#.
How does IronPython perform?
"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."
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. "
http://www.reddit.com/r/cpp/comments/1harvz/microsoft_switch...
http://www.reddit.com/r/cpp/comments/1h47qi/herb_sutter_the_...
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 ;-)
"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 :-)
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.
Something like "we're a member of Microsoft's BizSpark program and you can find out what that means for us here: http://www.microsoft.com/bizspark/About/Default.aspx"
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.
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.
> Small enough to be personal. Large enough to be stable.
What happens when your one server goes offline?
>> 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.
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).
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...
“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.
You also breezed over the license costs for VisualStudio, Windows Serer, and SQL Server.
Not true. After year 3 you start paying.
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
;-)
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.
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.