32

I am currently getting involved in a startup, I am the only developer involved at the moment, and the other guys are leaving all the tech decisions up to me at the moment.

For my day job I work at a software house that uses Microsoft tech on a day to day basis, we utilise .NET, SqlServer, Windows Server etc. However, I realise that as a startup we need to keep costs down, and after having a brief look at the cost of hosting for Windows I was shocked to see some of the prices for a dedicated server. The cheapest I found was £100 a month. Also if the business needs to scale in the future and we end up needing multiple servers, we could end up shelling out £10's of £000's a year in SQL Server / Windows Server licenses etc.

I then had a quick look at the price of Linux hosting for a dedicated server and saw the price was waaaaaay lower than windows hosting. One place was offering a machine with 2 cores for less than £20 a month.

This got me thinking maybe the way to go is open source on Linux.

As I write a lot of Javascript at work (I'm working on a single page backbone app at the moment), I thought maybe NodeJS and a web framework like Express would be cool to use. I then thought that instead of using SQL why not use an open source NoSQL database like MongoDB, which has great support on NodeJS?

My only concern is that some of the work the application is going to do is going to be dynamically building images and various other image related stuff, i.e. stuff that is quite CPU heavy - so I'm thinking of maybe writing anything CPU heavy in C++ and consuming it as a module in Node.

That's the background - but basically is Linux a good match for:

  1. Hosting a NodeJS/Express site?
  2. Compiling C++ node modules?
  3. Using a NoSQL DB like MongoDB?

And is it a good idea to move to these unfamiliar technologies to save money?


3 MONTH UPDATE

I've been working on this for the past few months now so thought I would give an update in case anyone is interested.

In the end I decided against using a NodeJS & Linux stack for the simple reason of time. I am doing this startup on the side, so I am working 9 hour days, then going home and working until late on the startup. While working in this way I obviously need to be as efficient with my time as possible, or I will never end up shipping the product.

After taking some of the advice on this thread I did apply for Microsoft BizSpark, and was accepted. This means I now have access to Visual Studio license, Windows Server license etc, all for free. Which is awesome. Hopefully by the time we are required to begin paying for everything we will be turning over enough that will make it a non-issue.

Do not think I am only using Microsoft tech, however, as I have tried to use open source stuff where possible. The main place I have done this is my data layer, where I have decided to use PostgreSQL and MongoDB. I am also using BackboneJS on my front end.

Below is a summary of the tech/frameworks I am currently using:

  • Standard DB stuff: PostreSQL
  • Logging & Data Store: MongoDB
  • ORM: Entity Framework 5
  • Core libraries: .NET (C#)
  • Web Framework: ASP.NET MVC3
  • UI: Razor view engine / BackboneJS
Ramhound
  • 871
  • 8
  • 12
dormisher
  • 429
  • 5
  • 9
  • 3
    Have you investigated Mono? C# and most of the framework, on Linux. I haven't used it in anger, it's just a thought. – TarkaDaal Jul 17 '12 at 15:54
  • if you need "cloud scale" computing, take a look at Microsoft's Casablanca project. – gbjbaanb Jul 18 '12 at 14:35
  • 5
    At initial startup levels there is nothing you can't get for free from microsoft that won't meet your needs. After that you can utilize their BizSpark program to facilitate the startup until you have significant revenue. Even as a startup using open products you will probably at some point end up with a for cost product like Oracle DB or whatever once you grow enough. – Rig Jul 18 '12 at 15:24
  • 1
    I have actually been looking at BizSpark today, you can get basically all their software for free / until your business is earning $1million a year. Good deal really, I think if it starts turning over 1 mil a year a few hundred quid a month on servers will be a lovely problem to have! – dormisher Jul 18 '12 at 15:49
  • @TarkaDaal I have had a quick browse today and it seems it is possible to host ASP.NET applications on Linux using Mono - although it doesn't seem trivial and I'm not sure how much of the framework is actually available in Mono. But yeh it is an option. – dormisher Jul 18 '12 at 15:51
  • 2
    @dormisher: Bizspark only lasts 3 years. Then you can guarantee MS will knock on the door offering to "review your licensing needs". http://www.microsoft.com/bizspark/faqs.aspx#16 – gbjbaanb Jul 18 '12 at 17:18
  • If you want cheaper hosting when it starts to scale, start off with cloud computing: https://openshift.redhat.com/app/ for example is free to get you going and will happily host MongoDB instances. – gbjbaanb Jul 18 '12 at 17:24
  • What makes you think that C++ is the way to go to make image processing faster? The division of the company I work for works with hundreds of thousands of images, each over 200 MB, and we use C#. Why? Because developers are expensive and CPU's are cheap. Why waste developer time recreating the actions of a garbage collector when you can just buy a few more CPU's to process your production data? Just because C++ is close to the metal doesn't necessarily make it the tool of choice for data processing. – riwalk Jul 18 '12 at 20:32
  • @Stargazer712 - Because he's trying to keep monetary costs down. I'm assuming his time at this stage is probably in lieu of shares. You're right though, in the long run. – Anonymous Aug 15 '12 at 12:30
  • @Stargazer712 one other reason to keep your code efficient is because those "few more CPU's" require a lot of electricity, which in turn requires a lot fo generation which produces a lot of CO2. Computing is the 2nd highest cause of greenhouse gases (next to airlines) so your attitude of "just buy more tin" is the attitude that's helping us all kill the planet. dude. (besides, I find developers waste plenty of time no matter what platform/language they use) – gbjbaanb Nov 24 '12 at 16:31
  • 1
    @gbjbaanb, "Computing is the 2nd highest cause of greenhouse gases (next to airlines)" ... Do you have a reliable source for that garbage? Or are you just repeating the nonsense that someone else told you? Most sources that I researched in the past put automobile traffic at number 1. – riwalk Nov 26 '12 at 23:01
  • @Stargazer712 in response to your earlier comment, I wasn't suggesting using C++ because it is faster than C#, I was simply saying if I was using a NodeJS web stack on Linux, then C++ would be the most efficient way to go for CPU intensive stuff. I guarantee that I could write more efficient C# than C++, but C# not really an option with the NodeJS/Linux stack! – dormisher Nov 27 '12 at 09:23
  • @Stargazer712 not at hand no, I heard it on the BBC, and I trust them. The NYT had an article about it in September last year, and US Congress report said data centres alone contributed 2% - in 2006. I agree a lot is in the reporting, sometime the airline industry is ignored because it crosses national boundaries and is excluded from a lot of reports; sometimes automobile emissions are emphasised by commentators who are intrinsically against the automobile industry. Either way, the ICT sector uses a lot of electricity, we shouldn't be complacent about being more efficient. – gbjbaanb May 30 '13 at 12:22
  • Never had a problem with Node in Windows. Not sure why people are so convinced it's a bad idea. – Erik Reppen Jun 13 '13 at 06:47

10 Answers10

35

£100/month? How much do you cost? How much is going to cost your training?

If it's £100/month but you can get a .NET app up in a month, while you will need at least 3 to 6 months to get your node.js/C++ app running, go for the .NET. Seriously. Your time is way more expensive than these little £100/month.

Ideally, yes, you're right in your analysis. What you forgot is how long it's going to take you to build all this (i.e. months) especially in a technology you don't know.

Now don't get me wrong, I'm a huge fan of Node.js and the likes (just see my github profile...). I've spent more than enough time to know when to use it. Using it when you don't know about it in a startup environment (where you need to ship) is not really the best solution.

Also, I'm really not sure if this could work, but don't forget about Mono.

PS: knowing how to use jQuery is a very little help for node.js. Knowing javascript is a big help. Don't confuse both.

Florian Margaine
  • 6,791
  • 3
  • 33
  • 46
  • I have thought about how long it's going to take me, and I am torn between .NET and Node. It's just really difficult to know how much longer it's going to take me using Node. You see the actual site will mainly be sat on the client, so the majority of the business logic will actually be on the client. So in that regard .NET or Node - it doesnt really matter. I don't think writing a set of API's on the back end in ASP.NET WebAPI vs Node is going to make a huge difference. And I figure if I use an ORM on top of MongoDB all I'm doing really is playing around with JSON, nothing complicated. – dormisher Jul 17 '12 at 15:02
  • The real concern for me will be the CPU heavy stuff, it's been years since I have written C++, and I can see that area being the bottleneck. And if I did use .NET I have all the power of the .NET libs at my disposal, most of which I am very familiar with. Another thing is none of us are getting paid for this, we are all getting equity in the business. So it really is in my interest to keep the costs down and give the business any chance it can to succeed early on. – dormisher Jul 17 '12 at 15:05
  • p.s. I do know Javascript, not just jQuery :) and thanks for the answer, I take your point completely – dormisher Jul 17 '12 at 15:06
  • 1
    @dormisher If it's just a REST server, then yeah, I guess the node part won't be a pain (and there are better tools then express :-)). For the CPU heavy part, you clearly have to do it in C++. Depends on how you can handle this. – Florian Margaine Jul 17 '12 at 15:46
  • what would you suggest using other than Express? – dormisher Jul 17 '12 at 16:03
  • 1
    [Restify](http://mcavage.github.com/node-restify/) for example – Florian Margaine Jul 17 '12 at 16:29
  • If you are a C# guy feel free to use C#! you can use mono on linux or use a queue of some form to run that part on windows. The cost savings in terms of developer time will probably be a lot bigger than the hosting costs – Zachary K Jul 18 '12 at 08:35
  • 4
    I really wish people would stop saying things like "Mono is .NET on Linux!" It isn't. It is a facsimileing approximation. Its close but there is plenty of a learning curve. Plus the development tools are not as refined. – Rig Jul 18 '12 at 15:30
  • This is why I said "I'm really not sure", as I have no knowledge about this. – Florian Margaine Jul 18 '12 at 15:34
  • 4
    "the majority of the business logic will actually be on the client" So the majority of the business logic will be available in plain text to anyone viewing your site? Might want to rethink that. – Adrian J. Moreno Jul 18 '12 at 15:58
14

Frequently it is worth moving to an open source stack, but it's more likely to be driven by a combination of factors:

  • Cost - yes, you will save some money on licensing and hosting. But it probably isn't enough to sway the decision in most cases. If you can't afford or raise a few thousand dollars, then are you really sure you should be doing a startup whatever space you are targetting? Your time is worth more than a small amount of cash.
  • Avoiding platform lock-in : important if you want to have the flexibility to scale up without reliance on a single vendor-controlled platform. You don't want your company's technological destiny tied to the whim of one supplier (particularly one like Microsoft, which isn't the best known for long term consistency in it's technologies).
  • Specific technologies - the open source world has some impressive solutions that you may prefer (all else being equal) over the Microsoft equivalents. Look at some of the Java-based big data solutions like Hadoop or Cassandra for example....
  • Productivity - some of the open source solutions are impressively productive once you get up to speed with them - Ruby on Rails, Clojure etc.
  • Community - the open source communities are very helpful and can usually help you solve a lot of issues for free whether through forums, online documentation, IRC rooms etc.

You have to balance this, of course, against the time it will take to learn new open source platforms and technologies if you currently have mainly Microsoft skills.

It's a close call overall:

  • If you already have a mix of skills then I'd generally recommend going the open source route. My experience is that it works out better in the long run.
  • If you have only Microsoft skills then I think you will probably want to stick with Microsoft purely for the reason that you will be quicker getting up and running. Startups need to move fast, and learning a completely new technology stack isn't an extra problem you want to have on your plate.
mikera
  • 20,617
  • 5
  • 75
  • 80
  • 3
    If you go (as they're suggesting) C++ they're still going to have platform lockin, just another platform... And as to helpful communities, more often than not the standard answer is "here's the source, figure it out yourself" or "if you donate enough, we MAY look at it in the future" – jwenting Oct 03 '12 at 11:49
8

The cost of Microsoft products might not be as bad as you think. Microsoft have various schemes available that greatly reduce the cost of their software. Most of them are aimed at software development companies, but there may be a package that meets your needs.

Examples:

BizSpark - Free MS Software For Startups

TechNet - Cheap MS Software - around $199 - $599 a year.

It may be worth looking into, you just might qualify for some of the offers.

Gavin Coates
  • 1,054
  • 5
  • 11
  • 3
    Bizspark - 3 years of free stuff. Technet/MSDN - free, but not for production use. So although you can dev with it, you cannot deploy your code unless you pay for all the full licences. – gbjbaanb Jul 18 '12 at 17:20
  • @gbjbaanb - What is wrong with 3 years of free stuff? Technet/MSDN is not free, its for devlopment, which is what they are doing. – Ramhound Jul 18 '12 at 18:20
  • 1
    @Ramhound : the answer suggested Technet for them, they wanted to know how much production licences cost. Too many people think a MSND or Technet sub gives them free software (until MS audits them that is). The OP never asked for dev licences though, only SQLServer and Windows. 3 years of free is great, until year 4 comes and you have to figure out just how much stuff you've gotten used to. – gbjbaanb Aug 13 '12 at 21:54
  • Microsoft will offer discount licensing after the 3 years if you're not a huge money maker.. if you're making money.. gotta pay the taxman – hanzolo Nov 27 '12 at 17:59
6

Its not just the cost of that £100/month server, you'll need a properly licensed copy of Windows, Visual Studio, etc etc to work with. These add up considerably if you do it without resorting to software piracy. And once you start to scale and require a lot more servers, and replicating SQLServer, redundancy and all the rest.. well, just remember MS doesn't earn billions of dollars from their Server and Tools division because they give it away. While the cost of your time while you get up to speed will be greater than using what you already know, in the long term, the benefits of the OSS cost will far outweigh your initial investment in time.

In the main, while you may be wary of trying this out using unfamiliar tech, you have to realise that you'll be working with new tech all the time anyway. Using node.js isn't particularly difficult, especially if you already know javascript, so your additional cost of getting a little more familiar with it will be measured in days rather than months. There are plenty of tutorials and examples that will get you up and running with prototype code in no time, and chances are you'll be hitting a rewrite wall once your startup becomes successful no matter what language you write all your code in.

So anyway, Linux is perfectly suited to C/C++ coding, you'll find its one of the most popular systems for Linux, if not the most popular. MongoDB is a fine choice too, apparently the support from 10gen is pretty good. Node.js is good too, though you might end up either writing the majority of your server in node, or using it as a simple pass-through wrapper to your C++ code, depending on how comfortable you get with either of those languages.

And it scales well. I would suggest you keep an eye on Postgresql as it now has a JSON column type which will give you much of the benefits of the NoSQL DBs, but allow you relational DB features too. Postgresql is rock solid, I used it as part of an system for the emergency services so you can trust it for reliability (less downtime than the SQLServer on the same project actually!)

For IDEs on Linux, you want eclipse. Its just like Visual Studio though installing the packages for the CDT (C dev tools) is slightly more complicated.

Lastly, its good to learn new stuff, you might enjoy the Linux experience so much you'll hate going to work :)

gbjbaanb
  • 48,354
  • 6
  • 102
  • 172
  • I understand what your saying - and those costs are exactly the thing which is stopping me from using what I use every day. The thing is I now need a prototype up and running to show some investors, and pretty soon. I started knocking something together today using .NET due to the time contstraints, and I am convinced that it would take at least double my time to do it using unfamiliar tech - probably longer. Due to this I think I am going to stick with .NET for the core site - but use open source stuff around that e.g. MongoDB, than at least that way although we will have to pay the extra – dormisher Jul 18 '12 at 15:14
  • for windows server, we will be saving in other areas. I just think in the end there is pressure on me to get this done, and get it done to the best of my ability as a software developer. I am still interested in doing something with Node & Linux but I will do it on my own time on some hobby project - not something where everyone is relying on me to deliver! – dormisher Jul 18 '12 at 15:16
  • 8
    "you want eclipse. Its just like Visual Studio" I raise the major BS flag there. Eclipse isn't even on the same level of Visual Studio. Its years behind it. Maybe a decade. – Rig Jul 18 '12 at 15:26
  • 4
    Microsoft software is free for startups. [BizSpark](http://www.microsoft.com/bizspark/). Startups are short on money. They should spend minimal time training or learning. Once you "start to scale and require loads more servers", and have to pay Microsoft, I hope you will be earning substantial revenue. You will be able to afford it. You, personally, will probably now be in a boardroom or even in a million-dollar beach house, and you will delegate these problems to your flunkies. Do not worry about long term scalability too much. Worry about getting customers and earning money ASAP. – MarkJ Jul 18 '12 at 16:25
  • 4
    @Rig Eclipse is very good, it looks like VS, debugs like VS and has plenty of features like VS. The similarities end when you look closely, but I didn't find much difference in day-to-day coding. – gbjbaanb Jul 18 '12 at 17:15
  • 2
    I think there's a reason most of the internet runs on Linux and OSS. Most startups don't sell out to Microsoft for $8bn either. So you're really trading off a short-term gains (that I'll not convinced is that much cost either) for long-term costs that will be eating into your cash flows. Cashflow is very important for startups. – gbjbaanb Jul 18 '12 at 17:23
  • @gbjbaanb - Again...BizSpark there are also low-cost Microsoft solutions. You often get what you pay for, is that £100 a month server equal to that cheaper solution? – Ramhound Jul 18 '12 at 18:22
  • 3
    @gbjbaanb To say Eclipse is "like" visual studio is to say a frog is like a prince. – Rig Jul 18 '12 at 22:42
  • @Rig - Eclipse Juno is quite good, it's got many of the same features VS2010 has, and it also has advanced stuff like colours and lowercase menus... unlike VS2012 :) It isn't as simple to install, but then it does a lot more than just VB/C# and C++. – gbjbaanb Oct 04 '12 at 17:29
4

I don't really have an opinion on the server portion of your question, (node works just fine in my opinion, assuming you know javascript). However I will say that noSQL databases work very well with linux servers. I'm currently using an implementation of CouchDB, (easy replication whooo!), on a linux server and absolutely love it. As far as the compiling the C++ modules, I would recommend tying the cpu intensive work in javascript. After you get it working and decide its slow, then climb the C++ module hill. In my experience, having coded image manipulation, node may end up working just fine for your cpu needs.

RestingRobot
  • 141
  • 3
  • 1
    I thing the only database I've run into that *doesn't* work well with Linux servers is MS SQL Server. – TMN Jul 18 '12 at 15:36
2

"First, make it. Then, make it right. Then, make it good."

I'd suggest launching as early as possible, on technology that makes that possible. If you're concerned about not having options later on, code in such a way that swapping out modules and slowly migrating to something else is possible. Just remember that the business has to get popular enough to warrant it, and you have to have a working product soon.

TarkaDaal
  • 121
  • 3
2

As a small start-up you don't yet need dedicated servers. You can choose cloud, which is cheaper and already includes MS licenses. And you'd be using same stack as currently.

There are many reasons to switch to Open Source platform, but saving few bucks on hosting isn't one of them.

Also, keep in mind that SysOps for Unix/Linux platform are usually paid more than SysOps for Windows. Thus your "saving" might end up costing you more.

vartec
  • 20,760
  • 1
  • 52
  • 98
1

For my day job I work at a software house that uses Microsoft tech on a day to day basis, we utilise .NET, SqlServer, Windows Server etc. However, I realise that as a startup we need to keep costs down, and after having a brief look at the cost of hosting for Windows I was shocked to see some of the prices for a dedicated server. The cheapest I found was £100 a month. Also if the business needs to scale in the future and we end up needing multiple servers, we could end up shelling out £10's of £000's a year in SQL Server / Windows Server licenses etc.

If you reach the kind of scale that requires that kind of money, then in theory your income will match those expenses and you will be able to get better deals, and host stuff with your own hardware. One of the reasons your quotes are so high, is because your renting hardware, and not buying it and hosting it yourself ( cerca facebook, Amazon, Microsoft ).

I then had a quick look at the price of Linux hosting for a dedicated server and saw the price was waaaaaay lower than windows hosting. One place was offering a machine with 2 cores for less than £20 a month.

My first question is "what is wrong with the company offering those sort of prices", and how much was linux server at the same company as the windows server going to cost? I know I am asking a question in an answer, but the question itself, is the answer.

As I write a lot of Javascript at work (I'm working on a single page backbone app at the moment), I thought maybe NodeJS and a web framework like Express would be cool to use. I then thought that instead of using SQL why not use an open source NoSQL database like MongoDB, which has great support on NodeJS?

My only concern is that some of the work the application is going to do is going to be dynamically building images and various other image related stuff, i.e. stuff that is quite CPU heavy - so I'm thinking of maybe writing anything CPU heavy in C++ and consuming it as a module in Node.

My only suggestion is use what you are familar with. Use the programs that exist to help businesses like yours have success, once you have that sucess, you can implement and make pretty much ANY change you want. If you do get that sucess, and you are able to afford the higher prices, you might decide its not actually a problem.

Like I said your worries are sound, but are you looking at it from the correct scale, have you looked at business projections to help you decide what to do? I realize you already decided ( within a short amount of time ) what you basically going to do.

Just try to look at the larger picture, you are not going to be paying a single company that sort of money to host your servers, you likely would be doing it yourself.

Calmarius
  • 1,883
  • 2
  • 14
  • 17
Ramhound
  • 871
  • 8
  • 12
1

You're really looking at major paradigm shifts here with the unfamiliar technologies. I had good success with converting ASP.NET 2.0 apps and running them on top of mono with 3rd party libraries. http://www.ubiquityhosting.com/ provides cheap mono hosting. Both MySql and Postgres support ADO.NET connectors which saves you a lot of development time. I typically develop all my databases in sql server management studio then make minor changes to the generate sql scripts task output to get them to work in mysql\postgres. I imagine it would work in a similar fashion for ORMs like NHibernate.

As for a C++ application, you could always host a few boxen yourself if the backend work is cpu heavy and not bandwidth heavy to keep costs low from avoiding dedicated servers. Triple core machines with 2 to 4 GB of ram are cheap with linux running on top of them.

Finally it is best to focus more effort on the features, UI\UX, graphical interface and advertising that will sell your app rather then the underlying technology stack. If you start getting a lot of traffic right away, you can always move to azure or amazon to better handle the load.

Peter Smith
  • 2,587
  • 19
  • 21
0

Almost 10 years ago, I was in the same situation. However, all my Microsoft software was handed to me and I had a relative who was a manager in a large Microsoft shop help me out with development. One year and $50K in expenses later, Microsoft made changes to .NET which threw everything into a loop and we had to start over (Long story short. Don't ask.).

On the advice of my relative, we switched to FreeBSD and Linux and, three months later, rebuilt everything for virtually nothing using the same people. We are a thriving small web dev business now and have no had to buy any software (or hardware) since.

Rob
  • 709
  • 7
  • 10