Cloud Server?
Atualmente existem diversos players e tive a oportunidade de testar alguns como Amanzon AWS, Azure, Digital Ocean, RedHat OpenShift e o Vultr. Confesso que muita coisa mudou, antigamente eu costumava adquirir serviços de hospedagem como Locaweb, Uolhost, RedeHost e etc..., estes serviços eram bem limitados, porém qualquer leigo conseguia subir uma aplicação traquilamente em uma pasta via FTP com o IIS/Apache pré-configurado.
Experiência
Na era Cloud Server até existem imagens pré-configurados para aplicações LAMP, Http Servers, CDN, Docker e etc..., porém requerem um certo conhecimento em Linux. Ao criar um Cloud Server você será responsável por estabilizar o serviço, organizar seu arquivo e principalmente cuidar da segurança, isso mesmo liberar porta, restabelecer o servidor em caso de queda, backup e por ai vai!
Tudo isso?
Tudo isso mesmo, recentemente o meu Cloud Server hospedado na Vultr foi hackeado.
Como assim?
Eu pensava que isso acontecia somente com grandes empresa, na verdade isso pode acontecer com todo e qualquer mortal e ambiente, no meu caso o Server foi hackeado, pois foi explorado uma vulnerabilidade do Docker API, que pela configuração padrão não existe autenticação, a porta desta API ficou exposta por erros de configuração no iptables e foram criados Docker Containers para mineração de bitcoins usando uma imagem chamada minecoins.
O que aconteceu?
Após horas/minutos esse container começou a mineirar bitcoins ocorreu um alto consumo de outbounding e o server oops caiu! Por segurança na maioria dos players de Cloud Server caso ocorra um alto consumo de rede, algo anormal, seu server será desligado, para evitar estouro do limite de banda e gerar custo para você caro Developer.
Se você pensa em utilizar um Cloud Server para tarefas como torrent, minerador de bitcoin ou qualquer tipo de tarefa de alto consumo, esqueça isso é proibido e o seu server será facilmente identificado e desligado.
No Digital Ocean e Vultr a sua banda de rede é de 1TB se você tem uma pequena aplicação e o conteúdo estático está servindo pelo por CDN ex: Cloud Flare, creio que essa banda seja mais que suficiente.
Resolveu?
Sim após descobrir essa vulnerabilidade e o desenvolvimento ser basedado e Docker Containers tudo fica mais fácil, removi todas imagens, recompilei novamente, fechei todas as portas deixando apenas a utilizado pelo HTTP (80) e o problema foi resolvido, porém pretendo apagar o Cloud Server e reconfigurar como as configurações estão versionadas, a reconfiguração não será um parto, bora para lista.
Cloud Hostings
Essa lista foi baseada nos players mais falados, no momento existem servidores que ainda não tive oportunidade de testar.
1. Amazon AWS/Lightsail
O AWS, proporciona uma infraestrutura como serviço (IAS), há diversas ferramentas para criação da sua estrutura na nuvem, servidores de banco de dados SQL e No-SQL (ElasticSearch), servidores de conteúdo estático (CDN), com sistemas operacionais variados, o interessante é que parte da configuração é realizada pela painel administrativo. Quando criei uma aplicação de teste na Amazon rapidamente criei dois servidores um de aplicação (back/front) e outro de banco de dados, o único problema foi configurar a comunicação de rede entre os servidores, precisei assistir alguns vídeos no YouTube.
A aplicação funcionou perfeitamente o único problema foi o elevado custo para uma aplicação pouco consumida, realmente no meu teste vi que AWS seria para uma empresa não para um tester. Este teste ocorreu em meados de 2010.
Recentemente descobri o Lightsail esse serviço da Amazon, me parece ser um concorrente direto dos players como Digital Ocean, Vutr, Linode e etc.., que oferecem Cloud Servers pelo custo inicial de 5$ por mês com a configuração inicial de 512MB com discos SSDs. Não tive a oportunidade de testar esse serviço, porém creio que seja um ótimo serviço levando em consideração a estrutura AWS.
O Ligthsail atualmente está disponível em alguns países/cidades veja a lista.
2. Azure
Quando se fala em publicar uma aplicação .NET creio que este seja o caminho recomendado, por se tratar de um serviço Microsoft. Atualmente o Azure fornece muitos serviços, que não envolvem somente ferramentas Microsoft, porém alguns serviços ainda não suportados diretamente pelo Azure e são terceirizados como foi no banco MySQL por meio do serviço (CleanDB).
O interessante do Azure é a possibilidade de publicar gratuitamente uma aplicação ASP.NET usando um servidor compartilhado, isso é ótimo para labs que você gostaria de publicar.
Efetuei testes em máquinas virtuais Windows, o preço era convidativo, mas sinceramente com uma VM Windows 700MB RAM 1 Core não consegui fazer milagres em aplicações .NET.
Com o crescimento do ASP.NET Core, Dockers e outros assuntos atendidos pela Microsoft a publicação de aplicações .NET melhorou muito para nós pobres desenvolvedores que startupamos!
3. Heroku
Um dos grandes nomes conhecidos pela comunidade Ruby, o Heroku proporciona uma plataforma como serviço diferentemente do AWS. Neste modelo de contratação você não irá se preocupar em configurar Load Balancer, Servidores entre outros processos comuns no IAS.
Você pode facilmente contratar mais processamento, chamados de dynos, nós de aplicações como MongoDB, ElasticSearch, Redis, MemCached entre outros. O deploy de uma aplicação ocorre pelo repositório git, basta um push
e aplicação atualizada.
Existem nós para testes assim como Azure, você pode criar seus labs gratuitamente. Os custos de uma aplicação no Heroku costumam ser menores.
4. Google Cloud Platform
Um grande player neste cenário, assim como a Microsoft e AWS, fornece ferramentas específicas para o seu negócio Big Query, BigTable , Firebase entre outros serviços.
O AppEngine aceita aplicações em variadas linguagens como Java, GoLang, Python e PHP.
Os valores da hospedagem não foram atrativos para os meus testes por este motivo acabei desistindo, porém é uma plataforma ao meu ver fácil de utilizar e rica em recursos.
5. Digital Ocean
Surgiu com o slogan crie seu Droplet em 5 minutos, realmente meu primeiro Droplet foi criado em 5 minutos. O Digital Ocean é um dos mais completos e badalados Cloud Hosting, além de um ótimo preço.
$5.0 -> 512 RAM, 1Core, 20GB SSD e 1TB banda;
Tive o prazer de testar essa hospedagem no inicio do blog e ainda tenho um Cloud Server hospedado, encontrei várias dicas no próprio blog da Digital Ocean, a facilidade na configuração do Droplet me surpreendeu.
Nunca tive problemas com o servidor, porém vejo em reviews/comunidade com reclamações do alto tempo de espera e respostas não tão claras.
Você pode criar facilmente Droplets com a distribuição e configuração de sua preferência, Apache, Nginx, Ubuntu Server, Debian, CentOS, FreeBSD entre outros.
6. Vultr
Uma ótima opção para você que deseja processamento e um baixo custo, a concorrência do Vultr em relação ao Digital Ocean começa no servidor mais baixo.
$2.5 -> 512MB RAM, 1 CPU Core 20GB SSD e 500MB banda;
$5 -> 1GB RAM, 1 CPU Core, 25GB SSD e 1TB banda;
Tomei um susto logo no inicio com essa hospedagem devido ao hack que ocorreu, após a correção desta vulnerabilidade o servidor está funcionando perfeitamente.
Um dos pontos fracos desta hospedagem comentado nos reviews é a velocidade do trafego de rede, sinceramente eu não senti diferença na resposta do blog, pode ser que o CloudFlare está se virando bem!
7. Linode
Outro player muito importante neste Ramo, estão sempre anunciando no podcast Developer Tea e claro recomendo esse podcast. O preço inicial deles também é atrativo.
$5 -> 1GB RAM, 1 CPU Core, 20GB SSD e 1TB banda;
Segundo os reviews o Linode costuma ter mais performance que o Digital Ocean, claro que para perceber essa diferença depende do tamanho da aplicação, se for um blog com certeza fica difícil analisar.
8. Atlantic
Se você pensa em publicar uma aplicação ASP.NET e o custo do Azure não é aceitável ou seu desenvolvimento não é Cross-platform, o Atlantic pode ser a melhor opção, já que ele conta com servidores Windows em preços acessíveis.
9. OpenShift
Esta é a nuvem da RedHat, onde você pode utilizar diferentes nós baseados no RedHat.
Uma ótima opção para você que tem uma aplicação de teste e precisa da liberdade de um servidor para fazer seus testes. O OpenShift possibilita a criação de instâncias com 1GB de armazenamento e 512MB. Porém as instâncias devem ser utilizadas, caso o contrário serão automaticamente desabilitadas.
10. Umblr
Recentemente adquiri esta hospedagem para utilização de caixas e-mail, o preço era convidativo e parecia uma hospedagem bem avançada em relação as hospedagens oferecidas aqui no Brasil.
Parece que foi criada com intuito de manter-se a frente, você pode rodar ASP.NET Core, Node.js, Ruby, entre outras linguagens que nós desenvolvedores sabemos que quase nenhuma hospedagem nacional aceita, além disso tem o serviço de Cloud com preços razoáveis, claro não podemos comparar com o exterior, aqui provavelmente há uma cobrança de imposto desleal que torna alto o custo para prover um serviço desta categoria.
Resumindo
Existem inúmeras opções de hospedagem para sua iniciativa, grande parte possui descontos promocionais ou até mesmo isenções por um tempo determinado. Teste, analise, identifique e escolha o que se encaixa no seu projeto e claro compartilhe sua experiência e até a próxima!