Ask HN: Is Golang mature enough for FinTech startups?
18 points| dlist | 10 years ago
Braintree had some objections in 2013: https://www.braintreepayments.com/blog/gotchas-irritants-and-warts-in-go-web-development/
From a functionality standpoint, the site will be processing Stripe and/or Dwolla & Braintree; holding user profiles with private and public views; We'll do CloudFlare, SSL (DigiCert or CF), and Postgres in the back. We'll need to take care of CSRF, injections, user validations, OFAC checking etc. What do you guys think?
If you or someone you know has done GoLang for FinTech, would you be willing to chat?
[+] [-] mattheath|10 years ago|reply
I work for a startup called Mondo - we're building a full-stack bank and currently it's almost entirely in Go. However, this is a function of our architecture - we provide an API which our apps and frontend (some using react) communicate with. Behind this API are >100 microservices which comprise our application, and Go works exceptionally well for this type of architecture, as it excels at network services.
In your case it seems that you're building a web application, so Rails is going to be easier to build out a prototype, hire for, and has taken care of a huge number of your concerns already at a framework level. There is of course nothing stopping you from splitting out functionality later into smaller Go based applications, but I doubt at this point speed of code execution should really be a concern - if you're building a new company you need speed of product execution, no?
Regarding functionality, Go will do everything you're asking for: - CSRF can be handled with middlewares like Gorilla's CSRF package: http://www.gorillatoolkit.org/pkg/csrf - Postgres with the standard database package, or other packages on top - Third party APIs such as Stripe/Dwolla/Braintree will be fine - If you're looking at integrating with other (older) parts of the global financial network (eg. is there an OFAC checking service with a nice API?), then you may find other languages would be easier for these tasks. In our case we may end up abstracting some of these with services in other languages that already have libraries to interact with these systems, and then providing a nice internal API our services can interact with.
So, Rails has a huge number of framework level features which may help you move faster as you develop your product. But, yes, Go is perfect for Fintech applications, we're building a bank and love it.
[+] [-] tedmiston|10 years ago|reply
[+] [-] djb_hackernews|10 years ago|reply
Having written and maintained a large Rails app from the ground up, and done some small projects in Golang, I think you'll be extremely dissatisfied with all of the extra work you'll find yourself doing, which really takes away from the time of actually getting your product in your users hands.
When coming from Rails, most other options will have speed that is tempting. If it were me and I were in your position and wanted to avoid Rails I'd pick Java/JVM for its speed, ecosystem and its fit in to fintech. But that's me. Or just use Rails and rewrite it in the new shiny if and when performance becomes a problem.
[+] [-] tedmiston|10 years ago|reply
Django and Rails are roughly the same level of maturity.
The approach that's worked best for us is to keep all of the business logic and CRUD-y stuff in this Django base, then spin out dedicated microservices in the special cases e.g. CPU-bound tasks. I think most startups end up with a similar architecture.
[+] [-] sheepmullet|10 years ago|reply
[+] [-] tedmiston|10 years ago|reply
Particularly look at the orange bars in the graph "Programming Languages" on [1] which is based on data from AngelList.
1: http://codingvc.com/which-technologies-do-startups-use-an-ex...
[+] [-] dlist|10 years ago|reply
[+] [-] iamd3vil|10 years ago|reply
[+] [-] kasey_junk|10 years ago|reply
In the domains that golang excels in, it is much more mature than its age. Things like security, memory use, serving network daemons etc. it is great. I would be happy to advocate for it in environments that require a "mature" stack.
But if what you want to do, is rapidly take data from a user and put it into a database, over the internet, I'd say it is a pretty bad choice. Especially if you already have rails experience. Rails is purpose built for that use case and it is (from what i hear) good at it.
[+] [-] fiedzia|10 years ago|reply
[+] [-] shadeless|10 years ago|reply
Instead of me listing all the nice things about Elixir which you can read about online, feel free to send me an email with any questions regarding usage in production. I've been using it for some time and I'm very happy with it.
[0] http://elixir-lang.org/
[1] http://www.phoenixframework.org/
[+] [-] dlist|10 years ago|reply
[+] [-] spotman|10 years ago|reply
Having said that I think I would choose your solution based on your teams skills. If they are comfortable with golang there is no reason it could not be made to work.
But as long as you understand how the table is set and the trade offs I don't think it matters. Golang is going to have less batteries included but it has other advantages too. If it's worth it is really a question of speed of code execution vs speed of writing code.
[+] [-] dlist|10 years ago|reply