mattrw89 / smoke_signal_backend

The backend service for smoke_signal (working name)
0 stars 0 forks source link

Backend Tech Stack Choices #2

Open mattrw89 opened 10 years ago

mattrw89 commented 10 years ago

What do we want to use?

Primary language
TJkrusinski commented 10 years ago

I'm in for Go on the primary language. Feel like it should properly throw us for a loop in a good way. Would love to do an SQL database since I don't work with SQL ever in my daily workflow, but up for whatever.

Thoughts on Go for the primary language?

mattrw89 commented 10 years ago

I'm for Go.

Regarding SQL, if we're going to use it then let's use PostgreSQL. It's a big step up from MySQL. I think an RDBMS will work very well for this app.

Let's look for some frameworks and libraries that we may need to use.

I'm thinking we'll need:

mattrw89 commented 10 years ago

This looks like a nice fluent SQL preparer w/o all of the ORM overhead.

https://github.com/lann/squirrel

The native pq drivers are here: https://github.com/lib/pq

An absolutely ridiculous list of Go projects: https://code.google.com/p/go-wiki/wiki/Projects

mattrw89 commented 10 years ago

Middleware library: https://github.com/codegangsta/negroni/blob/master/README.md

Router: http://www.gorillatoolkit.org/pkg/mux

Context for requests: http://www.gorillatoolkit.org/pkg/context

TJkrusinski commented 10 years ago

I've heard good things about the martini http library, perhaps it's worth a look as well.

mattrw89 commented 10 years ago

I'm totally willing to evaluate a more framework-like library such as martini. I'm also very intrigued by bundling our own middleware, router, context, etc so that we can have a fully-optimized and fully-understood methodology end-to-end.

mattrw89 commented 10 years ago

By the way, the critique the writer of Martini is speaking of in his blog listed below is what I had read about it (that it was a little bit too magic).

http://blog.codegangsta.io/blog/2014/05/19/my-thoughts-on-martini/

You'll also see on his blog that he factored out the middleware engine into negroni (see above link).

I think we could make what we need with just negroni, mux, context, and a few other packages. The middleware interfaces are so simple that it's not hard to plug in other interfaces. I'll bet a bunch of the Martini-contrib packages would even work with negroni.

TJkrusinski commented 10 years ago

Ah, good point on not using a huge framework I do like of like the idea of doing it bare bones to get the experience. I think it'd be cool to start this way and then if we are in the weeds for too long switch to martini or something of the like.

mattrw89 commented 10 years ago

I'm sure we can figure it all out. I'm not too worried about it. I've implemented most of the components in one language or another.