Luís Gustavo | Dez. 26, 2022, 6 a.m. | DevOps
Configuração de servidor via ssh para realizar o deploy de um projeto é sempre uma tarefa desafiadora, já realizei várias vezes este processo, e posso garantir que não é simples, mas que traz muito aprendizado. Quando você decide realizar este tipo de atividade, deve estar ciente que vai muito além de realizar o deploy.
Você precisa se preocupar com segurança, tanto da Aplicação, quanto do servidor, configurar o firewall, o proxy reverso do nginx, segurança do banco de dados, dentre vários outros requisitos, para que se tenha um projeto minimamente seguro e confiável, além de garantir a sua escalabilidade. Por mais que não seja simples, é muito recomendável que um desenvolvedor web saiba realizar estas atividades.
No entanto, o mercado oferece soluções prontas que resolvem todos estes problemas, de forma que a equipe de desenvolvedores precisa se preocupar em apenas desenvolver o seu projeto. Neste artigo será apresentado algumas destas soluções, que são excelentes, e ajudam muito durante a etapa de colocar um projeto online.
Heroku
O Heroku é uma plataforma que oferece deploy de API, banco de dados PostgreSQL, Redis, dentre outros serviços de forma gerenciada. Ele permite que através de plugins possibilite o auto scaling de seu serviço, como o HireFire, atividade que normalmente seria feita de forma manual ou utilizando um ambiente através de docker e kubernetes, por uma equipe de devOps. Este é apenas um exemplo de processo automatizado através do Heroku.
O ambiente de deploy para webservices oferecido pelo Heroku é uma perfeição para qualquer desenvolvedor backend, através de um push utilizando a sua CLI, ou de uma action no github, é possível ter um ambiente de produção e testes funcionando perfeitamente. O Heroku possui a metodologia The twelve-factor App, na verdade este documento foi criado pela equipe que desenvolveu o Heroku, recomendo muito a sua leitura, pretendo realizar em breve um artigo sobre este excepcional documento.
Caso queira aprender mais sobre o Heroku, recomendo estes vídeos:
Video1: Subindo Aplicações Web em Produção | Aprendendo Heroku
Vídeo2: A Forma Ideal de Projetos Web | Os 12 Fatores
Entretanto, um serviço como este e os outros que serão apresentados no decorrer do texto, possuem um custo mais elevado em comparação a uma instância EC2 na AWS. Ainda assim, se levar em conta a necessidade de um devOps ou de uma equipe inteira, para garantir que a sua aplicação funcione perfeitamente bem, 24 horas por dia 7 dias por semana, em feriados e fim semana, provavelmente você estará economizando, principalmente para uma startup que está iniciando a sua jornada, e validando o seu produto, na qual o tempo é extremamente valioso.
Destaco o case de sucesso da Cambly, que utiliza o Heroku desde sua fundação, para o deploy de sua API em Python. Uma característica que o Cambly destaca é a de que utilizando o Heroku, eles não precisam se preocupar com infraestrutura, todavia em construir o seu produto.
O Heroku contava com um free tier muito bom, para conhecer o ambiente e validar as suas ideias, porém, no segundo semestre de 2022, esta opção foi descontinuada. Contudo há valores acessíveis para iniciar a sua utilização. Por mais que existam alternativas, o Heroku continua sendo uma excelente opção para este tipo de solução na qual o desenvolvedor não precisa se preocupar com infraestrutura, banco de dados, configuração de servidor, segurança do server, o que ajuda muito na produtividade. Foi a primeira solução do mercado que teve este objetivo (com base em minhas pesquisas). Todas as outras são muito semelhantes ao Heroku, ainda assim, com as suas próprias nomenclaturas e recursos diferenciados.
Fly.io
O Fly.io é um ambiente de deploy de Api, banco de dados e Storage. Ele possui um ótimo free tier, que permite realizar o deploy de alguns projetos. Esta plataforma suporta as principais tecnologias do mercado, como Python/Django e Ruby on Rails de forma nativa.
Este serviço possibilita o deploy de API’s, banco de dados PostgreSQL, MySQL, Redis dentre outros, além do serviço de storage de arquivos. Recomendo muito a leitura de sua documentação. Há diferenciais em relação ao Heroku, dentre eles, há a possibilidade de você como desenvolvedor, tornar a sua aplicação, seja banco de dados ou API, replicada em Continentes e países diferentes, tudo através de uma simples CLI, o que é fantástico pois no caso de um produto global, como um aplicativo, a latência para os clientes é muito menor, pois eles poderão acessar o serviço a partir de um servidor mais próximo. Esta é apenas uma característica, há vários outros recursos, recomendo que acesse o site para mais informações.
Railway
O Railway é o mais diferente das plataformas apresentadas, ele é um serviço que possibilita o deploy de API’s e banco de dados, totalmente gerenciado pela plataforma, até ai nada de novo, possui um bom free tier, assim como o Fly.io. Contudo a sua principal característica é a de auto scaling, ele dimensiona de forma automatizada os recursos necessários para a sua aplicação atender a todos os clientes de forma perfeita.
Desta forma, você só paga realmente pelo que usa. Há também uma excelente documentação, além de uma CLI para acessar e gerenciar os seus projetos. É oferecido suporte para as principais tecnologias modernas de desenvolvimento de software, assim como Python/Django e GoLang.
Render
Esta plataforma é a mais semelhante ao Heroku, ela oferece banco de dados gerenciado, deploy de APIs nas principais tecnologias, deploy de sites estáticos, e há um excelente free tier. Ainda assim, ela possui diferenciais, como por exemplo a possibilidade de redes privadas, o que aumenta muito a segurança das aplicações web, além da possibilidade de ter um ambiente de deploy e teste com as mesmas características e banco de dados semelhante, o que evita muitos erros durante o processo de colocar uma nova versão do projeto em produção. O Render tem uma ótima documentação e API.
Finalização
Todas estas soluções são excelentes, e evitam muitos trabalhos durante o processo de colocar uma API e banco de dados em produção. Espero que esta leitura tenha contribuído de forma positiva na sua carreira profissional, pretendo em breve criar artigos apresentando o processo de deploy em cada um destes serviços. Havendo dúvidas, deixe um comentário abaixo, muito obrigado.