6 ms·
> - No more Ruby on Rails because no good way was found to scale it organizationally; almost everything is now Go microservices back + React front Ugh, I just.
by diminoten 7y ago
> - No more Ruby on Rails because no good way was found to scale it organizationally; almost everything is now Go microservices back + React front
Ugh, I just... I keep trying to pretend I don't need to learn Go, but every highly scalable system I read about that's recently been written about seems to be using it. Maybe I just need to stay away from systems that need to scale? Heh...
- echelon 7y agoGo isn't the only language that scales, it just happens to be popular amongst the scripting language crowd as a next step. You're by no means limited in your choice. You could do Java, C#, Rust...
- snaky 7y agoThe keyword here is organizationally. Technically speaking you can build scalable systems using anything you want. But if you need to hire a couple of hundreds developers, you better go with Java 7 or Go than Ruby, Lisp or Perl. The dumber and more uniform the better.
- ummonk 7y agoThe key distinguisher there is static typing. Which is how Facebook manages to make do with PHP, and Dropbox with Python. By adding top annotations for a static type-checker...
- viraptor 7y agoIt would be interesting to hear a comparison from someone using https://crystal-lang.org/ https://crystal-lang.org/ at scale. It's basically Ruby + types, which would make it the closest for isolating that one feature. It can't run Rails, but there are very similar web frameworks available.
- mcpherrinm 7y agoIt seems Stripe solved this problem with https://sorbet.org/ https://sorbet.org/ which is actually Ruby + types.
- viraptor 7y agoIt misses other benefits of static typing -> being able to compile to efficient code. Also Sorbet is still not popular enough to apply to many gems - it's a lot of work to implement it at the moment.
- rhizome 7y agoI've heard Crystal's Ruby resemblance fades once you get past the beginner stage.
- pkd 7y agoIt's not Ruby + types, it just looks like it at first glance. The semantics are all diffrent (for good reasons). I very much doubt that anyone is using Crystal at the scale Ruby/Rails is used yet. It's still far away from a 1.0 release and when I tried out 0.23 it had several issues, major ones for me were lacklustre debugging support and the type checker needing to load the whole AST into memory. Concurrency story was also not very strong but I know people were working on it actively at least. Anyway, I wrote a non-trivial project in Crystal and overall really enjoyed it. Improving the debugging tooling would go a long way towards making it a real option.
- snaky 7y agoStatic typing doesn't help you much, when you have 20 teams hating each other and 20 different ways to write statically typed C++ code.
- deleted 7y ago[deleted]
- jchw 7y agoPersonally, I think it’s hugely worth learning. Aside from some eschewed defacto behaviors, Go is very easy to pick up and learn the entirety of in a week or two, because the language itself is really not that large. So I’d argue the time investment is a good one for what you get. Still, you definitely do not need Go to scale systems. People scale Everything, perhaps most impressively PHP applications.
- empath75 7y agoThe good news is that it takes like an hour to learn enough go to be productive.
- apta 7y agoBefore golang was a thing, there were highly scalable systems that handled way more traffic than anything written in golang today. Those systems were (and are) written in languages like C++ and Java and C#. You're just seeing golang in articles because of hype.
- hajhatten 7y agoWell deserved hype
- hactually 7y agoJava and C# lag behind Golang on most performance metrics. Combine it with the awesome deployment story (single binary) and you'd be hard pressed to choose the former
- MrBuddyCasino 7y agoThe opposite is true. Golang is on average 2-3 times slower than Java. On the plus side, it uses less memory.
- LOLOLOLO1 7y agoNo of course. It may loses at some benchmarks made by Java or Python/Ruby coders. Two areas where it is actually slower are 1) Memory allocation 2) Regular expression performance. But you must understand your Java app won’t have performance advantage because of faster alloc speed IRL: GC will take lots of CPU, because Go’s one is much easier at memory release. You can only see allocation advantage in micro benchmarks where the app stops before the GC will start.
- barrkel 7y agoHow much CPU GC takes for any given GC implementation is largely down to the design of the application, its data structures and allocation graph. Request / response servers which keep caches and other allocations prone to middle age death out of the GC heap are consistent with the generational hypothesis and ought to spend no more than a few (low single digit) percent in GC with a generational collector.