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 9 years ago

mattrw89 commented 9 years ago

What do we want to use?

Primary language
TJkrusinski commented 9 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 9 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 9 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 9 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 9 years ago

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

mattrw89 commented 9 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 9 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 9 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 9 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.