Serverless Computing – Aula 1- Parte 1
Serverless Computing – Aula 1- Parte 1.
Professor: Fernando Sapata.
EP 01. Currículo e containers
Containers:
Antes dos containers, algumas soluções de virtualização tentaram criar um ambiente que encapsula tudo que é necessário para uma aplicação rodar sem problemas e gerar uma imagem transportável disso.
Problema: Estas imagens eram grandes e difíceis de serem transportadas ou enviadas de um lado para o outro.
Por serem soluções de virtualização, todas as imagens continham um sistema operacional completo e suas dependências, tornando as imagens grandes.
Containers são a base do serverless.
- Userspace: Ele parte logo após o sistema operacional ser inicializado onde todas as aplicações estão sendo executadas:
Ela é uma área normalmente executada em memoria.
Como o userspace é um recurso compartilhado entre as aplicações, pode ocorrer de uma aplicação consumir mais recursos que um outro e causar lentidão o crash de aplicações:
[Execução consistente]
A execução consistente esta ligado as dependências dos programas e a forma adequada para sua execução:
Exemplos:
•Diferentes versões de sistemas operacionais
•Plugins
•Frameworks
•Java/.NET Framework
•Permissões
•Parâmetros
•Configurações
•Etc...
Containers vieram para tratar todos os problemas de execução consistente nos mais diversos ambientes.
“Quem nunca descobriu que precisa ser administrador para executar algum software no Windows”.
“De fato as nossas aplicações precisam ser executadas de forma igual independente do ambiente ou maquina ao qual ela estiver rodando para se ter uma execução consistente.”
[Soluções]
- Containers:
Inicio em 2005 com o lançamento do solaris 5.10 que já tinha o conceito de userspace embarcado nesta edição do sistema operacional.
Os containers ficaram mesmo populares com o inicio da operação da empresa chamada “Docker” que ocorreu em 2013.
O Docker é um conceito de conteinerização.
Container e virtualização não são a mesma coisa.
Com containers os userspaces são divididos de forma autocontidos, ou seja, um não impacta nas outras aplicações.
Como o containers consegue resolver o problema de execução consistente?
O Docker usa um conceito de imagens. Uma imagem é uma camada imutável que contem todas as aplicações e dependências para ter uma execução consistente de um software.
Com os containers, tanto a sua aplicação quanto as dependências necessárias para a execução dela já estão autocontidos pelo mecanismo de imagem imutável do Docker.
[Resumo]
Serverless Computing – Aula 1- Parte 2.
Professor: Fernando Sapata.
EP 02. Serverless
Inicio do assunto:
1- Definição e características de serverless:
Apesar do termo “Serverless” (Sem servidor), existem servidores suportando toda esta operação.
Quando empregamos o termo serverless, o termo tem relação direta com a questão do gerenciamento dos recursos de um servidor, é o fato de você não precisar fazer a operação destes servidores.
Uma confusão muito comum é confundir serverless com “função como serviço” (FaaS).
A ideia de serverless é abstrair a uma camada de gestão de infraestrutura, então é possível sim você ter diversas soluções que usem o conceito de serverless e nã somente Funções como serviço.
[Quatro principais características de serverless]
I. Pagar somente pelo uso. (Pay as you go) – Há uma possível redução de
II. Sem gerenciamento de infraestrutura.
III. Alta-Disponibilidade é natural no conceito de serverless por padrão. (Alto SLA)
IV. Escalabilidade. (Permite escalabilidade de forma automática, scale in e scale out)
2- Complexidade essencial vs complexidade acidental:
Exemplo:
Complexidade essencial é o caminho mais curto entre o ponto “A” e o ponto “B”. O conceito de serverless te apoia nos negócios e consegue te aproximar da complexidade essencial.
Em resumo, complexidade essencial é aquela que é inerente ao problema e complexidade acidental tem relação com os desafios criados pelos próprios desenvolvedores na criação das soluções de software. Estes conceitos podem ser um grande diferencial operacional dentro da sua empresa, ou seja, com maior complexidade essencial, menor é a responsabilidade operacional e menores são os custos inerentes para manter o ambiente desejado.
3- Responsabilidade operacional:
Exemplo:
O gráfico exemplifica que: Quanto mais próximo de serverless menor sera a minha responsabilidade sobre o meu ambiente, e todo este trabalho será realizado pelo provedor do serviço seja (IaaS, CaaS, PaaS ou até mesmo Faas).
“Serverless diminui esforço operacional e consequentemente economiza dinheiro para sua companhia.”
4- Prós e contras:
Pros:
- Pagar somente pelo uso.
- Definir o custo unitário por transação no seu sistema. (Mensurável)
- Não precisar gerenciar infraestrutura. (Menor custo operacional e mais foco no negócio)
- Alta-disponibilidade por padrão.
- Serverlesss aproxima ao conceito de complexidade essencial o que reduz complexidade acidental que pode trazer acréscimo de custo para os projetos.
- Menor time to market – Com serverless é possível ir direto para o mercado e testar suas hipóteses pois existe o menor complexidade de setup.
- Maximização de reuso: Como o conceito de serverless e função em especifico, esta muito ligado a uma pequena granularidade do sistema, você pode reutilizar estas funções em outras aplicações fazendo chamadas para estas. Reutilizando a mesma base de código (Code Base), o que no final vai economizar tempo, dinheiro e time to market pois vai explorar funções que já foram desenvolvidas e que estão testadas e funcionando.
Contras:
“Nem toda tecnologia é perfeita.”
- Maior dependência do fornecedor: Vendor lock-in.
- Menor controle: Por questões de auditoria ou certificações, será necessário recorrer ao fornecedor para se certificar que o que precisa ser feito no gerenciamento da infraestrutura é feito pelo fornecedor. No caso, a complexidade operacional e de governança desta infra será responsabilidade do fornecedor e não mais sua e isso acaba gerando menor controle do ambiente.
- Monitoramento e Observabilidade: Com serverless o monitoramento das aplicações e dos recursos se torna mais complexo e demanda soluções diferentes das trandicionais.
- Tuning de código: Problemas como código ruim podem ser mascarados pelo poder computacional do serverless, e este mascaramento pode gerar maior custo para operação.
- Limites operacionais das funções serverless: Necessario consultar os limites de operação das funções para poder orquestrar de forma adequada a execução das tarefas.
- Testes: Maior complexidade ao executar testes, pois saímos de soluções monolíticas e que agora possuem funções totalmente desacopladas que em algum momento se integram por meio de algum serviço, seja mensageria ou até mesmo bases de dados. Considerar frameworks de integração e ferramentas para obter o maior resultado no seu ambiente.
[Dica]
Comece utilizando conceitos de DevOps para entregar novas funções no seu ambiente seja on-premise ou em nuvem.
[Resumo]
Serverless Computing – Aula 1- Parte 3.
Professor: Fernando Sapata.
EP 03. BaaS, FaaS e CaaS
Inicio do assunto:
Baas: (backend as a service) – É um tipo de aplicação que vai atender o seu backend como serviço.
Banco de dados como serviço.
Sistemas de autenticação e autorização com serviço.
Mensageria como serviço.
Armazenamento como serviço. (S3)
Alguns provedores de nuvem chamam estes serviços como Gerenciados, ou seja, eles fazem o gerenciamento por você.
Exemplo:
Banco de dados:
Tradicional: Você é responsável por todas as camadas do ambiente de banco de dados, desde a entrega de facilities (Instalações) até ao consumo dos dados.
BaaS: Você se torna responsável apenas pela modelagem e consumo dos dados que estão armazenados no banco de dados. Todas as outras camadas operacionais são feitas pelo seu provedor.
Vantagens do Baas vs Tradicional:
- Provisionamento rápido.
- Opção de alta-disponibilidade com poucos cliques.
- Escalabilidade: Se comparado ao tradicional, este já precisa ter os recursos disponíveis e isso pode ser uma barreira de custos.
- Backup do ambiente sem se preocupar em onde armazenar e como fazer isso.
Já no tradicional, você será o responsável por todas estas atividades:
Ao comparar custos das soluções é importante considerar o custo operacional e facilities.
FaaS: Função como serviço: É o conceito criar pequenas peças de códigos (funções) e executa-las dentro de um provedor de nuvem.
Quando olhamos para o processo de modernização, “Serverless acaba te ajudando . Ele favorece o processo de modernização.”
Por que: Pois ele permite a quebra dos sistemas e pequenas partes o que favorece o desacoplamento e entrega maior possibilidade de escalabilidade.
Ponto importante: As funções precisam ser efêmeras.
Ao utilizar FaaS e empregar o conceito de funções efêmeras, estas funções ficam “desligadas” quando não há chamadas e o processo de inicio delas após a primeira chamada é conhecido como “ColdStart” o que pode levar um pouco mais de tempo para responder dependendo da complexidade desta.
Opções de Faas:
O Knative (pronunciado quei-nei-tiv) é um projeto da comunidade open source que adiciona componentes para implantar, executar e gerenciar aplicações sem servidor e nativas em nuvem no Kubernetes. A adoção de um modelo de cloud computing sem servidor pode resultar no aumento da produtividade dos desenvolvedores e na redução dos custos operacionais.
Importante pensar: Portabilidade.
[Pense, medite e anote]
Será que existe uma forma de mitigar esta portabilidade ou zerar o vendor lock-in?
Utilizando containers, mitiga-se vendor lock-in, aumenta a portabilidade, mas aumenta a complexidade operacional.
---
Caas - Container as a service: Neste conceito o seu provedor de nuvem te entrega um orquestrador de containers.
Quando se utiliza containers, naturalmente aumenta-se a portabilidade e reduz as chances de vendor lock-in por containers ser algo disponível em mais de um provedor e até mesmo em ambiente on-premise.
Opções de CaaS na AWS:
- ECS: Orquestrador de containers próprio da AWS.
- EKS: Kubernetes gerenciado pela AWS.
Outros provedores de nuvem também possuem soluções similares e com isso, a portabilidade do seu container acaba se tornando uma tarefa mais simples e trivial desde que não utilize-se nada exclusivo do provedor.
Complexidade: Quando for optar por um CaaS ao invés de outra solução serverless, deve-se considerar se o custo desta complexidade adicional faz sentido e colocar na balança estes números.
Os provedores de nuvem já suportam deploy de containers como FaaS.
“É importante entender as possibilidades que você tem na construção das suas aplicações sem servidor por que isso vai facilitar a tua vida no dia a dia, diminuindo custo operacional e maximizando os resultados da sua solução”.
[Resumo]

















