Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Just use Elixir/Phoenix and get all the scaling benefits of Microservices running seamlessly across datacenters while maintaining the sanity running a single app on your localhost that is fast to test, easy to reason about and deploy!

Having worked in several places that adopted Microservices with nowhere near the Netflix or Uber scale just because it's trendy I can attest to the mess and glacial pace of both learning and development for new team members. If you want to move fast and make something people want, don't pretend you need "webscale", you don't. You're building an apartment block for a few people not a city for millions. The beauty of Erlang/OTP is that it's designed to scale to millions without any extra effort from the individual contributors or fancy DevOps.



Nobody is using micro-services to solve a performance/scaling issue.

You can just horizontally scale a monolith to achieve this.


i don't see how erlang / otp or elixir / phoenix is relevant to solve the problem most companies are facing when hitting their first "web scale" problem : bottleneck at the DB level.


Agreed. The DB is the bottleneck way before the code architecture. But that is a "solved" problem from a deployment perspective. All the Cloud providers have managed Postgres that scales to petabytes and millions of transactions per second. And the part being discussed in the article is the Microservices. Where Elixir/Phoenix shines at delivering the benefits of Microservices i.e. scaling a specific function in your codebase to multiple processors/instances while still being easy+fast to run on a single Dev machine without hundreds of Docker processes.


Not sure just how solved that is for write heavy workloads. It seems possible for a medium sized very successful company to hit fundamental limits requiring some architectural changes. Eg https://www.figma.com/blog/how-figma-scaled-to-multiple-data...


Sorry but what are you talking about? Microservices in a monolith without containers? How does that even work?


Erlang/OTP (and therefore all BEAM Languages such as Elixir) have a supervision tree which means that each module in a monolithic application can be run independently in as many processors/machines as required. Essentially you get Kubernetes + Docker for free (virtually zero overhead) inside the Erlang VM. See: https://blog.appsignal.com/2021/08/23/using-supervisors-to-o...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: