A promessa e os perigos da computação sem servidor

Krishnan Srinath Blocked Desbloquear Seguir Seguindo 4 de julho Foto por Max Bender em Unsplash

visão global

Imagine um dia como engenheiro, onde você pode se concentrar na aplicação e não na infraestrutura. Parece bom demais para ser verdade? Muitos esforços produtivos podem ser canalizados na direção certa. É assim que deveria ter sido. A boa notícia é que isso é uma realidade através da computação sem servidor.

O Serverless Computing é um modelo de execução que permite ao engenheiro manter o foco nos objetivos do aplicativo, terceirizando a carga da infraestrutura para o Cloud Vendor (Amazon, Microsoft, Google). Um usuário grava uma função do lado do servidor que é executada dentro de contêineres sem estado hospedados pelo fornecedor de nuvem. As funções são acionadas por diversos eventos (por exemplo, HTTP, solicitações de banco de dados) gerenciados pelo fornecedor da nuvem. O fornecedor da nuvem gerencia a alocação de recursos responsáveis pela execução de uma parte do código, e o usuário é cobrado apenas pelo número de recursos usados para executar o código. Amazon AWS Lambda , Funções do Microsoft Azure , Funções do Google Cloud são as implementações populares da Computação sem servidor.

História

O primeiro pagamento conforme a execução foi o Zimki , oferecido em 2006. Ele não teve sucesso comercial, tendo sido fechado em 2007. A PiCloud ofereceu o pagamento por suporte em 2010. A Amazon lançou o AWS Lamda, uma oferta abstrata de computação sem servidor. em 2014. Isso foi seguido pela função Microsoft Azure, funções do Google Cloud e funções do IBM Cloud.

Modelo tradicional

Vamos pensar em um modelo tradicional de cliente-servidor para um aplicativo como um sistema de 'bilheteria de filme'. Tradicionalmente, a arquitetura será parecida com o diagrama abaixo. Digamos que o lado do servidor esteja implementado e o lado do cliente esteja em JavaScript:

Modelo tradicional

Com essa arquitetura, o cliente pode ser relativamente pouco inteligente, com grande parte da lógica implementada no servidor – autenticação, pesquisa, reserva.

Computação sem servidor

Na arquitetura tradicional , os recursos, o controle e a segurança eram gerenciados pelo aplicativo do servidor central . Na arquitetura de Computação sem servidor, não há servidor central. Em vez disso, temos componentes diferentes orquestrados por um gateway de API.

Modelo de Computação sem Servidor

Isso transmite várias mudanças significativas.

(1) A lógica de autenticação no aplicativo original é substituída por um serviço de autenticação de terceiros (por exemplo, Auth0)
(2) O servidor central é implementado como um componente separado (por exemplo, funcionalidade “Pesquisar” e “Reserva”)
(3) A quebra de diferentes requisitos lógicos em componentes separadamente implantados é uma abordagem comum ao usar a arquitetura “sem servidor”.

Promessa

Foto de Sarah Cervantes no Unsplash

Tempo de comercialização mais rápido

Execução (Idea-to-delivery) é rápido, suportado pelo eco-sistema de fornecedores ricos. Por exemplo, você pode facilmente coletar, analisar, obter insights sobre dados de fluxo usando o AWS Kinesis e criar experiências de conversação usando os Serviços de Bot do Azure.

Custo de desenvolvimento

Você se concentra na funcionalidade principal do aplicativo, contando com serviços externos para outras funções sem precisar desenvolvê-las. Isso reduz significativamente o custo de desenvolvimento. Por exemplo, integre com Auth0 para funcionalidade de autenticação em vez de construir um.

Custo de infra-estrutura

Sem servidor é sobre a execução de código sem gerenciar seu próprio sistema de servidor. Ele permite que você pague alguém para gerenciar servidores, estrutura de aplicativos, bancos de dados. Você paga uma pequena quantia pela execução da função.

Simplicidade

A arquitetura sem servidor não requer o uso de uma estrutura específica. Não há curva de aprendizado envolvida no aprendizado de um novo framework. Você pode implementar funções em Java, Javascript, Python, Go, etc.

Auto Scaling

O escalonamento é automático, gerenciado pelo provedor. Você não precisa mais pensar em lidar com solicitações simultâneas , desempenho, etc.

Perigos

Foto de Markus Spiske em Unsplash

Sprawl de Serviços

Há várias partes móveis no modelo sem servidor em comparação com o modelo de aplicativo tradicional. É fácil criar serviços, logo acabando em uma expansão de serviços. Você precisa ter uma boa estratégia de monitoramento para que os serviços assumam o controle da situação. O monitoramento é uma área complicada por causa da natureza efêmera dos serviços, as ofertas fornecidas pelo fornecedor são básicas.

Segurança

Abraçando a arquitetura sem servidor abre-se a um grande número de serviços que têm implementações de segurança diferentes. Isso aumenta a área de superfície para fins maliciosos e aumenta a probabilidade de um ataque.

Bloqueio do fornecedor

Os recursos sem servidor que você está usando de um fornecedor serão implementados de forma diferente por outro fornecedor. Você precisará atualizar suas ferramentas se quiser trocar de fornecedor.

Conclusão

A computação sem servidor oferece benefícios significativos, incluindo redução do tempo de lançamento no mercado, custos reduzidos de engenharia e infraestrutura. No entanto, existem desafios de expansão de serviços, monitoramento, segurança. Avalie trade-offs antes de você mergulhar. Computação sem servidor está em sua adolescência, será fascinante ver como ela evolui de adolescente para jovem adulto.