Por que é difícil dimensionar um aplicativo da web Java monolítico?

Trata-se de um equívoco, popularizado pela atual tendência dos microsserviços – ou, para ser correto, pelas pessoas que adotam suas próprias visões, independentemente da evidência real.

Então, os microsserviços podem parecer mais fáceis de implantar e manter (do ponto de vista operacional), mas isso não significa que seja dimensionado melhor: para realmente expandir um serviço, você precisa de sua infraestrutura para replicá-lo em tantos processos e máquinas, conforme necessário, e também resolve quais instâncias responderão à demanda de maneira transparente. Monólitos também podem fazer isso.

Já ouviu falar do StackOverflow? Você sabia que a aplicação deles consiste em uma grande base de código monolótica? Portanto, você tem um aplicativo da Web .Net monolítico que se adapta muito bem. Java possui casos de uso, ferramentas, vantagens e até desvantagens semelhantes, portanto o exemplo ainda se aplica.

Este é um site dedicado a (como parece) educar os desenvolvedores sobre os diferentes estilos arquitetônicos e as vantagens dos microsserviços. Observe que ele lista o dimensionamento como um recurso (“Simples de dimensionar”) e uma desvantagem (“O dimensionamento do aplicativo pode ser difícil”) de monólitos. Isso não quer dizer que o autor esteja errado, mas ressaltar que os padrões são muito sensíveis ao contexto de cada aplicativo. Então, você também pode ter problemas e desvantagens no dimensionamento de microsserviços.

Ou seja, a fonte de problemas para ambos os casos não está no próprio conceito, mas em codificação ruim, pouca aderência, complexidade de infraestrutura e configuração e assim por diante.

Eu acho que você está confuso o que significa monolítico.

Monolítico é sobre implantação. Um monólito é implantado como uma única unidade em um ou vários servidores.

Escalabilidade é implantar em vários servidores atrás de um balanceador de carga.

Não há nada em uma única implantação de um monólito que impeça a expansão. Eu mesmo ampliei alguns aplicativos da web monolíticos.

O design do aplicativo precisa ser tal que solicitações de usuários individuais possam ser feitas em paralelo, sem exceder a taxa de transferência máxima de qualquer componente do sistema.

Independentemente do pacote de implantação.

Eu acho que a resposta está na própria pergunta. Você mencionou “monolítico”.
A escala, após um certo ponto, só pode acontecer distribuindo serviços diferentes em vários recursos (Máquinas). O motivo é óbvio – porque a capacidade de uma única máquina é limitada, mas muitas máquinas podem ser adicionadas facilmente.
Se seu aplicativo é monolítico – é difícil, ou não é possível, distribuir seus serviços em várias máquinas.

Como seu único servidor atraente não pode suportar o fardo de milhões de solicitações recebidas continuamente pelo seu aplicativo.