Serverless: o que é e por que é diferente
Publicados: 2019-01-11O que é computação sem servidor?
Você pode ter visto todo o hype recente sobre serverless na comunidade de desenvolvedores. Então, o que exatamente é isso? Quero dizer, o código ainda deve ser executado em algum lugar certo, então como ele é realmente sem servidor?
Tudo isso significa que o desenvolvedor e a equipe de operações não precisam supervisionar, gerenciar ou mesmo se preocupar com servidores reais. Isso pode parecer muito semelhante à computação em nuvem, mas existem algumas diferenças importantes. E essas diferenças estão principalmente no que você não conhece em relação a outros modelos.
Sistema operacional desconhecido!?!?
Uma das maneiras fáceis de diferenciar o serverless de alguma forma de orquestração de nuvem sofisticada como o Kubernetes é que ninguém em sua empresa sabe qual sistema operacional o servidor que executa seu código está usando. Você pode acreditar, já que está executando algum código .Net, que é Windows, ou que, por ser Ruby, está no Linux, mas no final, você não tem certeza e não tem consequências para o seu desenvolvimento.
Você pode escrever código usando uma linguagem suportada pelo provedor sem servidor e, desde que permaneça dentro dos limites da caixa que eles fornecem, você está OK com zero conhecimento de qual sistema operacional, versões etc.
E, de fato, um dos pontos fortes do serverless é que, a qualquer momento, seu aplicativo pode estar sendo executado em vários sistemas operacionais diferentes. Tudo isso é gerenciado e operado pelo seu provedor para você.
De quantos servidores você precisa para lidar com seu tráfego?
Se você puder responder a essa pergunta com qualquer tipo de palpite sobre servidores X ou precisamos de CPUs Y, você não está fazendo desenvolvimento sem servidor.
O contrato sem servidor implica que o número e a força de qualquer computação necessária para alimentar seu aplicativo não será uma preocupação para o desenvolvedor. Isso não significa que você não está sendo cobrado por isso, apenas que não é algo que você ou sua equipe irão gerenciar ou se importar. Bons provedores lidam automaticamente com o gerenciamento de seu serviço para que ele mantenha alta disponibilidade e capacidade de resposta.
Modelo de cobrança baseado em computação, armazenamento e rede. Não são servidores, CPUs e discos rígidos
Visto que você não está ciente de qual hardware real é executado sob seu aplicativo, uma nova maneira de faturar vem junto. Os provedores de plataforma de nuvem sem servidor cobram pelo uso medido de computação, armazenamento e transferência de rede. Isso substitui outros modelos de cobrança que cobram por CPU, unidades de disco e conexões de rede. Em um mundo sem servidor, eles estão no controle dessa parte e você só é cobrado pelo uso exato dela para seu aplicativo.
Isso coloca a computação muito mais próxima do modelo da eletricidade. Sua empresa de energia cobra pelo KWH, que é o uso medido de eletricidade. A energia em si é criada por carvão, nuclear, gás, o que for. Mas o faturamento é medido da mesma forma, não importa qual seja a fonte.
Inativo em zero
A outra grande mudança no serverless é que, quando seu aplicativo não é usado, ele é dimensionado automaticamente para zero. Como você não é cobrado pela CPU, mas usando computação, quando você não está usando, sua conta é zero.
O provedor está sempre pronto para medir a computação conforme necessário, mas não há necessidade de você pagar para que um servidor esteja pronto para quando ele for usado. É simplesmente um cálculo de pagamento pelo segundo de computação realmente consumido quando seu aplicativo está em execução.
Você pode pensar nisso um pouco como uma mercearia. O trabalho deles é manter a loja abastecida com leite para que, quando você, como cliente, estiver com sede, possa entrar, comprar o leite para beber e depois sair. Você não paga adiantado por precisar do leite, e não paga se tiver leite que estraga porque ninguém comprou. Esse é todo o negócio do supermercado é garantir que eles tenham estoque disponível, tomando cuidado para não estocar em excesso e desperdiçar leite estragado. Tudo o que você sabe é que eles têm o que você quer quando você quer, e o resto é simplificado longe de sua preocupação.
Trocas para sem servidor
Então, toda essa simplificação soa muito bem. Por que uma pessoa não iria querer todas essas coisas: faturamento mais simples, menos responsabilidade operacional, escalabilidade fácil. Bem como com todas as coisas, isso vem com algumas compensações. Então vamos falar sobre eles.
Substitua o bloqueio do sistema operacional pelo bloqueio do provedor de nuvem
Em outros modelos, você tinha várias compensações e limitações devido aos sistemas operacionais ou servidores em que seu código era executado. Agora que as estruturas sem servidor transferem essa responsabilidade para o provedor, há novas restrições pelas quais você precisa viver.
Até o momento, não há um conjunto acordado de padrões que defina restrições e garantias entre os provedores de serviços. Isso significa que, semelhante ao quão difícil no passado seria mover aplicativos do Windows para o Linux, por exemplo. Agora você enfrentará isso ao tentar mover seus aplicativos sem servidor da nuvem do Google para a Amazon.
Essas empresas ainda não fornecem nenhuma estrutura comum para permitir que os clientes movam facilmente cargas de trabalho sem servidor entre elas. E, francamente, não é do interesse deles fazer isso agora, pois eles preferem trancá-lo em suas ofertas o máximo possível. Portanto, você precisa estar muito ciente de que as primeiras ofertas sem servidor têm muitos pontos de discórdia proprietários para dificultar a sua saída.
Menos visibilidade do desempenho e dos custos
As ferramentas para mergulhar no desempenho do código estão muito bem estabelecidas para modelos de programação anteriores. Coisas como descobrir quanta CPU ou RAM um determinado programa está usando são comuns.
Com o modelo sem servidor, as otimizações mudam para quanta computação, rede e chamadas de API seu código usa. Para ser justo, eles estão relacionados à CPU e RAM do passado. Mas à medida que se abstraem ainda mais, isso impedirá que essas ferramentas sejam tão úteis.
Acredito plenamente que novas ferramentas de código aberto para depuração e otimização de desempenho aparecerão para atender a esse mercado. Mas eles exigirão uma melhor compreensão de como a arquitetura sem servidor está sendo implementada pelos provedores. Isso pode significar que os fornecedores de nuvem são os únicos capazes de fornecer uma visão profunda o suficiente para tornar essas ferramentas eficazes. E não é do interesse deles ajudá-lo a usar menos recursos, pois eles cobram por esses recursos, quer você os use com eficiência ou não.
Aplicativos de longa duração não são o ponto ideal
Para obter toda a flexibilidade que o serverless oferece, geralmente limita o desenvolvedor de aplicativos a limitações baseadas em tempo dessas funções como serviço. Isso significa que ele é otimizado para permitir que seu código responda a uma solicitação da Web na qual ele tenha no máximo 1 minuto para responder.
Esses máximos de tempo fixos ajudam o provedor a cumprir as promessas sem servidor para você. Eles esperam poder movimentar a carga de trabalho entre CPUs físicas reais e locais conforme necessário, a fim de fornecer às equipes de desenvolvimento um serviço que dimensiona automaticamente e se recupera de falhas de equipamentos. Cargas de trabalho de longa duração quebram essa suposição. Na verdade, isso é normalmente listado como um dos requisitos de sua oferta. Onde o código deve ser concluído dentro de X tempo ou ser encerrado.
Para coisas como solicitações da web ou APIs de aplicativos móveis, essas limitações não são um grande problema. Mas para outros casos de uso, como codificação de vídeo, operação de servidores de jogos em tempo real ou soluções de videoconferência, essas limitações não são viáveis. Em muitos casos, você pode operar em torno desses limites pelo uso criativo dos recursos sem servidor, mas geralmente está se esforçando em uma solução que custará mais e operará muito mais lentamente. Os provedores de nuvem ficarão felizes em ajudá-lo a fazer isso, pois mais uso é mais dinheiro para eles. Portanto, certifique-se de usar o serverless para aplicativos e sistemas da Web onde for o melhor ajuste.