O que é sem servidor?
"Sem servidor" é um padrão de design de arquitetura de software que aproveita a execução de código guiada por eventos alimentada por serviços gerenciados em nuvem para criar aplicativos com ajuste de escala massivo e econômicos, compostos de pequenas funções discretas, sem que os desenvolvedores precisem projetar ou pensar na infraestrutura subjacente em que seu código é executado.
Então, o que é lógica de negócios sem servidor? Todo aplicativo usa servidores em algum momento. O termo sem servidor enfatiza uma arquitetura e um modelo de serviço em que os desenvolvedores não precisam se preocupar com a infraestrutura e, em vez disso, podem se concentrar na lógica de negócios do seu aplicativo. O modelo sem servidor é a próxima evolução do design de arquitetura, que passa de monolítica aos microsserviços, às funções, como explica Adrian Cockcroft neste vídeo.
Muitas vezes, sem servidor e FaaS são tratados como termos intercambiáveis, mas isso não é 100% correto. Sem servidor é um padrão de arquitetura abrangente que faz uso de um FaaS juntamente com outros serviços gerenciados em nuvem. O FaaS é um tipo específico de serviço, como o AWS Lambda, o Google Cloud Functions e o Azure Functions, que permite que os desenvolvedores implantem funções.
-
Unidades de código pequenas e discretas. Muitas vezes, os serviços escritos usando arquitetura sem servidor são compostos por uma única função.
-
Execução baseada em eventos. A infraestrutura necessária para executar uma função não existe até que uma função seja disparada. Uma vez que um evento é recebido, um ambiente de computação efêmero é criado para executar essa solicitação. O ambiente pode ser destruído imediatamente ou, mais comumente, permanece ativo por um curto período de tempo, geralmente 5 minutos.
-
Ajuste para zero. Quando uma função para de receber solicitações, a infraestrutura é desativada e para completamente de funcionar. Isso gera economia, pois a infraestrutura só é executada quando há uso. Se não houver uso, o ambiente é reduzido a zero.
-
Ajuste para o infinito. O FaaS cuida do monitoramento de carga e da criação de instâncias adicionais quando necessário, em teoria, até o infinito. Isso praticamente elimina a necessidade de os desenvolvedores pensarem em ajustes de escala ao projetar aplicativos. Uma única função implantada consegue lidar com um ou um bilhão de solicitações sem qualquer alteração no código.
-
Uso de serviços gerenciados. Muitas vezes, as arquiteturas sem servidor fazem uso de serviços fornecidos em nuvem para elementos do aplicativo que fornecem trabalho pesado não diferenciado, como armazenamento de arquivos, bancos de dados, filas, etc. Por exemplo, o Firebase do Google é popular na comunidade sem servidor como um serviço de gerenciamento de estado e banco de dados que se conecta a outros serviços do Google, como o Cloud Functions.
Aqui está um gráfico com exemplos de serviços gerenciados da AWS, do Google Cloud e Azure, juntamente com suas contrapartes de código aberto.
Serviço | Código aberto | AWS | Google Cloud | Azure |
---|---|---|---|---|
FaaS | Knative | Lambda | Cloud Functions | Azure Functions |
Armazenamento | Minio | S3 | Armazenamento na nuvem | Azure storage |
SQL DB | MySQL | RDS | Cloud SQL | Azure SQL Banco de dados |
NoSQL DB | MongoDB, Cassandra, CouchDB | DynamoDB | Cloud Datastore | Cosmos DB |
Fila de mensagens | Kafka, Redis, RabbitMQ | SQS, Kinesis | Google Pub/Sub | Azure Queue Storage |
Service mesh | Istio | App Mesh | Istio on GKE | Azure Service Fabric Mesh |
O GitLab Serverless permite que as empresas implantem seu próprio FaaS no Kubernetes.
Mais velocidade
Ritmo mais rápido de inovação. A produtividade do desenvolvedor aumenta quando ele pode se concentrar apenas na lógica de negócios.
Estabilidade
Maior estabilidade/resiliência (menos perda de receita devido ao tempo de inatividade).
Ajuste de escala
Maior escala, o software é capaz de acompanhar a demanda do negócio.
Custos
Custos mais baixos. Como a computação só é cobrada quando um serviço está ativo, o modelo sem servidor oferece uma tremenda economia de custos em comparação com a infraestrutura sempre ativa.
Sem dependência do fornecedor
Sem dependência do fornecedor. As empresas podem escolher quem preferem que execute a computação. Em qualquer nuvem compatível com Kubernetes ou até mesmo servidores no local.
Fluxo de trabalho
Seu FaaS faz parte do mesmo fluxo de trabalho que o restante do seu ciclo de vida de software, com uma única aplicação, desde o planejamento e teste até a implantação e monitoramento.
Implantação
A implantação de funções é bastante simplificada em comparação com o uso direto do Knative.
Conteúdo sugerido
Mais de 50% das empresas Fortune 100 confiam no GitLab
Comece a entregar software melhor, mais rapidamente
Descubra o que sua equipe pode fazer com a
plataforma DevSecOps inteligente.