It’s really easy to pretend that your application can scale. When you’re presented with the actual challenges, though - pretty much every expectation you have falls apart.

Rate limits, server load, edge cases, hardware failure, concurrency issues. The worst part is, as much as you plan, you’ll never avoid it. The best you can do is measure everything and adapt as the challenges come. Scale is accomplished through planning and effort.