"Scalable" is a tricky word. We use it like there’s one single definition. We speak as if it’s binary: this architecture is scalable, that one isn’t.
The first really tough thing about scalability is finding a useful definition. Here’s the one I use:
Marginal revenue / transaction > Marginal cost / transaction
The cost per transaction has to account for all cost factors: bandwidth, server capacity, physical infrastructure, administration, operations, backups, and the cost of capital.
(And, by the way, it’s even better when the ratio of revenue to cost per transaction grows as the volume increases.)
The second really tough thing about scalability and architecture is that there isn’t one that’s right. An architecture may work perfectly well for a range of transaction volumes, but fail badly as one variable gets large.
Don’t treat "scalability" as either a binary issue or a moral failing. Ask instead, "how far will this architecture scale before the marginal cost deteriorates relative to the marginal revenue?" Then, follow that up with, "What part of the architecture will hit a scaling limit, and what can I incrementally replace to remove that limit?"