Este artigo foi escrito utilizando uma linguagem não técnica, para que até mesmo um cliente ou gestor consiga entender a diferença entre os tipos de hospedagem de software na internet.
Entenda que até mesmo pessoas da área de tecnologia não são obrigadas a entender de forma detalhada cada um desses tipos, se um tipo de hospedagem funciona bem para o nicho de um profissional, é natural que se especialize nesse tipo específico.
Com este artigo, espero que você entenda as vantagens e desvantagens de cada uma das formas de hospedar um software sendo os principais fatores:
- Custo;
- Tempo de desenvolvimento;
- Escalabilidade do software;
- Especialização da equipe.
Dito isto, segue agora cada um dos tipos de hospedagem de software na internet.
On-premises
O termo on-premises significa “no local”, basicamente um software rodando nas instalações da pessoa ou empresa que usa o software. Esta modalidade está perdendo popularidade ao longo do tempo, mas ainda é muito presente em grandes empresas.
A grande vantagem de manter servidores na empresa para rodar o ERP (um exemplo), é que a empresa controla todo o processo de manutenção da infraestrutura, não dependendo de um terceiro pra manter o software funcionando.
Em contrapartida, manter um servidor funcionando 24h/7 não é um trabalho trivial e requer profissionais qualificados. Redundância, backup, segurança e planejamento para recuperação de desastres são apenas alguns dos fatores que compõem o dia-a-dia da equipe responsável.
Alguns anos atrás esta era a forma padrão como as empresas hospedavam seus sistemas, mas a medida que a tecnologia de empresas de cloud avança (diminuindo o preço inclusive) e a internet no Brasil se torna mais confiável, migrar de on-promises para cloud se tornou um caminho natural.
Hospedagem compartilhada
Este é o tipo de hospedagem de software (muitas vezes sites) mais fácil de se implementar e também de baixo custo. É extremamente popular principalmente por não existir conhecimentos técnicos avançados, conseguir criar um site apenas clicando em um botão como “instalar WordPress” e já sair usando.
A maioria das empresas de hospedagem compartilhada, oferecem apenas o PHP como linguagem de programação suportada, a forma que o PHP funciona se encaixa muito bem na forma como essas empresas trabalham. Algumas oferecem também o nodejs por conta da popularidade que vem ganhando (algumas pessoas dizem que o nodejs é o novo PHP), mas o nodejs não é tão forte assim em empresas do tipo e o PHP segue como o carro chefe.
O foco deste tipo de hospedagem é oferecer plugins e opções pré-montadas como WordPress, WooCommerce, phpBB, criador de sites, e-mails personalizados, entre outros. Uma pessoa que não é da área de tecnologia consegue muito bem contratar uma hospedagem compartilhada e criar sua landing page sem depender de um programador ou designer, se surgir algum problema, basta falar com o suporte que eles dão a ajuda necessária.
É importante observar que como uma hospedagem compartilhada, se acontecer algum problema grave com algum outro site que esteja no mesmo servidor que o seu, é possível que o seu site também seja afetado.
Quando o site chegar em uma quantidade de acessos que a hospedagem compartilhada não der mais conta, basta fazer um upgrade para os planos mais caros ou até mesmo migrar para uma VPS ou Servidor dedicado, que eu explico sobre eles seguir.
Revenda de Hospedagem
Se você tiver uma empresa de tecnologia ou agência, você consegue montar uma espécie de hospedagem compartilhada, mas apenas com seus clientes. Esta abordagem também é chamada de revenda de hospedagem e existem empresas que focam nesse nicho oferecendo planos de revenda.
Observação especial ao cPanel e WHM
O cPanel é um painel de controle que gerencia tudo o que um cliente padrão precisa, como o domínio, subdomínios, e-mails, FTP, firewall e até instala o WordPress pra você.
O WHM (Web Host Manager) é também um painel de controle, mas de nível superior, através do WHM você gerencia diversas contas de cPanel, cada uma dessas contas tendo seus próprios sites.
VPS (virtual private server)
Com um servidor virtual privado ou VPS, você tem recursos computacionais reservados como núcleos de vCPU (processador virtual), memória RAM e armazenamento em disco.
Dessa forma, você consegue utilizar estes recursos da maneira que achar melhor, utilizar um sistema operacional diferente, instalar pacotes, ou seja, você tem acesso completo ao servidor virtual e aos recursos que foram reservados para o seu uso.
Uma vantagem em relação à hospedagem compartilhada, é que seu site não será afetado se seus vizinhos (os sites que estão no mesmo servidor que o seu) tiverem um pico de acesso ou fizerem uma má gestão dos recursos computacionais.
O uso do cPanel para a utilização de um VPS é opcional, tem empresa que fornece a opção de usar ou não, tem empresa que só oferece a opção com cPanel e tem empresa que não oferece o cPanel, tem para todos os gostos. Existem também outras opções de painéis de gerenciamento similares ao cPanel, mas este é o mais conhecido.
Servidor dedicado
Um servidor dedicado é muito similar ao VPS, a principal diferença é que todos os recursos do servidor estão reservados para a sua aplicação. É basicamente uma máquina conectada na internet que lhe foi dado o acesso completo.
Enquanto existe a vantagem dos recursos computacionais estarem totalmente isolados de qualquer outro software, você precisa escolher muito bem as configurações no momento da contratação.
São exibidos os servidores disponíveis detalhando o modelo e marca do processador, memoria ram, armazenamento, placa de rede, entre outros componentes do servidor.
O ponto negativo é que se você precisar aumentar (ou diminuir) algum recurso do seu servidor, a expansão não é tão fácil, será necessário contratar outro servidor com maior capacidade e então migrar tudo do servidor antigo para o novo.
Arquitetura serverless
A arquitetura serverless é o que há de mais novo e eficiente na tecnologia em termos de hospedagem de software. Em todas as opções anteriores que é necessário pagar por recursos de máquina reservados para a sua aplicação durante as 24h do dia, os 7 dias da semana, o mês inteiro. No serveless é diferente, você paga pelo tempo de execução de cada requisição que seu software processa.
Em um primeiro momento pode até parecer confuso, visto que é diferente de todos os tipos de hospedagem tradicionais, mas eu vou explicar em detalhes como funciona o faturamento de aplicações serverless. Eu tenho uma preferência pessoal de procurar saber como funciona a precificação de um produto para então conhecer o restante, e para explicar a arquitetura serverless eu seguirei a mesma estratégia.
Segue um exemplo de precificação do Google Cloud Run, um produto serverless do Google.
- US$ 0,00001800 / vCPU-segundo
- US$ 0,00000200 / GiB-segundo
Digamos que você configurou para sua aplicação utilizar 0,08 CPU e 128 MB de memória para cada requisição. Em momentos de maior tráfego, sua aplicação processa 30 requisições por segundo, mas dura pouco tempo, cerca de 1h por dia nesse ritmo, durante o restante do dia processa 5 requisições por segundo e durante a noite e madrugada recebe um tráfego irrelevante. Ah e a média de tempo de execução para cada requisição é de 200ms.
- O número de requisições durante o momento de pico (1 hora) é de 108.000.
- Durante o restante do dia (7 horas) o total é de 126.000.
- Durante a noite e madrugada vou considerar que não houve requisições.
- Total de requisições por dia é de 234.000.
Calculando tudo temos
- Total em segundos: 234.000 x 0,2 = 46.800
- Custo de CPU: 46.800 x 0,08 x 0,000018 = US$ 0,067392
- Custo de memória: 46.800 x 0,125 x 0,000002 = US$ 0,0117
- Custo diário: US$ 0,079092
- Custo mensal: US$ 2,37 ou R$ 11,89
Considere que existem variações dependendo da região contratada, configuração de alocação de CPU ou demais configurações, o exemplo acima tem o objetivo apenas de facilitar o entendimento.
Eu não sei pra você, mas pra mim R$ 11,89 para o exemplo de software acima é realmente muito barato. Isso acontece porque pagamos apenas durante o momento que a aplicação está sendo executada, se fosse necessário contratar um servidor tradicional para este software de exemplo, precisaríamos contratar um que desse conta da execução em tempo de pico, para o restante do tempo estaríamos desperdiçando recursos computacionais por não utilizá-los.
A escala infinita é também outra grande vantagem de aplicações que rodam em plataformas serverless, se a aplicação começar a receber mais acessos com o aumento gradual durante a evolução normal do software, mais instâncias passarão a serem utilizadas, o custo aumentará de forma gradual e tudo seguirá funcionando. Se o software receber um tráfego repentino, a mesma lógica se aplica e o custo aumentará de forma proporcional.
Para aplicações que possuem um tráfego sazonal e recebem um tráfego maior no final de semana, o serverless se encaixa como uma luva. Economizando recursos durante os dias de semana e suportando o tráfego maior no momento que precisa.
Se você utilizar uma plataforma serverless quando o negócio ainda está no início, é provável que você não tenha custos por um bom tempo, além de ter poucas requisições no estágio inicial de um projeto, onde o custo seria naturalmente muito baixo, as provedoras que trabalham com plataformas serverless, oferecem um nível de utilização gratuita, que você só precisará pagar após atingir um limite até que generoso de utilização.
Os benefícios são ótimos, mas para uma aplicação rodar sem servidor (serverless), o desenvolvimento deve ser feito considerando o ambiente que será implantado, o software precisa ser stateless, significa que a aplicação não armazena estado quando está funcionando, não salva informações no disco local, por exemplo, visto que cada requisição precisa conseguir ser processada em um servidor (temporário) diferente, e todas as informações salvas no servidor poderão ser perdidas antes da próxima execução. Este fator torna um software feito para servidores tradicionais na maioria das vezes não compatível com uma plataforma serverless.
Edge computing
Considerando que o serverless já foi explicado, o edge computing se torna simples. Edge computing também é uma arquitetura serverless, com adição que a sua execução é realizada próximo do usuário assim como um servidor CDN (Content Delivery Network).
A Cloudflare, por exemplo, está presente em 310 cidades em 120 países e uma vez publicado um código no workers (produto de edge computing da Cloudflare), ele pode ser executado em qualquer um de seus servidores, para executar mais próximo de seus usuários.
Uma diferença importante em relação ao serverless explicado anteriormente, é que no edge computing não é comum implantar aplicações inteiras utilizando esta tecnologia, pelo fato de haver uma série de limitações. O tamanho máximo do código-fonte de 1 MB à 10 MB para o Cloudflare workers (por exemplo), o ambiente em sí também é uma limitação, não é qualquer código que é compatível para a execução no ambiente edge.
O objetivo do edge computing é executar códigos de funcionalidades específicas, como o armazenamento em cache personalizado, proxy, processamento de imagens antes da entrega, redirecionamento com base na localização do usuário, entre outros usos em que é necessário algum processamento antes da entrega do conteúdo, antes da sua aplicação principal ser acionada.
A grande a maior vantagem de executar códigos “na borda” é o desempenho extremamente rápido, edge computing é a tecnologia com a maior velocidade, com a menor latência possível em termos globais.
Conclusão
Neste artigo, dei uma visão geral dos tipos de hospedagem de software, explicando cada um deles baseado em minha experiência profissional ao longo dos últimos anos, observando o nascimento e evolução de algumas dessas tecnologias.
Espero que eu tenha sido claro na minha explicação, mas se ficou alguma dúvida, pode me procurar em qualquer rede social que terei o maior prazer em ajudar.