Rápido, Furioso e Barato: servidor com desempenho suficiente para banco de dados de pequenas empresas por menos de US$ 1000
(c) Alexey Kovyazin, IBSurgeon, 21 de setembro de 2017 (última atualização - 29 de setembro de 2017)
É fácil obter um servidor poderoso se você estiver disposto a gastar muitos $$$: existem fornecedores líderes como Dell, HP e muitas empresas de hardware menos conhecidas, que ficarão felizes em vender uma máquina poderosa (geralmente, com entrega em 4-6 semanas).
No entanto, dinheiro é sempre um problema, especialmente para pequenas empresas e startups, então há uma grande demanda por soluções baratas “boas o suficiente”. Este artigo descreve a abordagem prática para construir um servidor de banco de dados “bom o suficiente” com desempenho adequado para pequenas empresas. Também contém cálculos e links para os produtos específicos que recomendamos.
Nossa empresa (IBSurgeon) fornece serviços de consultoria e cuidados com banco de dados para bancos de dados Firebird, e vemos muitos tipos de servidores (ou, melhor dizendo, computadores usados como servidores). Grandes clientes usam configurações de alto nível com SAN sobre SSDs, mais de 350 GB de RAM e dois Xeons topo de linha, mas clientes de pequenas e médias empresas usam máquinas menos potentes, pois não precisam de muito poder computacional e não têm muito dinheiro.
Notamos que muitos servidores são, na verdade, estações de trabalho comuns e, o mais interessante, funcionam de forma bastante estável por anos e anos. Existem coisas realmente exóticas, como Windows XP em um computador com 2 GB de RAM (o computador foi construído em 2002!), mas a maioria deles são apenas soluções de hardware “boas o suficiente” montadas por conta própria.
Claro, isso é uma questão de estatística, e ninguém recomendará usar uma estação de trabalho como servidor, mas a pergunta é: onde está o equilíbrio entre estabilidade e despesas? É uma boa abordagem usar um servidor caseiro barato em termos de custo-benefício? O que podemos obter por USD$1000? Quais são os riscos relacionados ao hardware não caro?
Quem pode se interessar por um servidor de banco de dados abaixo de USD$1000?
Vamos considerar a seguinte situação: um escritório com 20-25 funcionários, pessoas trabalham 7x5, o tamanho do banco de dados é cerca de 50 GB. É uma situação típica para uma pequena empresa, que usa algum ERP, CRM ou aplicativo específico (por exemplo, sistema de automação de consultório odontológico) para aplicativos de pequenas empresas baseados em Firebird.
Vamos imaginar que a empresa não está cheia de dinheiro e quer economizar o máximo possível, sem perder a confiabilidade, para alcançar um desempenho bom o suficiente. A pessoa responsável na empresa entende que todo hardware falhará mais cedo ou mais tarde e quer diminuir os riscos relacionados.
Que tipo de servidor eles precisam para um banco de dados Firebird desse tamanho e carga? De acordo com o Guia de Hardware Firebird, o recurso mais crítico para o banco de dados é a E/S de disco, depois a RAM e, por último, a CPU (interessante que, quando clientes de PMEs compram servidores de grandes fornecedores, eles frequentemente escolhem servidores com CPUs poderosas e discos lentos, provavelmente devido a materiais de marketing que superestimam a importância da CPU).
Discos
E/S rápida significa que precisamos de unidades de estado sólido (SSDs), pois o SSD é o rei das leituras e gravações aleatórias. Claro, o SSD não é uma panaceia para bancos de dados, mas fornece desempenho realmente alto, e agora é a escolha certa para bancos de dados.
Os SSDs vêm em dois tipos - discos de nível empresarial e de nível consumidor. A diferença chave entre eles é um recurso, calculado aproximadamente como o número de operações de E/S que eles podem realizar.
Por exemplo, Samsung 850 Pro 256 Gb MZ-7KE256BW - SSD de nível consumidor (baseado em tecnologia MLC), tem TBW (total de bytes gravados) de 150 Petabytes e DWPD (gravações de disco por dia) = 0,16. Ou, mais simplesmente, o recurso pode ser explicado como 40 GB de gravações todos os dias durante 10 anos.
Atualização: tivemos uma sugestão de que Samsung PM863a ($181,59) ou SM863a ($249) são mais confiáveis que o 850 Pro, mas ainda acessíveis - essencialmente, por US$60 extras, podemos obter melhor estabilidade e algum tipo de proteção contra picos elétricos.
Isso é muito ou não? Temos um servidor de teste com SSD de nível consumidor onde executamos testes de carga para simular o trabalho intensivo de 100 conexões em um banco de dados de 60 GB. Todos os dias, 3 desses testes, por 3 horas cada, são iniciados - isso significa que esses testes simulam um dia de trabalho de 9 horas. Os testes já estão rodando há 2 anos, e o recurso restante (de acordo com o firmware) é de 54%.
Claro, ~50% do recurso significa que a unidade deve ser substituída durante o próximo ano… Isso é tão ruim? A cada vários anos, a velocidade dos SSDs aumenta e os preços caem: o SSD no exemplo tem 6 Gb/s e custa $137, em 2-3 anos haverá unidades de 12G pelo mesmo preço.
Preço na Amazon a partir de USD$124
SSDs de nível empresarial são construídos com base em outra tecnologia (SLC) e podem realizar aproximadamente 30x mais operações que o SSD de nível consumidor do mesmo tamanho. Além disso, custam aproximadamente 3x mais que SSDs de nível consumidor. A pergunta é: realmente precisamos de 30x mais operações de E/S para um servidor de pequena empresa por 3x o preço?
Se estamos procurando uma solução rápida e acessível, é muito atraente usar SSDs baratos de nível consumidor e substituí-los regularmente (e monitorar seu recurso com o firmware, é claro).
Riscos associados ao SSD
Como pessoas adequadas, entendemos que hardware de nível consumidor tem menos recurso e altas chances de falhar, então precisamos reduzir essas chances. Como podemos reduzir isso?
Para diminuir a chance de falha repentina de hardware, é necessário usar 2 SSDs para o banco de dados, agrupados em RAID1. RAID1 não significa que precisamos de um controlador RAID separado; será bom o suficiente usar os recursos RAID dos chipsets de placas-mãe modernas - essencialmente, há um controlador RAID simples sem cache.
Atualização: como controladores RAID baratos na placa-mãe podem não suportar o recurso TRIM de SSDs, para evitar degradação de desempenho, é recomendado configurar RAID por software, que orquestra operações simultâneas no nível de software.
Se não houver cache, qual será o desempenho? SSDs modernos, como o Samsung no exemplo, têm cache integrado e controladores muito inteligentes - então são rápidos o suficiente sem controladores RAID dedicados.
Claro, é necessário verificar a saúde dos discos; geralmente, o firmware fornece uma estimativa boa o suficiente da vida útil dos discos.
Backups
Claro, precisamos de unidades para backups. A melhor escolha será um par de unidades SATA de 2 TB cada - por exemplo, Seagate SkyHawk 2TB Surveillance Hard Drive, com 5900 rpm.
Preço na Amazon é $74,99
Precisamos de 2 HDDs porque as unidades para backup também devem ser colocadas em RAID1, para fornecer proteção contra falha repentina de hardware. Essas unidades de backup podem ser bem lentas; seu principal propósito é armazenar backups e fornecer velocidade adequada de leitura/gravação sequencial. Unidades de 5900 rpm são mais lentas que as de 7200 rpm, mas são conhecidas por serem mais confiáveis. Esta série específica de unidades (Seagate SkyHawk) é projetada para gravações lineares: isso é o que precisamos para backups.
Riscos para unidades de backup
O risco é o mesmo que para SSDs, e nos protegemos da mesma forma: RAID1 e monitoramento. Deve haver pouca chance de que ambas as unidades em RAID1 falhem simultaneamente.
Unidade do sistema
Precisamos de uma unidade separada para o sistema operacional? Na configuração mais barata - não, será bom o suficiente manter o SO e o banco de dados na mesma unidade. Isso acelerará um pouco a degradação do SSD, mas não muito - no nosso cenário, deve definitivamente sustentar por 3 anos.
CPU
Para um servidor de banco de dados Firebird, é melhor escolher uma CPU com muitos núcleos e a menor frequência possível. Sim, você leu corretamente - não há necessidade de CPUs de alta frequência para um servidor de banco de dados. O Firebird (se configurado corretamente) usa todos os núcleos para trabalho normal, mas não os carrega a 100%.
Existem exceções: algumas operações de manutenção (backup e restauração) que se beneficiam de CPU de alta velocidade, e consultas SQL mal escritas com uso incorreto de índices - elas consomem 100% do núcleo, mas isso é uma marca clara de que a otimização de desempenho do banco de dados é necessária. Em geral, não é possível compensar consultas lentas com CPUs de alto nível: mesmo que a CPU seja 3x mais rápida, a consulta lenta ainda será lenta.
Por outro lado, ter vários núcleos pode compensar a existência de tais consultas que consomem CPU: com o número de usuários abaixo de 25 e com 8 núcleos, não há tanta chance de que todos os núcleos sejam ocupados simultaneamente por consultas lentas.
E, como estamos procurando a solução barata, estamos limitados a CPUs de desktop - e, lamentamos dizer, a chips AMD. Essencialmente, se a Intel pudesse fornecer um processador de desktop com 8 núcleos pelo mesmo preço ou um pouco mais alto que o AMD FX-8320E, poderíamos usar Intel também, mas no momento não vejo essa opção.
Este chip AMD não é tão moderno e não é tão rápido, mas tem 8 núcleos e é barato, então é a escolha ideal para nosso servidor rápido e barato.
Preço na Amazon é USD$108
Riscos associados à CPU de desktop
Qual é o risco potencial associado à CPU? Para chips de baixa frequência (ou seja, não overclockados) com cooler adequado, quase não há risco. Quando foi a última vez que você ouviu sobre uma CPU de desktop que falhou - em 2003? Claro, CPUs de servidor são muito mais rápidas, mas estamos procurando uma solução boa o suficiente.
É uma boa ideia monitorar a carga e a temperatura da CPU para evitar reinicializações ocasionais.
RAM
A quantidade de RAM necessária depende do tamanho do banco de dados e do número de usuários. No nosso cenário, o tamanho do banco de dados é de 50 GB e temos no máximo 30 usuários.
O tamanho máximo que o Firebird pode consumir é o tamanho do banco de dados (neste caso, ele será totalmente armazenado em cache na RAM) mais 200-300 MB por usuário (no caso do Firebird 2.5 SuperClassic). Então, o tamanho máximo ideal de RAM é 64 GB, mas como queremos economizar, e como temos SSD rápido, podemos usar apenas 16 GB.
Alguns usuários nesse cenário trabalham bem até com 8 GB, mas 8 GB é bem apertado: nesse caso, nenhum outro aplicativo deve ser usado no mesmo servidor. 16 GB é o mínimo ideal recomendado.
Preço na Amazon é USD$59,99 x 2 = $120
Riscos associados à RAM
A RAM é mais vulnerável a falhas que CPUs, mas menos que discos. RAM de nível empresarial tem mecanismos especiais para reduzir a possibilidade de erros, como verificações de paridade. Como podemos estimar e diminuir o risco de falhas de memória?
Primeiro, existem métodos para verificar chips de memória, e se tais testes forem aprovados com sucesso, os chips de RAM funcionarão por muitos anos. Segundo, quando a RAM falha, geralmente é muito perceptível: o computador ou tem uma tela azul da morte ou pânico do kernel, ou reinicializações frequentes: todos esses sintomas exigem verificação e, em caso de resultados ruins, substituição da RAM.
Placa-mãe
A placa-mãe é uma parte importante de qualquer computador. Felizmente, placas-mãe modernas para desktops são muito confiáveis, especialmente placas-mãe lançadas há 4-5 anos - elas têm todas as atualizações necessárias e são estáveis. E - sim, são baratas.
Precisamos de uma placa-mãe com suporte a RAID, com chip de vídeo integrado e com portas SATA suficientes. Algo como:
ASUS M5A78L-M Plus/USB3 DDR3 HDMI DVI USB 3.0 760G MicroATX Motherboard
Preço na Amazon é USD$74,99
Ela tem avaliações muito positivas e é facilmente configurada para ter RAID1.
Gabinete de desktop
Precisamos de um gabinete de desktop para conectar todos os componentes do computador, com fonte de alimentação suficiente. Algo assim: $76,82 http://amzn.to/2ydeYs1
No-break (UPS)
A única coisa que não faz parte do servidor, mas deve ser equipada em todo computador com dados importantes dentro - fonte de alimentação ininterrupta (no-break).
O no-break protege um computador contra quedas e flutuações de energia. Em nossa experiência, pico de energia ou perda anormal de energia do computador é a principal fonte de corrupções de banco de dados.
Algo como CyberPower CP1200AVR, por $117,97, deve ser bom o suficiente.
Total
Como resultado, temos o preço total de todos os componentes do computador e do nobreak = USD 855,27 - é até menos que USD 1000, porém, antes que esses componentes se tornem um computador funcional, eles devem ser montados, equipados com sistema operacional e testados.
| Item | Preço | Qtd | Total |
|---|---|---|---|
| SSD Samsung 850 Pro 256 Gb MZ-7KE256BW | $124,24 | 2 | 248,48 |
| Seagate SkyHawk 2TB Surveillance Hard Drive | 74,99 | 2 | 149,98 |
| CPU AMD FX-8320E | $86,02 | 1 | 86,02 |
| RAM Corsair Vengeance 8GB | $61,99 | 2 | 123,98 |
| Placa-mãe ASUS M5A78L-M Plus | $57 | 1 | 57 |
| Gabinete para Desktop | $69,99 | 1 | 69,99 |
| CyberPower CP1200AVR | $119.82 | 1 | 119,82 |
| Total | 855,27 |
Montando o servidor
Para montar todas essas peças em um servidor funcional e instalar o sistema operacional (recomendamos alguma versão do Linux, como CentOS7+ ou Ubuntu Server 16+), todos esses componentes devem ser montados/conectados corretamente.
Não é difícil, apenas requer uma chave de fenda, um pouco de paciência e tempo para ler as instruções com atenção e assistir a alguns vídeos no YouTube. Há 10 anos, quase todo desenvolvedor conseguia montar um computador com essas peças; hoje em dia é diferente, mas ainda não é difícil.
E se você não quiser montar o servidor?
Existe um atalho - é possível comprar um computador com configuração semelhante que atenda quase às nossas necessidades e conectar componentes adicionais (ou seja, discos).
Recomendo dar uma olhada neste computador - originalmente projetado como PC gamer, ele tem CPU de 8 núcleos e 16 GB de RAM, e custa apenas USD$709.
Será necessário equipá-lo (abrir o gabinete e conectar) com um par de SSDs (+$248,48), mais um disco de backup (+$74,99) e, claro, o nobreak (+119.82). O total será USD 1153 - é maior que a meta de $1000, principalmente devido à placa de vídeo e ao bom gabinete. Você ainda precisará configurar o RAID1 (na BIOS) e, claro, instalar o sistema operacional de servidor no lugar do Windows 10 Home pré-instalado.
Essa abordagem pode ser usada para transformar um computador desktop potente em um servidor - basta adicionar SSDs redundantes e discos de backup.
No passado, muitas pequenas e médias empresas e startups usavam esses servidores montados por conta própria; agora, há uma tendência de usar máquinas virtuais na nuvem.
Como as máquinas virtuais se comparam a um servidor montado por conta própria?
Claro, construir e manter o próprio servidor exige algumas habilidades (não tão altas quanto pode parecer), então muitas empresas querem se livrar de todos os servidores físicos (e, possivelmente, dispensar o administrador de sistemas responsável pelos servidores).
No próximo artigo, consideraremos uma VM na nuvem como servidor de banco de dados para pequenas e médias empresas.
Mais artigos sobre desempenho do banco de dados Firebird:
- Guia de Hardware Firebird
- Ajuste de banco de dados Firebird de 1,7 TB
- Serviço de Otimização de Desempenho Firebird
- 45 Maneiras de Acelerar o banco de dados Firebird
- Coleção de arquivos de configuração otimizados do Firebird
Fale conosco
Sinta-se à vontade para fazer qualquer pergunta: [email protected].
Agradecimentos
Muitos agradecimentos às pessoas que enviaram sugestões e melhorias para este artigo:
- Vlad Khorsun
- Dmitri Kuzmenko
- Pavel Zotov
- Sergey Nikitin
- Emil Mustea