BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias CloudState, um framework open source Serverless para o Knative/Kubernetes

CloudState, um framework open source Serverless para o Knative/Kubernetes

A Lightbend recentemente anunciou o CloudState. Criado pela equipe responsável pelo Akka, Play e movimento reativo, o CloudState é o primeiro framework open source serverless projetado para trazer gerenciamento de estado para o stack Knative/Kubernetes.

De acordo com Jonas Bonér:

O CloudState é uma iniciativa para definir o que é o "Serverless 2.0" - ou o que vier a ser a próxima geração serverless - adicionando um conceito, modelo e implementação no que diz respeito ao estado. Qualquer um que já tenha construído uma aplicação cloud, um sistema distribuído, sabe que o estado na realidade é a parte mais complicada de lidar, enquanto o serverless de certa forma ignora isso. Dessa forma, estamos tentando adicionar basicamente duas coisas. O primeiro, um esforço de padronização que define uma especificação, um protocolo e um TCK para implementar. O segundo é uma implementação de referência, implementando a especificação.

O CloudState consiste basicamente duas coisas, um esforço de padronização para definir uma especificação, protocolos entre funções e backend, e um TCK; e uma implementação de referência, que implementa o backend e um conjunto de bibliotecas de APIs em várias linguagens.

O CloudState é projetado para uma arquitetura orientada a eventos, event sourcing, CQRS, cluster sharding, co-location de dados e processamento, e CRDTs, juntamente com outros padrões distribuídos comuns. Além disso, a implementação de referência do CloudState faz uso do Knative, gRPC, Akka Cluster, e GraalVM executando no Kubernetes, permitindo que as aplicações não somente escalem eficientemente, mas também gerenciem o estado distribuído de forma confiável em escala, mantendo seu nível global ou local de consistência de dados.

Vamos observar como um serviço CloudState se parece:

(Imagem obtida em https://github.com/cloudstateio)

  • Ingress - Pode ser o Istio, Knative, ou um serviço de comunicação ClusterIP no Kubernetes;
  • Akka Sidecar - Injetado pelo operador do CloudState; cada requisição passa por ele. Os sidecars de um simples serviço no CloudState formam um cluster, comunicando diretamente uns com os outros usando o Akka remoting;
  • Code - A função implementada pelo desenvolvedor. Pode ser escrita em qualquer linguagem que suporte o gRPC. Os sidecars do Akka se comunicam com as funções do usuários usando um protocolo gRPC pré-definido;
  • Distributed Datastore - Usado quando um serviço precisa persistir estado. É importante observar que o código do usuário não interage diretamente com o datastore - interage com os sidecars do Akka, e os sidecars do Akka se comunicam com o datastore.

O CloudState implementa seu próprio autoscaler, uma vez que alguns problemas foram encontrados durante testes com o Knative, um dos problemas foi que quando um nó é adicionado, os shards são rebalanceados, e o estado é replicado. Iniciar muitos nós de uma única vez ou iniciar nós para na sequência pará-los, irá degradar significativamente o throughput e performance.

Maiores detalhes sobre o CloudState podem ser encontrados no repositório do GitHub. Um exemplo de aplicação que implementa um simples chat também está disponível em Java e JavaScript.

Usuários que queiram contribuir podem assinar a lista de email, se juntar a discussão no Gitter Channel, ou entrar em contato através do Twitter.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT