4 ms·
I wonder what the biggest deployment of Phoenix is at this point. I've written a few cowboy apps, but my professional Erlang experience has only been with chat
by ilovecaching 8y ago
I wonder what the biggest deployment of Phoenix is at this point.
I've written a few cowboy apps, but my professional Erlang experience has only been with chat servers that do not use HTTP. I'm not sure if I'd choose Erlang to build web services in. Cowboy is a single maintainer project, and Go has had HTTP2 support for ages now.
- lostcolony 8y agoSingle maintainer in the sense of ownership, not in PRs. Look at github; 101 contributors.
- chrismccord 8y agoCowboy maintainership has not been an issue, but there are other options in the Erlang and Elixir ecosystem for webservers, ie elli, chatterbox, and Ace. And to be fair, chatterbox is an Erlang http2 server that has been around for 3 years now. Also please consider blatantly discounting the ecosystem and casting doubt on well-maintained projects isn't a very high value-add to this discussion :) For other readers: you might choose Erlang or Elixir for web services if you want high scalability with distributed communication for free, which is super important for example when building any real-time web service. It's what allows Phoenix to support millions of channel connections on a single server: https://phoenixframework.org/blog/the-road-to-2-million-websocket-connections https://phoenixframework.org/blog/the-road-to-2-million-webs... Erlang and Elixir's concurrency model is also unique from what Go offers out of the box in that the way you build applications is via supervised processes with built-in failure recovery.
- bertjk 8y agoWhat does this built in failure recovery mean, functionally? I mean consider e.g. some code in a standard Rails monolith raises an Exception. The exception bubbles up and is caught by a middleware that displays a status 500 page. Isn't that basically failure recovery too? Or for the same Rails monolith, one worker process hits bad code that eats memory until it is killed by an OOM-killer. Unicorn/puma notices that the worker process is missing and restarts it. Is that more analogous? In either case the request is failed but the server pretty much "recovers", ready to accept new requests. So what is unique about the supervised processes with built-in failure recovery approach? Or am I viewing this at the wrong level of resolution or something?
- lobo_tuerto 8y agoYes you are. You'd need to take a look at what OTP brings to the table of supervised-processes and fault tolerance. Maybe this can help shed some light on it: http://blog.plataformatec.com.br/2018/04/elixir-processes-and-this-thing-called-otp/ http://blog.plataformatec.com.br/2018/04/elixir-processes-an...
- enraged_camel 8y agoPlease stop spreading FUD about Erlang/Elixir at every opportunity, thank you.
- mercer 8y agoAt this point I kinda miss OP's traditional mentioning of Rust as a better alternative...
- querulous 8y agoit's a legitimate concern. the only alternatives to cowboy for http2 are chatterbox and ace which are both single maintainer and, as far as i know, not in wide use (even by erlang standards). for http1 you have elli but it's also never been widely deployed and it's unmaintained as of years ago
- brightball 8y agoNot really. As mentioned elsewhere, there are many contributors to Cowboy and major companies using it as well. Heroku, AWS uses it in Cloudfront last I checked, Incapsula too.
- querulous 8y agoheroku uses a fork of cowboy that diverged in 2013 and has less than 100 commits since then, including only 8 since 2014 cloudfront does not use cowboy
- innocentoldguy 8y agoPerhaps, but Go’s threading model uses a lot more memory than Erlang and Elixer and Go’s threading is handled in public memory, whereas Erlang and Elixir processes are all protected in private memory. Erlang and Elixir’s supervision tree is also pretty damn great. OTP is solid and has been thoroughly proven. Elixir also handles dependencies much better than Go, in my opinion. I’m sure Go is nice too, but I don’t think the backhanded compliment about Cowboy, Erlang, and Elixir is warranted.
- MaxBarraclough 8y ago> Go’s threading model uses a lot more memory than Erlang and Elixer Interesting. Can you say why?
- Exuma 8y agoAre you nuts? Elixir + Phx for web is downright awesome...
- mrinterweb 8y agoHeroku uses cowboy for their routing layer. If you inspect the headers in a response from an app served on Heroku, cowboy is the server. I would guess Heroku is the largest cowboy deployment. As for largest Phoenix deployment, I'm unsure.
- ch4s3 8y agoNote that they use a pre 1.0 fork that they customized a lot.