In backends, you usually need to solve having concurrent requests from multiple users, regardless if you need it for performance. From that, the step to using multiple cores is sometimes very small.
I.e. you don't usually need to make a for loop parallel, you can just make sure different requests are parallel.
True, it is a more natural progression to parallelize on the backend as isolating different requests has multiple benefits besides scalability; e.g. security and maintainability. Also, we have more control over the backend environment so it's easier to add external components (e.g data store like Redis) if needed to help keep track of state; there's no need to store everything in process memory... Not to mention that most backends need/use a database already and so it can be used to keep state with relative ease and efficiency without even adding any new service/component.
Comments
In backends, you usually need to solve having concurrent requests from multiple users, regardless if you need it for performance. From that, the step to using multiple cores is sometimes very small.
I.e. you don't usually need to make a for loop parallel, you can just make sure different requests are parallel.
True, it is a more natural progression to parallelize on the backend as isolating different requests has multiple benefits besides scalability; e.g. security and maintainability. Also, we have more control over the backend environment so it's easier to add external components (e.g data store like Redis) if needed to help keep track of state; there's no need to store everything in process memory... Not to mention that most backends need/use a database already and so it can be used to keep state with relative ease and efficiency without even adding any new service/component.