Skip to main content

Serverless Days 2023

· 13 min read
Bruno Carneiro
Fundador da @TautornTech

No dia 21 de outubro de 2023, aconteceu o Serverless Days, o maior evento de Serverless do mundo que ocorreu desta vez em São Paulo.

Tive a oportunidade de participar do painel onde o tema foi: "Serverless - Quando usar e quando não usar". Contei alguns aprendizados e cases da Base39

Foi um evento incrível, contamos com pessoas de vários locais do país e inclusive pessos de fora do país.

Tivemos muita troca de conhecimento e experiências, com certeza foi um evento que agregou muito conhecimento para todos os participantes.

Com isso eu gostaria de trazer um pouco da minha experiência e do que foi discutido no painel.

Quais os tipos de projetos que são especialmente adequados para se optar por serverless do ponto de vista de solução técnica?

A arquitetura serverless é especialmente adequada para projetos que têm os seguintes requisitos:

  • Carga de trabalho variável: projetos que experimentam picos de tráfego imprevisíveis ou flutuações na demanda são bons candidatos para serverless.
  • Lógica de negócios assíncrona: projetos que executam lógica de negócios assíncrona, como processamento de eventos ou serviços de back-end, podem se beneficiar da escalabilidade automática e da redução de custos operacionais do serverless.
  • Codificação stateless: projetos que usam código stateless, ou seja, que não dependem de estado persistente, são mais fáceis de implementar e gerenciar em um ambiente serverless.
  • Custo variável: projetos com cargas de trabalho variáveis podem se beneficiar de custos variáveis, pagando apenas pelo que usam.
  • Custo operacional: projetos com custos operacionais altos podem se beneficiar da redução de custos operacionais do serverless.

Alguns exemplos de projetos que podem se beneficiar da arquitetura serverless incluem:

  • Sites e aplicativos móveis: projetos que experimentam picos de tráfego durante o dia ou em eventos especiais podem usar serverless para escalar automaticamente sem a necessidade de provisionar ou gerenciar servidores.
  • Serviços de streaming: serviços de streaming de vídeo e música podem usar serverless para transcodificar conteúdo em tempo real, conforme necessário.
  • Aplicações de inteligência artificial e machine learning: aplicações que executam tarefas de processamento intensivo, como análise de imagens ou processamento de linguagem natural, podem usar serverless para escalar de forma eficiente sem a necessidade de comprar ou gerenciar servidores dedicados.

Existem cenários ou tipos de projetos onde vocês consideram que a arquitetura serverless não seria a melhor escolha? Poderiam compartilhar exemplos?

A arquitetura serverless não é uma solução universal e pode não ser a melhor escolha para todos os projetos. Em geral, projetos que têm os seguintes requisitos devem evitar o serverless:

  • Carga de trabalho constante: projetos que experimentam uma demanda constante de recursos podem ser mais econômicos ao serem executados em servidores dedicados.
  • Lógica de negócios síncrona: projetos que executam lógica de negócios síncrona, como processamento de transações em tempo real, podem não ser adequados para a escalabilidade automática do serverless.
  • Codificação stateful: projetos que usam código stateful, ou seja, que dependem de estado persistente, podem ser mais complexos de implementar e gerenciar em um ambiente serverless.

Quais foram os principais benefícios observados ao adotar uma arquitetura serverless nos projetos de suas empresas? Podem contar algum caso de sucesso?

  • Escalabilidade automática: a arquitetura serverless permite escalar a capacidade de processamento de forma automática, conforme a demanda. Isso pode ajudar a reduzir custos operacionais e melhorar a experiência do usuário.
  • Redução de custos operacionais: a arquitetura serverless pode ajudar a reduzir custos operacionais, pois elimina a necessidade de provisionar e gerenciar servidores.
  • Agilidade: a arquitetura serverless pode ajudar a aumentar a agilidade, pois permite que os desenvolvedores se concentrem na lógica de negócios e não na infraestrutura.
  • Tempo de lançamento mais rápido: a arquitetura serverless pode ajudar a reduzir o tempo de lançamento, pois permite que os desenvolvedores se concentrem na lógica de negócios e não na infraestrutura.
  • Maior disponibilidade: a arquitetura serverless pode ajudar a aumentar a disponibilidade, pois permite que os desenvolvedores se concentrem na lógica de negócios e não na infraestrutura.
  • Maior segurança: a arquitetura serverless pode ajudar a aumentar a segurança, pois permite que os desenvolvedores se concentrem na lógica de negócios e não na infraestrutura.

Existem características dos tipos de projeto que do ponto de vista de custo fazem mais sentido serem serverless? E quais situações isso não faz sentido?

  • Carga de trabalho variável: projetos que experimentam picos de tráfego imprevisíveis ou flutuações na demanda podem economizar custos ao usar a escalabilidade automática do serverless.
  • Lógica de negócios assíncrona: projetos que executam lógica de negócios assíncrona podem economizar custos ao usar a redução de custos operacionais do serverless.
  • Codificação stateless: projetos que usam código stateless podem economizar custos ao usar a simplicidade de gerenciamento do serverless

Como costumam fazer comparações de custo TCO de se optar por serverless ou não?

Comparações de TCO envolvem análise de custos operacionais, de infraestrutura e de pessoal entre uma arquitetura serverless e uma tradicional. A redução de custos operacionais e de manutenção costuma ser o principal fator favorável ao serverless.

  • Custos de infraestrutura: os custos de infraestrutura incluem o custo de compra ou aluguel de servidores, de hardware e software, e de manutenção.
  • Custos operacionais: os custos operacionais incluem o custo de energia, de refrigeração, de pessoal e de segurança.
  • Custos de desenvolvimento: os custos de desenvolvimento incluem o custo de contratação de desenvolvedores, de treinamento e de ferramentas de desenvolvimento.

Para realizar uma comparação precisa de TCO, é importante considerar todos esses fatores e estimar seus valores com precisão. Em geral, a arquitetura serverless pode ser mais econômica do que a tradicional em cenários com cargas de trabalho variáveis, pois permite escalar a capacidade de processamento conforme a demanda, evitando o provisionamento de servidores ociosos.

Aqui estão alguns exemplos de como os custos de infraestrutura e operacionais podem variar entre arquiteturas serverless e tradicionais:

  • Custos de infraestrutura: em uma arquitetura tradicional, os custos de infraestrutura podem ser significativos, especialmente para cargas de trabalho com alta demanda. Por exemplo, uma empresa que hospeda um site com alto tráfego pode precisar comprar ou alugar servidores dedicados para garantir o desempenho e a disponibilidade necessários. Em uma arquitetura serverless, a infraestrutura é gerenciada pelo provedor de nuvem, o que pode reduzir significativamente os custos.

  • Custos operacionais: os custos operacionais também podem variar entre arquiteturas serverless e tradicionais. Em uma arquitetura tradicional, os custos operacionais podem incluir o custo de energia, de refrigeração e de pessoal. Por exemplo, uma empresa que hospeda um aplicativo em um servidor dedicado pode precisar contratar um administrador de sistemas para gerenciar o servidor. Em uma arquitetura serverless, esses custos são geralmente cobertos pelo provedor de nuvem.

Quais cenários fazem mais sentido optar por custo fixo e quando optar por custo variável?

Custo fixo faz sentido para cargas de trabalho previsíveis, enquanto custo variável é mais apropriado para cenários com flutuações na demanda. A escolha entre custo fixo e custo variável depende de uma série de fatores, incluindo as necessidades da empresa, o perfil de carga de trabalho e o orçamento.

Custo fixo é uma opção mais adequada para empresas que precisam de uma capacidade de processamento constante, como empresas que hospedam sites ou aplicativos com tráfego constante. O custo fixo é geralmente mais alto do que o custo variável, mas oferece a vantagem de previsibilidade.

Custo variável é uma opção mais adequada para empresas que precisam de uma capacidade de processamento variável, como empresas que hospedam aplicativos com picos de tráfego ou empresas que executam tarefas de processamento intensivo. O custo variável é geralmente mais baixo do que o custo fixo, mas oferece a vantagem de escalabilidade.

Aqui estão alguns exemplos de cenários em que o custo fixo pode ser uma opção mais adequada:

  • Empresas que hospedam sites ou aplicativos com tráfego constante
  • Empresas que precisam de alta disponibilidade para seus aplicativos
  • Empresas com orçamento limitado

Aqui estão alguns exemplos de cenários em que o custo variável pode ser uma opção mais adequada:

  • Empresas que hospedam sites ou aplicativos com picos de tráfego
  • Empresas que executam tarefas de processamento intensivo
  • Empresas com orçamento ilimitado

Quais cenários fazem mais sentido optar por Edge Serverless vs Cloud Serverless?

A escolha entre Edge Serverless e Cloud Serverless depende de uma série de fatores, incluindo a localização dos usuários, a necessidade de baixa latência e o orçamento.

Edge Serverless é uma opção mais adequada para empresas que precisam fornecer serviços próximos aos usuários, como CDNs ou aplicativos móveis. O Edge Serverless oferece baixa latência, pois os recursos são executados em servidores próximos aos usuários.

Cloud Serverless é uma opção mais adequada para empresas que precisam fornecer serviços em toda a Internet, como aplicativos web ou aplicativos de back-end. O Cloud Serverless oferece escalabilidade e disponibilidade, pois os recursos são executados em servidores gerenciados pelo provedor de nuvem.

Aqui estão alguns exemplos de cenários em que o Edge Serverless pode ser uma opção mais adequada:

  • Empresas que precisam fornecer serviços próximos aos usuários
  • Empresas que precisam de baixa latência para seus aplicativos
  • Empresas com orçamento limitado
  • Empresas que fornecem CDNs ou aplicativos móveis

Aqui estão alguns exemplos de cenários em que o Cloud Serverless pode ser uma opção mais adequada:

  • Empresas que precisam fornecer serviços em toda a Internet
  • Empresas que precisam de escalabilidade e disponibilidade para seus aplicativos
  • Empresas com orçamento ilimitado
  • Empresas que fornecem aplicativos web ou aplicativos de back-end

O que é necessário cuidar quando optar por serverless? Poderiam compartilhar algum desafio ou obstáculo que enfrentaram ao implementar soluções serverless? Como superar esses desafios?

  • Carga de trabalho: A arquitetura serverless é mais adequada para cargas de trabalho intermitentes ou variáveis. Em cargas de trabalho constantes ou previsíveis, a arquitetura serverless pode ser mais cara do que uma arquitetura tradicional.
  • Performance: A performance de uma aplicação serverless pode variar dependendo da plataforma e da otimização do código. É importante realizar testes de performance para garantir que a aplicação atenda às expectativas do usuário.
  • Segurança: A segurança deve ser tratada com atenção em qualquer arquitetura de TI. Em ambientes serverless, é importante implementar políticas de acesso adequadas, monitoramento contínuo e gerenciamento de identidade.

Alguns desafios específicos que podem ser enfrentados ao implementar soluções serverless incluem:

  • Gestão de dependências: Em uma arquitetura serverless, as dependências são gerenciadas pelo provedor de nuvem. É importante entender como as dependências são gerenciadas e como isso pode afetar o código.
  • Latência: A latência pode ser um fator importante em aplicações que exigem respostas rápidas. É importante considerar a localização dos usuários e dos recursos serverless ao projetar a aplicação.
  • Monitoramento: O monitoramento é essencial para garantir o desempenho e a disponibilidade da aplicação. É importante escolher as ferramentas de monitoramento adequadas para as necessidades da aplicação.

Para superar esses desafios, é importante adotar boas práticas de desenvolvimento e usar ferramentas adequadas. Algumas dicas específicas incluem:

  • Usar um framework serverless: Um framework serverless pode ajudar a simplificar o desenvolvimento e o gerenciamento de aplicações serverless.
  • Usar ferramentas de monitoramento: As ferramentas de monitoramento podem ajudar a identificar e resolver problemas de desempenho e disponibilidade.
  • Usar boas práticas de desenvolvimento: Boas práticas de desenvolvimento, como a utilização de testes automatizados, podem ajudar a reduzir o risco de erros e problemas.

Em quais cenários a arquitetura serverless se mostrou superior quando comparada com arquiteturas tradicionais baseadas em servidores?

A arquitetura serverless se destaca em projetos com cargas de trabalho intermitentes, permitindo escalabilidade eficiente sem a necessidade de provisionamento constante de servidores.

  • Carga de trabalho intermitente: Em cargas de trabalho intermitentes, a arquitetura serverless pode escalar de forma eficiente sem a necessidade de provisionar servidores ociosos.
  • Carga de trabalho variável: Em cargas de trabalho variáveis, a arquitetura serverless pode atender a flutuações na demanda sem a necessidade de intervenção manual.
  • Carga de trabalho de processamento intensivo: Em cargas de trabalho de processamento intensivo, a arquitetura serverless pode escalar para atender às necessidades de desempenho sem a necessidade de investir em infraestrutura de TI.

Como a arquitetura serverless atendeu às demandas de performance e escalabilidade em seus projetos?

Serverless atende bem à escalabilidade automática, mas a performance pode variar de acordo com a plataforma e a otimização do código.

Em nossos projetos, a arquitetura serverless atendeu às demandas de performance e escalabilidade de forma satisfatória. Em geral, a performance da aplicação foi boa, com latências aceitáveis. A escalabilidade também foi boa, com a capacidade de atender às demandas de tráfego sem problemas.

Para garantir a performance e a escalabilidade, adotamos as seguintes medidas:

  • Uso de um framework serverless: O framework serverless que usamos fornece recursos e ferramentas para otimizar o desempenho e a escalabilidade da aplicação.
  • Otimização do código: O código da aplicação foi otimizado para desempenho e escalabilidade.
  • Uso de ferramentas de monitoramento: As ferramentas de monitoramento foram usadas para identificar e resolver problemas de performance e escalabilidade.

Como a segurança é gerenciada em um ambiente serverless em suas empresas? Há algum desafio específico que enfrentaram nesse aspecto?

A segurança é gerenciada em nossos ambientes serverless de acordo com as melhores práticas de segurança. As principais medidas adotadas incluem:

  • Uso de políticas de acesso adequadas: As políticas de acesso são usadas para controlar quem pode acessar os recursos serverless.
  • Monitoramento contínuo: O monitoramento contínuo é usado para identificar e resolver problemas de segurança.
  • Gerenciamento de identidade: O gerenciamento de identidade é usado para garantir que apenas usuários autorizados tenham acesso aos recursos serverless.

Um desafio específico que enfrentamos foi a necessidade de entender como as políticas de acesso são gerenciadas pelo provedor de nuvem. É importante entender as limitações das políticas de acesso para garantir que a aplicação seja segura.

Quais foram os principais aprendizados que obtiveram ao explorar a arquitetura serverless em seus projetos?

A principal lição é que serverless não é uma solução universal, mas pode trazer benefícios significativos em cenários apropriados. A importância de monitoramento e gerenciamento de dependências é crucial.

Como veem o futuro da arquitetura serverless em suas empresas? Existem planos para expandir ou modificar a utilização dessa tecnologia nos próximos projetos?

Acreditamos que o futuro da arquitetura serverless é promissor. A tecnologia está evoluindo rapidamente e oferece uma série de benefícios que podem ser atraentes para empresas de todos os tamanhos.

No momento, estamos planejando expandir o uso de serverless em nossos projetos. Acreditamos que a tecnologia pode nos ajudar a reduzir custos operacionais, aumentar a agilidade e melhorar a experiência do usuário.

Algumas mudanças específicas que estamos considerando incluem:

  • Usar mais serviços serverless gerenciados: Os serviços serverless gerenciados oferecem uma série de benefícios, como simplificação do desenvolvimento e gerenciamento, e redução de custos operacionais.
  • Investir em ferramentas de monitoramento e gerenciamento de dependências: O monitoramento e o gerenciamento de dependências são essenciais para garantir o desempenho e a disponibilidade da aplicação serverless.

Estamos confiantes de que a arquitetura serverless pode nos ajudar a alcançar nossos objetivos de negócios.

Até a próxima!