Drupal is a monolithic PHP application that uses MySQL for caching and locking.
Scaling MySQL will be your bottleneck, alternating that with optimizing queries and database usage in third-party modules. Most of Drupal Core is written well enough.
Third-party modules support using memcached, mongodb, etc. These mostly help with anonymous, session-less traffic.
Scaling out your authenticated, logged-in users means almost no caching, requiring more web servers and more MySQL scaling, unless you architect your application to support caching page segments updated with JavaScript from the start.
Some of the work to support Edge Side Includes that's going on, and whatever became of the "Butler" initiative, are improving that work for authenticated users.
Like any system, it has its upsides and its downsides.