Sem servidor é uma das novas palavras da moda que você provavelmente já ouviu. Ela se refere a um tipo de implementação em que o servidor é abstraído. Isso não significa que não existam servidores, apenas que você não precisa provisionar os servidores por conta própria. Vamos explorar isso na postagem.
Em alguns casos, o serverless pode liberar sua empresa dos custos de manutenção da infraestrutura, atualizações e provisionamento de servidores. Nesta postagem, exploraremos os conceitos básicos do que é serverless, como ele difere dos microsserviços (outra palavra da moda), alguns possíveis benefícios e como o Couchbase Server se encaixa nesse cenário.
O que é Serverless?
Com o serverless, você simplesmente escreve código (geralmente na forma de funções/métodos). Você pode fazer isso com muitas linguagens populares, incluindo C#, JavaScript (Node), Java e assim por diante. Esse código é implantado em um provedor de nuvem, como Microsoft Azure, Amazon Web Services (AWS), Google Cloud Platform (GCP) e outros.
Seu código é acionado por eventos. Os eventos podem ser tão simples quanto solicitações HTTP ou podem ser muitos outros tipos de eventos, dependendo do que a plataforma de nuvem suporta. (O Azure, por exemplo, oferece suporte a Temporizador, GitHubetc.).
Na nuvem, os servidores que executam esse código são automaticamente provisionados (e desativados) pelo provedor de nuvem conforme a necessidade.
Você também pode ver os termos BaaS (Backend as a Service) ou FaaS (Function as a Service). Recentemente, o significado da palavra da moda "sem servidor" foi ampliado, mas esta postagem se concentra principalmente nos serviços de nuvem FaaS/BaaS.
Sem servidor vs. microsserviços
Há algumas semelhanças entre serverless e microsserviços, mas eles não são a mesma coisa. Ambas são abordagens para dividir um aplicativo em partes menores e independentes. Elas diferem no que é implantado e no que você gerencia.
Por exemplo, se você estiver usando uma arquitetura de microsserviço, poderá ter um serviço de "carrinho de compras" (além de outros serviços como "perfil de usuário", "inventário" etc.). Aqui está um diagrama de um microsserviço muito simples.
Observe algumas propriedades do microsserviço:
- Sua responsabilidade se refere apenas ao carrinho de compras. Ele não é um aplicativo completo por si só.
- O serviço contém várias operações possíveis, mas todas elas fazem parte do serviço.
- O microsserviço se comunica com um banco de dados (possivelmente um banco de dados dedicado) para concluir as operações.
- O microsserviço implantado na nuvem pode usar uma VM que requer provisionamento. Mesmo quando esse serviço estiver ocioso, você será cobrado pelo tempo da VM.
Compare isso com um conjunto semelhante de recursos, desta vez criado com uma abordagem sem servidor.
Na arquitetura sem servidor,
- Há 4 funções que podem ser implementadas separadamente (em vez de 1 serviço)
- Cada função é capaz de se comunicar com o banco de dados
- Você não precisa provisionar uma VM, basta implementar uma função.
- A função só consome recursos quando necessário (e você só é cobrado pelo uso real, não pelo tempo ocioso)
No diagrama acima são mostradas apenas solicitações HTTP padrão. Você também pode usar um evento Timer, por exemplo, para verificar a cada 5 minutos se há algum carrinho de compras abandonado.
Benefícios do Serverless
Há algumas vantagens (e desvantagens) ao usar uma arquitetura sem servidor.
Um benefício é que a escalabilidade é gerenciada pelo provedor de nuvem. Se a demanda ou o uso aumentar, o provedor de nuvem pode compensar adicionando mais servidores quando necessário.
Outro benefício é que os custos estão vinculados ao uso. Se você tem um serviço que está em uso constante, talvez não veja nenhum benefício. Mas se você tiver um serviço que é usado esporadicamente, então o serverless pode proporcionar economia de custos.
Por fim, é possível que uma arquitetura sem servidor possa reduzir os custos de administração. Você não precisa esperar que um servidor seja comissionado. Isso pode melhorar a iteração ágil se o comissionamento de VMs ou servidores for demorado. Ela pode reduzir sua necessidade de operações de TI, pelo menos inicialmente, porque não há servidores para implantar, menos servidores para gerenciar/atualizar/etc. Tudo isso pode levar a uma maior produtividade do desenvolvedor.
É importante observar que o serverless não é uma solução mágica. Seu aplicativo pode não ser adequado para esse tipo de decomposição. Além disso, se você acabar implantando um grande número de funções sem servidor, ainda precisará de pessoal de operações para gerenciar, monitorar e testar suas funções. Definitivamente, confira os benefícios e as desvantagens em detalhes em MartinFowler.com.
Couchbase e Serverless juntos
Há vários provedores sem servidor populares:
- Microsoft Funções do Azure
- Amazon AWS Lambda
- Google Cloud Platform Funções de nuvem
O Couchbase Server tem parceria com cada um desses grandes provedores de nuvem e pode ser executado em qualquer uma dessas plataformas. Além disso, você pode executar o Couchbase Server em vários fornecedores de nuvem para melhorar o alcance, a recuperação de desastres e a diversificação. Você também pode usar o Couchbase Server em uma situação de nuvem híbrida (uma combinação de nuvem e local).
Isso torna o Couchbase uma ótima opção quando você precisa de um banco de dados de documentos NoSQL, independentemente de sua estratégia de nuvem:
Não há bloqueio de fornecedor. Com o Couchbase, você não fica preso à nuvem, muito menos a um único fornecedor de nuvem. Com o XDCRSe você quiser usar o Couchbase em várias nuvens, pode optar pela nuvem primeiro e ter um cluster local para recuperação de desastres ou implantar o Couchbase em várias nuvens.
Ofertas do mercado de nuvem. Você pode começar em minutos: em Microsoft Azure, AWSou GCP.
Ferramentas para sua linguagem de programação. O Couchbase oferece SDKs para Node.js, .NET, Java, PHP, Python, Ir, C/C++além do suporte da comunidade para muitos outros. Independentemente de sua plataforma sem servidor ou preferências de linguagem, o Couchbase tem tudo o que você precisa. Confira esta postagem do blog sobre Funções do Azure com o Couchbase Server para uma introdução técnica usando .NET/C#/Azure.
Dimensionamento. Com o Couchbase Server, o dimensionamento é fácil e eficiente. A arquitetura do Couchbase foi projetada para ser dimensionadaO Couchbase é um cluster de dados com replicação integrada, armazenamento automático e distribuição de dados. Cada nó em um cluster do Couchbase pode fazer leituras e gravações, proporcionando o uso eficiente dos recursos de computação e alta disponibilidade.
Flexibilidade do JSON. Muitos aplicativos podem se beneficiar de um esquema flexível, mesmo que você esteja usando um banco de dados relacional. Dê uma olhada neste whitepaper sobre por que o Couchbase é o banco de dados de engajamento que pode trabalhar junto com seu banco de dados transacional e analítico para proporcionar uma experiência excepcional ao cliente.
Resumo
O Serverless leva a decomposição do back-end do seu aplicativo um passo adiante.
O armazenamento de dados JSON no Couchbase Server oferece flexibilidade com o esquema e o dimensionamento.
O serverless é adequado para você? Não é uma solução milagrosa, mas se você estiver interessado em se beneficiar de custos mais baixos e implantação mais fácil, ficaremos felizes em ajudá-lo a criar um plano cuidadoso e discutir se ele é ou não adequado para o seu aplicativo. Você pode entrar em contato comigo deixando um comentário ou encontrando-me em Twitter @mgroves.