4 ms·
Highly scalable systems have to be designed in a particular way; it's an architectural concern - Your choice of language might make it somewhat easier to implem
by jondubois 10y ago
Highly scalable systems have to be designed in a particular way; it's an architectural concern - Your choice of language might make it somewhat easier to implement a highly parallel architecture, but the language itself will never make it 'easy' - Languages will always give you just enough rope to hang yourself (that is the cost of flexibility).
You could design a framework which is extendable and scalable in such a way that developers who want to write code on top of that framework don't need to think (much) about parallelism (see https://github.com/socketcluster/socketcluster#introducing-scc-on-kubernetes https://github.com/socketcluster/socketcluster#introducing-s...).
Unfortunately, you cannot build a highly scalable system without enforcing some rigid constraints. General purpose programming languages do not enforce restrictions on what design patterns you can or cannot use use; that is the role of a framework.
That said, frameworks can never fully hide the complexity of parallel systems (not for all use cases) but at least they can guide you to the best approach when solving specific problems.
- Retric 10y agoOne of the problems is how far you can get with just one cheap server and then one not so cheap server. 0 to 100,000 users and you can just ignore this stuff. Then one day you wake up, the world is on fire and there are no simple solutions. At the same time trying to hit 100,000 users on a distributed platform is much harder.
- chii 10y agoWhen you do a projection of user growth, you'd be able to anticipate the curve and prep ahead. Those caught off guard are either such a runaway success that it doesn't matter, or don't do the growth projection and deserved the fail.
- dorfsmay 10y agoProjections are hard. Sometimes one successful marketing campaign after 10 or 100 failures will me you go from 10s to several 100,000s users in A very short period of time. Not enough time to rearchitecture.