Recentemente, assisti a um vídeo de um bom desenvolvedor e youtuber chamado "Serverless Senselessness." Gostei da opinião do autor, mas discordo de algumas de suas afirmações e quero discuti-las neste artigo.
O vídeo começa com uma piada: "Existem duas coisas no mundo que eu não entendo - meninas e computação sem servidor." Não sei nada sobre o relacionamento desse desenvolvedor com as garotas, mas ele está certo sobre o Serverless? Vamos dar uma olhada em seus principais pontos críticos e discutir os possíveis argumentos que defendem a computação sem servidor.
Alerta de spoiler: eu acredito no Serverless. Você só precisa saber quando e como usar essa tecnologia.
Crítica sem servidor
O principal argumento contra a computação sem servidor é a velocidade. Ou o conhecido problema da inicialização a frio. A inicialização a frio é um atraso na execução do código (pode chegar a até 1 segundo para linguagens como JavaScript, Python, Go, Java, Ruby), que ocorre devido à necessidade de alocar recursos computacionais, recuperar o código e iniciar o contêiner do lado do provedor.
Às vezes, é realmente cerca de milissegundos. Isso levanta a questão: é realmente a rapidez com que o código conclui sua tarefa como a principal métrica de sucesso para o gerenciamento do ciclo de vida do aplicativo?
Como uma pessoa que trabalhou em TI e se deparou com o desenvolvimento de tecnologias relevantes, não tenho certeza de qual métrica de velocidade é a chave. Afinal, existem outros critérios, como velocidade dos ciclos de desenvolvimento, facilidade de manutenção, tempo de retorno do produto, custos baixos para o usuário final e risco reduzido de interrupções, garantindo operações de TI ininterruptas. Finalmente, economizando tempo dos desenvolvedores. Se você pensar bem, a computação sem servidor atende a todos esses critérios.
O que os desenvolvedores estão faltando? Os reais benefícios de Serverless
Se você se preocupa com a velocidade de execução do código a tal ponto que a latência de 200 milissegundos (até um segundo) possível é inaceitável para o seu trabalho, então a computação sem servidor pode não funcionar para você, e isso é completamente normal. No entanto, essa não é uma razão para chamar Serverless de algo inútil. Todos devem decidir o quão inaceitáveis esses atrasos são para ele.
A computação sem servidor é uma forma poderosa de gerenciar a infraestrutura de TI, especialmente para empresas que podem não ter recursos para comprar sua própria infraestrutura e contratar especialistas para manter servidores 24 horas por dia, 7 dias por semana.
- Serverless . « ». Serverless, .
Na maioria dos casos que encontrei, usar computação sem servidor é uma ordem de magnitude mais barata do que usar recursos auto-hospedados. Isso é verdade não apenas para o custo da capacidade de computação como tal. O que torna o Serverless mais barato é que a solução economiza o tempo que leva para operar, dimensionar e manter a infraestrutura. Você terá uma economia real de custos porque não precisa contratar uma equipe de engenheiros de sistemas internos. Bons talentos custam significativamente mais do que computação sem servidor.
Não estou dizendo que a computação sem servidor seja uma panacéia e seja adequada para todos. Se suas cargas de trabalho são estáveis e você tem conhecimento suficiente para gerenciar sua infraestrutura, talvez seja melhor executar em servidores clássicos.
A partida a frio pode ser nivelada
Voltando à questão do tempo de execução do código, o problema da inicialização a frio depende muito de como você codifica e configura sem servidor.
Em geral, há muitas maneiras de suavizar uma partida a frio “aquecendo-a”. Portanto, você pode executar funções com alguma frequência, iniciar o serviço com mais frequência ou manter alguns dos containers em execução o tempo todo (se o provedor permitir). Essas ações fornecerão o “ambiente quente” necessário para o início das funções.
Além disso, alguns provedores sem servidor oferecem sistemas de monitoramento integrados que notificam sobre quaisquer funções de inicialização a frio para que você possa agilizar o processo. Você pode até sincronizar com e-mail ou espaços de trabalho como o Slack - as mensagens de inicialização a frio chegarão à sua caixa de entrada.
Quanta latência é aceitável para suas cargas de trabalho?
É bom se você souber a resposta para essa pergunta. A latência de inicialização a frio geralmente é conhecida como milissegundos. Em todos os casos de uso que encontrei em meu trabalho como engenheiro de dados, atrasos no trabalho do dia a dia não são perceptíveis.
Além disso, os provedores avançados permitem que você crie uma infraestrutura híbrida que inclui computação e servidores sem servidor.
A computação sem servidor tem a ver com NoOps e escalabilidade
O Serverless permite que você gere valor de negócios mais rapidamente, pois o provedor de nuvem assume a maioria das operações de TI. Aloca poder de computação, dimensiona clusters para a carga necessária, monitora a segurança e as atualizações, cuida da integridade do equipamento e assim por diante. Como as dores de cabeça associadas ao gerenciamento de infraestrutura desapareceram, você pode se concentrar em trabalhar com os clientes. Isso é o principal no final?
O servidor sem servidor libera o tempo de engenheiros altamente qualificados para que eles possam se concentrar na solução de problemas de negócios em vez de no gerenciamento de clusters.
Quando a computação sem servidor é especialmente útil?
Imagine que você está iniciando uma startup. Você pode não precisar de infraestrutura significativa no início e pode ter apenas um desenvolvedor. O paradigma sem servidor permite que você comece pequeno e dimensione automaticamente à medida que seu negócio cresce com um modelo de custo pré-pago.
Outro grupo que pode se beneficiar muito com a computação sem servidor são as pequenas empresas que não possuem um grande departamento de TI. A capacidade de gerenciar todo o ciclo de vida de um aplicativo com apenas um engenheiro DevOps (não uma equipe de programadores) é um grande benefício da computação sem servidor.
Se seu site ou aplicativo está sob carga sazonal, o Serverless também é uma ótima opção. Por exemplo, se você tem um negócio de comércio eletrônico, provavelmente terá picos durante a Black Friday e a véspera de Ano Novo. A infraestrutura sem servidor permite que você adapte o consumo de capacidade a tais situações.
Além disso, nem todos os eventos da vida podem ser previstos. Imagine vender desinfetantes para as mãos, outros anti-sépticos, máscaras faciais e itens semelhantes em sua loja online. Então houve uma pandemia global e agora todos precisam dos seus produtos. Com uma infraestrutura sem servidor, você estará pronto para qualquer carga de trabalho.
Velocidade de execução do código versus velocidade dos ciclos de desenvolvimento
A velocidade de desenvolvimento do produto também é útil. Em muitos casos, o Serverless Computing oferece suporte a uma arquitetura de microsserviço, o que significa ciclos de desenvolvimento mais rápidos e componentes de arquitetura relativamente independentes uns dos outros.
Acontece que o Serverless ajuda a iterar mais rápido no ciclo de desenvolvimento e entregar o produto ao usuário final com mais rapidez, o que apenas compensa aqueles milissegundos de latência devido a inicializações a frio periódicas.
Desvantagens do Serverless que não foram mencionadas no vídeo
Alguns dos contras da computação sem servidor não foram mencionados no vídeo, e eu quero nomeá-los para dar a você uma imagem completa sem enfeites.
Embora a computação sem servidor possa ser ideal em alguns casos em termos de custo, escalabilidade e gerenciamento de infraestrutura, ela não é uma panacéia para todos.
- Existe o risco de bloqueio do fornecedor . Os provedores tornam seus serviços tão convenientes e econômicos que você corre o risco de ficar vinculado a um provedor de nuvem específico.
- , , . , SSH , , .
- , .
- - , .
Em geral, usar novos paradigmas em TI, como computação sem servidor ou outros serviços em nuvem, na mesma lógica que nossas tecnologias familiares “caseiras” locais, dificilmente é uma boa ideia. Quando você copia e cola fluxos de trabalho diretamente da infraestrutura física para a nuvem, perde muitos dos benefícios dos serviços em nuvem, se não perder.
Não há razão para esperar que qualquer tecnologia seja aplicável a todas as empresas, não tenha desvantagens e seja barata.
Do meu ponto de vista, não devemos falar categoricamente sobre Serverless (como, na verdade, sobre outras soluções de TI), considerando apenas um aspecto do trabalho e ignorando o resto. A computação sem servidor faz sentido. Se você souber quando e como usá-los.