DevFest Triângulo 2023

No dia 02 de Dezembro de 2023 rolou o Dev Fest Triângulo 2023, um evento global de tecnologia organizado pela comunidade Google Developer Group (GDG). O evento este ano ocorreu em Uberlândia, em Minas Gerais, e contou com a participação de mais de 900 pessoas, entre elas estudantes, profissionais e entusiastas de tecnologia.
Tive o prazer de poder compartilhar um pouco do meu conhecimento a respeito de Serverless, e como a AWS pode nos ajudar a criar aplicações escaláveis e resilientes, com um custo muito baixo. Além de demonstrar um case de migração da Base39.
Foi um dia incrível, com muitas palestras, troca de conhecimento, energia lá em cima e bastante networking.
Tive a oportunidade de falar sobre Serverless, tecnocalogia que utilizamos dentro da Base39 e que nos ajuda a manter e escalar nossas aplicações.
Estamos trabalhando com Serverless a mais de 4 anos e temos muita experiência para compartilhar. Aqui um pouco do que apresentei no DevFest Triângulo 2023.

Hoje: 80% do tempo do desenolvedor é de operações e manutenção. No futuro, o único código que você vai escrever é o seu negócio. Fonte: Deloitte: 2019
O que é Serverless?
Serverless é um modelo de computação que permite executarmos um código - em uma cloud sem a necessidade de gerenciar servidores. Ex.: AWS Lambda, Google Cloud Functions, Azure Functions, etc.
Desta maneira, o time de desenvolvimento não precisa se preocupar com a infra estrutura e pode focar no que é importante, o negócio.
Com isso, podemos substituir servidores por serviços gerenciados.
Saiba mais em: Trilha sobre Serverless.


Repare que na segunda imagem temos o conceito de Serverless. É uma maneira muito mais rápida e simples de se trabalhar. Sem contar que pode também ser mais econômico.
Serverless permite que o cliente se concentre no valor comercial

Agilidade, desempenho, segurança, custo e muito mais. Este são pontos cruciais para o sucesso de um projeto. E o Serverless nos ajuda a atingir todos eles.
Agilidade: É muito simples provisionar um serviço. Em poucos minutos podemos realizar um deploy e colocar em produção.
Desempenho: Como não precisamos nos preocupar com desempenho, podemos focar em escrever um código de qualidade e que atenda as necessidades do negócio. A cloud que é responsável pela gestão da infraestrutura e escala.
Segurança: Podemos trabalhar com o conceito de "least privilege", ou seja, cada serviço tem apenas as permissões necessárias para executar sua função. Além disso, podemos utilizar ferramentas de segurança como o AWS Shield, que nos ajuda a proteger nossas aplicações contra ataques DDoS.
Custo: Os custos para operar um serviço Serverless são baixos. Pay as you go
é o modelo de cobrança utilizado. O modelo de cobrança é por requisição e tempo de execução. Se ninguém estiver utilizando os serviços a cobrança é zero.
O que os clientes estão criando com Serverless?

-
Automação de TI: Provisionamento de recursos, backups, scripts e muito mais;
-
Aplicações Web: APIs, websites, sistemas SaaS, edge apis;
-
Aplicações de IoT: Coleta de dados, processamento de dados, análise de dados;
-
Processamento de dados: ETL, processamento de logs, processamento de dados em tempo real;
-
Aplicações de Machine Learning: Treinamento de modelos, inferência de modelos, processamento de imagens, processamento de linguagem natural;
Serverless é mais do que computação

Algumas ferramentas do GCP (Google Cloud Platform) que podem nos ajudar a criar aplicações Serverless:
- Cloud Functions: Funções sem servidor que respondem a eventos;
- Cloud Run: Executa containers sem servidor;
- Cloud Tasks: Orquestração de tarefas sem servidor;
- Cloud Scheduler: Agendamento de tarefas sem servidor;
- Cloud Pub/Sub: Mensagens sem servidor;
- Cloud Storage: Armazenamento sem servidor;
- Cloud SQL: Banco de dados sem servidor;
- Cloud Datastore: Armazenamento de dados sem servidor;
- Cloud Armor: Proteção contra DDoS sem servidor;
- Cloud Key Management Service: Gerenciamento de chaves sem servidor;
Saiba mais em: GCP
Quando não utilizar Serverless?
- Sistema de processamento de trasações em tempo real;
- Aplicações que precisam de um alto poder de processamento;
- Aplicações que precisam de um alto poder de armazenamento;
- Aplicações de jogos online;
- Streams de vídeos;
- Sistemas de controle industrila;
- Sistemas de controle de tráfego aéreo;
- Negócios síncronos.
Estes são alguns exemplos de aplicações que não são recomendadas o uso de uma arquitetura Serverless. Podendo ter problemas de latência, custo e desempenho.
Padrões de arquitetura Serverless
Evento
Uma coisa que acontece particularmente uma de importância ou notoriedade. Dados de invocação enviados para a função. A forma diferete de acordo com a origem do evento.
Lambda function
Função que é executada quando um evento ocorre (handler). Processo o evento de entrada.
Contexto
Informações adicionais do serviço Lambda. Ex.: request ID, tempo de execução, limite de memória, etc.
anatomia de uma função lambda:

Case Base39
Este case ainda estou escrevendo, vou separar em outro artigo para não ficar muito extenso.

Conclusão
Serverless é uma excelente tecnologia para escalar aplicações e reduzir custos. Mas é preciso ter cuidado ao utilizá-la. É preciso entender o negócio e o que se deseja alcançar. Além disso, é preciso ter um bom conhecimento de arquitetura e de boas práticas de desenvolvimento. A tecnologia não é bala de prata e dependendo da forma como for utilizada (como qualquer tecnologia) pode trazer mais problemas do que soluções. Estude bastante como serverless funciona, o paradigma é diferente do uso de outras tecnologias utilizando gerenciamento de servidores. Muitas pessoas acabam tendo problemas por não entenderem como funciona o serverless e acabam utilizando de forma errada.
Como falado anteriormente, nem toda aplicação deve utilizar essa abordagem, podendo ter efeito contrário ao esperado. Por isso, é importante entender o negócio e o que se deseja alcançar.
Na Base39 utilizamos em 100% dos nossos serviços e não pretendemos mudar de tecnologia. É importante salientar que não escalamos somente com lambda function
, mas com uma série de outros recursos da AWS que compõem a nossa arquitetura e que também são serverless (sem gerecniamento de infraestrutura).
Quem quiser ver a apresentação, pode acessar o link: Slides da palestra
vlw!
