Hacker News new | ask | show | jobs
by golergka 3786 days ago
And, personally, I think that this stack rewrite path makes a _lot_ of sense and probably should be planned from the beginning.

The business requirements to the architecture — not functionality! — change over time. At first, you have to be lean as hell and try a lot of different stuff. Then, you need to scale, and performance becomes an issue. Some time afterwards, you want to add more features to increase monetization and retention, and here you start needing good, abstracted out architecture for all this stuff not to interfere with each other. And finally, you find the sweet spot, and start to really care about bug-free experience, maintainability and reliability.

And all these different business priorities are best suited by different languages, different design approaches, different architectures and people with different personality traits.

1 comments

Or you can be like WhatsApp, write once in Erlang, and scale to a billion users just with OS-level tweaks.
WhatsApp is one example, and if you're trying to imagine your own path, you should be thinking in statistics and probabilities. Imagine if the idea doesn't work out and you need to pivot. I'm not familiar with Erlang at all, but judging by the fact that (1) it was developed by a big telecom company and (2) it's priorities are stability and performance, I don't feel that it drastically changing business logic of an Erlang application is an easy task.
Being an Erlang developer myself: if you don't actually need the stability of a telecom (e.g. restartless upgrades that hold open circuit-based connections), pivoting around the logic of an Erlang app is about as easy as doing so in Ruby/Python/etc.

Though, that being said, I'd actually recommend Elixir, which gives you the same Erlang-ecosystem benefits, but with the key advantage of being 5x easier to convince the average Ruby/Python developer to use.

Source? I am skeptical WhatsApp is a single monolithic service at this point.