

Ask HN: What technology should I use for my new project? - JeremyMorgan

Question for my super geeky HN Friends:<p>I'm building an app. At a very high level, it will be an Android app that pulls and sends some JSON for a picture-rating system. I expect this to scale quite a bit and may become very popular. Given that option I am thinking I want the best technology for the job, even if it's something I don't know and will have to learn. Here are the options I'm considering:<p>Node.js service
Asp.Net Service
PHP script<p>Database:<p>Most likely MySQL or MS-SQL.<p>My question is, what do you guys suggest? I know that NO-SQL stuff is all the craze right now, but I don't feel really comfortable with keeping a lot of data in one of these stores without knowing a lot about them. I have extensive experience with MySQL and MS-SQL and trust both of them can do the job great.<p>The interface on the other hand is much more open. It's just going to be pushing text (images will be hosted on S3) so anything that serves text quickly will work. Heavily leaning towards Node.JS for this, but I'm not set yet.<p>Any advice or input would be great. I expect at least a couple thousand users right from the start, so it will need to be pretty fast. If it takes off it will need to scale up, which is why I may do a Node/MySQL arrangement on Linode so I can just scale up the servers as needed.<p>Another note: this isn't going to make much money, if any. So a pure .NET/MS-SQL solution may not be the best choice if I have to keep buying expensive servers for a project not likely to ever gain revenue.<p>Anyway any thoughts you guys might have would be great!
======
acesubido
Seeing as you're more experienced on the Windows stack (saw your C# posts),
I'd suggest not dealing with NodeJS at all if your aim is to push out and
maintain this project with less friction.

If you're thinking it'll scale, it's much better to deal with scaling problems
in a stack you're familiar with. So for your server stack I'd suggest these:

\- PaaS: AppHarbor or Azure Cloud Services. You can easily scale up with them
by a few clicks.

\- Server-side: Seeing as you chose NodeJS, I assume you're going to use the
stack's asynchronous nature, might I suggest looking up SignalR
([http://www.hanselman.com/blog/AsynchronousScalableWebApplica...](http://www.hanselman.com/blog/AsynchronousScalableWebApplicationsWithRealtimePersistentLongrunningConnectionsWithSignalR.aspx))

\- ORM Layer: NHibernate

\- DB: MySQL

Again, I'm not saying not to use NodeJS because I'm some sort of Microsoft
Fanboy, I'm just giving suggestions based on how much "better" you can push
out your project "quicker", and maintain/support it with lesser friction.

~~~
JeremyMorgan
I'm more experienced on the Windows Stack, but one problem I have is this is
going to be a "for fun" project that's likely not going to turn a profit in
any way. I would gladly throw it on an Azure instance, but I'm afraid of
paying a few hundred bucks or more a month for something when I could just do
it for free. If I could find a way to monetize it without pushing away fans it
may be an option.

SignalR is one of the options I forgot to mention, I don't have any experience
with that but it may serve my purpose well so I'll be looking into that.
Thanks for the suggestion!

------
dotmanish
My suggestion would be to read up on the capabilities of MongoDB / CouchDB
once. May be take a small programming example in the language of your choice
wouldn't hurt. It will take half a day for each ("read up" also means look at
the typical questions on stackoverflow, read their blogs, and articles on
comparison of their usages and performances -- without all this, your "read
up" isn't complete).

Secondly, read up on Redis and Memcache, and include one of these in your
stack (I personally stick with Redis, but decide on your own).

If you can spend some more time in your "planning", I would suggest looking at
Heroku for deploying your app. If you haven't used a PaaS in the past, this
_may_ change your entire outlook on how you plan your app and its resources.

Hope this helps.

~~~
JeremyMorgan
I can actually spend a month or two on planning, and I explore some NoSQL
options.

In-Memory databases sound nice for speed, but I also have some OLAP
functionality I'm going to need as well, and may use a fast in-memory DB then
dump the data into another DB nightly, but I'm not sure sure yet.

I think spending a day or more reading and developing on these DBs will be
worth my time for sure.

------
cncool
Parse.com might be an option. It will scale as needed automagically. It uses
AWS to store the data.

------
dotmanish
A note on your SQL hosting - there's always Amazon RDS (which would be free
for the first year under usage limits, I think). It can also give you a
scaling strategy to start with.

~~~
JeremyMorgan
I do have an AWS account setup and used up my free year, but that may also be
an option. As I mentioned cost is a big factor here because this is not going
to be a moneymaker. But if it's under $100 a month or so it might be
manageable.

------
olieH
Might want to take a look at <http://www.appacitive.com>

~~~
JeremyMorgan
Thanks! This looks pretty awesome, I requested an invite

