Preocupações de Escalabilidade
Obviamente o primeiro objetivo de ter uma fazenda de servidores é tornar sua aplicação web mais escalável e mais disponível. Com mais servidores no seu cluster você terá mais recursos do sistema para criar mais sessões. Mas essa é toda a história? Você pode tornar sua aplicação mais escalável simplesmente adicionando mais computadores ao cluster? A resposta nem sempre é sim.
Muito provavelmente sua aplicação web precisa de um back-end de banco de dados. É aí que você precisa ter cuidado quando se trata de escalabilidade. uniGUI HyperServer e HyperServer Server Farm aumentarão muito sua capacidade de criar mais sessões, mas não tornarão automaticamente seu back-end de banco de dados mais escalável.
Em uma aplicação uniGUI simples sua aplicação consumirá uma conexão de banco de dados. Esse esquema pode funcionar bem para algumas centenas de sessões, mas à medida que o número de sessões aumenta, dedicar uma conexão de banco de dados a cada sessão lhe causará problemas. Nesse ponto o pooling de conexões virá em seu auxílio.
Existem vários métodos de pooling que podem ser usados para agrupar conexões de banco de dados. FireDAC biblioteca tem capacidades de pooling integradas que você precisa habilitar se escalabilidade for uma de suas preocupações. Se sua biblioteca de banco de dados não tiver capacidade de pooling integrada, então você deve considerar usar uma camada intermediária para cuidar do pooling. Data Abstract e kbmMW são exemplos de bibliotecas de camada intermediária de terceiros para Delphi.
Por favor, tenha em mente que projetar um cluster escalável é mais uma arte do que uma ciência. Isso é especialmente verdadeiro quando você está lidando com o back-end de banco de dados da sua aplicação web. Você pode ser capaz de abrir até 10.000 sessões simplesmente adicionando dois novos servidores ao seu cluster, mas seu servidor de banco de dados não irá escalar automaticamente — você precisa garantir que seu back-end de banco de dados consiga acompanhar a carga aumentada.
Veja também: Cluster Operation Modes