Menu English version
Blog Infra como Código

Desenvolvimento serveless: quando e como usar?

Entenda como a metodologia pode ser aplicada no desenvolvimento do seu time

A computação serveless é a nova maneira de criar aplicativos na nuvem. A questão não é se você deve migrar para ela, mas sim quando deve começar este processo.

O sistema serveless não é a opção certa para todos os aplicativos. Mas, em muitos casos, pode melhorar o desempenho, bem como a eficiência de custos.

Neste artigo, vamos explicar o que é a computação serveless e quais fatores devem ser levados em consideração ao decidir se este método poderá ajudar você a realizar o deploy do seu aplicativo.

 

O que é a computação serveless?

A arquitetura serveless (em tradução livre, “sem servidores”) está rapidamente ganhando força, com todos os principais provedores de nuvem oferecendo uma solução com esta tecnologia, assim como opções locais para instalações em nuvem privada. A computação serveless é uma maneira de implementar funções únicas que são ativadas somente quando um chamado específico é usado. Os aplicativos serveless também podem manipular interações assíncronas ou síncronas: a plataforma que você está usando definirá as opções de entrada / saída e o idioma em que você pode escrever o aplicativo. Ademais, o JavaScript é, atualmente, a única linguagem universal em todas as plataformas.

 

O serveless é uma opção ideal para o seu aplicativo?

Algumas perguntas devem ser feitas para lhe ajudar a decidir se a tecnologia serveless é a melhor opção para desenvolver a funcionalidade que você deseja. Por isso, é importante refletir sobre as seguintes questões antes de iniciar o projeto:

  • O aplicativo pode ser considerado um pequeno bloco ou é grande o suficiente para ser dividido em blocos menores?
  • Todos os blocos têm entradas e saídas bem definidas?

Além disso, é importante saber se a plataforma serveless suporta:

  • Recebimento de conexões do seu cliente;
  • Integrações com o banco de dados utilizado;
  • O uso de uma linguagem que seja de domínio da sua equipe.

 

Dividindo o trabalho serveless

Uma importante característica da computação serveless a ser lembrada é que ela gira em torno de partes discretas de código (ou funções, se você preferir esse termo). Estes são os blocos de construção de uma arquitetura serveless.

Como parte da definição de sua função, você define explicitamente um e apenas um acionador de entrada e um número limitado de destinos nos quais você poderá registrar a sua saída. A maneira como você testa seu código é fazendo o upload de um bloco de texto (geralmente JSON), que é usado como uma entrada e, então, verifica se ele será aceito e executado com sucesso. Os logs básicos são visíveis e podem ser exportados para soluções na nuvem, como o CloudWatch.

Devido ao fato de que existe um único mecanismo de entrada por função, o código é altamente otimizado em comparação aos aplicativos tradicionais, que precisam lidar com vários tipos de variações de entrada. O tipo mais complicado de função é aquele que responde a uma solicitação da web ou de uma API. Além disso, existe aquele tipo que exige uma função separada para cada método, se você quiser uma entrada de conjunto de dados diferente ou se desejar utilizar um outro tipo de armazenamento de dados.

Linguagens e ferramentas para o desenvolvimento serveless

Se você tem uma linguagem específica na qual deseja ou precisa escrever o seu código, as plataformas serveless que você poderá usar poderão ser limitadas. O mais próximo que existe hoje de uma linguagem universal em todas as plataformas serveless é o JavaScript. Um exemplo de uma limitação seria se você codifica em .NET – neste caso, o Azure é a sua única opção. Ou, se você quiser escrever seu código no Swift, o IBM Cloud Functions (também conhecido como OpenWhisk) é a plataforma que deverá ser escolhida.

O sistema serveless quase sempre pode ser construído usando as mesmas ferramentas e pipelines de CI / CD que você já possui. Se você atualmente está trabalhando com contêineres, por exemplo, as suas ferramentas de CI / CD estarão prontas para lhe auxiliar no projeto.

 

O uso de integrações

Os pontos de integração em um sistema serveless são divididos em duas categorias: incoming (geralmente chamados de triggers) e outgoing (que podem ser chamados de targets).

Os triggers em uma plataforma de nuvem são sempre específicos e geralmente assíncronos, como um bucket do S3 sendo gravado, ou um Cosmos DB sendo atualizado ou um tópico do SNS recebendo uma mensagem. Embora a parte principal do código na função possa ser multi-plataforma e genérica, se você estiver usando uma nuvem específica, por que sobrecarregar o código quando você não precisa fazer isso? Processar pontos de dados enviados aleatoriamente por dispositivos IoT e armazená-los em um banco é o exemplo perfeito do caso no qual o serverless é a melhor opção.

Uma chamada síncrona é aquela realizada por um gerenciador de API ou de um frontend da web. Nesse caso, eles esperam ativamente por uma resposta da função. Se o tempo de resposta realmente importa, então o serverless não é o caminho mais rápido para construir esses aplicativos. Não é que o serverless seja lento: ele é apenas mais lento do que outras opções (exceto nas situações de maior volume), porque ele precisa ser totalmente inicializado e executado todas as vezes.

As plataformas serveless sempre têm uma opção “personalizada” para configurar um target ou um trigger. Antes de seguir essa rota, o que você precisa considerar é que quanto mais você codifica em um framework personalizado, mais você precisa do suporte de um framework próprio. Em um certo ponto, usar um microsserviço em um contêiner fará mais sentido do que tentar alterar completamente o que você está trabalhando apenas para utilizar o sistema serveless.

 

Conclusão

O apego a métodos tradicionais e a resistência a mudanças, em relação a qualquer estrutura de desenvolvimento de aplicativos pode ser tão ruim quanto não ter padrões ou usar todas metodologias disponíveis ao mesmo tempo. A arquitetura serveless tem o seu lugar bem definido e nele funciona maravilhosamente bem. Ao longo de anos de estudos e experiências com equipes de desenvolvimento de vários tamanhos, foi possível concluir que a abordagem mais sustentável é ter um par de modelos de desenvolvimento e de deploy que possam ser utilizados em diversos projetos. Existem modelos diferentes porque as equipes e os times têm necessidades distintas para os seus produtos e serviços. Por isso, o modelo serveless é promissor e deve ser utilizado nas situações nas quais ele fizer sentido e for mais apropriado.

 

Conheça o Twistlock Enterprise

O Twistlock Enterprise é a solução para promover a segurança de contêineres mais abrangente, automatizada e escalável disponível no mercado. Há suporte disponível para Docker, Kubernetes e outras ferramentas nativas da nuvem. O sistema atua com o controle de containers em execução, para garantir a conformidade em todo o pipeline CI / CD e os protege contra inúmeras ameaças. Para saber mais, clique aqui.