|
|
|
|
|
by dorfuss
3706 days ago
|
|
Genuine question - could you please elaborate a bit on that? I sort of know what you mean, but I'm just an amateur. So the problem with large scale is creating algorithms that distribute and balance the workload on the servers, database access speed, optimal cashing, keeping 100% uptime, backup, separating different parts of the application and putting them on different servers, concurrency and solving the problem of simultaneous access to same resources? Anything else? |
|
You've also got to make key decisions about whether to scale vertically or horizontally and often there's no one right answer in any of these scenarios. You can re-build today's Twitter in any number of ways to get to the point they are at now. However, the process of getting to today's Twitter would look very very different depending on how much time, money, talent, and other resources you had at each step along the way.
Basically, it's the process or transitions that are very notably difficult, perhaps not the end implementation itself. You've also got to balance these transitions with constraints like time and money. For example, you can't just throw a bunch of AWS instances at an infra problem to buy time, unless you've got the money.
And that's only from an infra perspective. From a product perspective there's a whole slew of things that are needed at scale that you don't necessarily need early on. One example is "how are you going to scale the cost of user/customer support"?. When it's 100 people using your product, you can deal with all the emails, but if it's 10,000,000 people using your product, can you really handle each and every case that comes through? Do you have money to hire a team to handle these cases? Can you build stuff into the product that reduces case-load? etc, etc.
Anyway, I'm rambling now....perhaps someone more experienced than I could share some better insights.