Uma plataforma serverless oferece elasticidade extremamente alta, mas impõe grandes desafios à infraestrutura. A Alibaba Cloud fornece uma solução que combina o Container Service for Kubernetes (ACK) com outros serviços de nuvem para otimizar o acesso a dados com base no Elastic Container Instance. Este tópico descreve os desafios do acesso a dados na computação em nuvem serverless e a solução para superá-los.
Desafios do acesso a dados em computação em nuvem serverless
Uma plataforma serverless oferece recursos de dimensionamento que ajustam rapidamente os recursos ou as cargas de trabalho das aplicações. Após o início do scale-out de uma aplicação, bastam alguns segundos para que ela esteja pronta para uso. Os recursos de computação são dimensionados em poucos segundos ou até milissegundos. Consequentemente, a infraestrutura enfrenta grandes desafios. Os recursos de armazenamento são os mais utilizados. Se o throughput de IO de um sistema de armazenamento não acompanhar a taxa de atividades de dimensionamento de instâncias, o sistema não conseguirá atender aos requisitos de dimensionamento em segundos. Por exemplo, o sistema pode dimensionar instâncias de contêiner em dois segundos, mas precisar de dezenas de segundos ou até vários minutos para baixar dados do sistema de armazenamento.
A conteinerização serverless impõe os seguintes requisitos aos sistemas de armazenamento tradicionais:
Acesso de alta concorrência: Os recursos de computação servem apenas para processar dados, enquanto o armazenamento fica no sistema de armazenamento. Isso aumenta a sobrecarga de acesso a dados em cenários de alta concorrência, afeta a estabilidade do sistema e eleva o uso de largura de banda.
Baixa latência de rede: Uma arquitetura que desacopla computação e armazenamento aumenta a latência no acesso aos dados de negócios.
Throughput de IO elástico: Em sistemas tradicionais, a largura de banda de armazenamento aumenta conforme a capacidade. Um grande volume de acessos simultâneos por contêineres pode causar limitação (throttling) e gerar conflitos entre os recursos elásticos de computação e a largura de banda de armazenamento.
Solução para otimizar o acesso a dados
Para oferecer melhor suporte à computação em nuvem serverless, a equipe do ACK colaborou com as equipes de software básico e sistema operacional, Elastic Container Instance e Data Lake para fornecer uma solução de otimização de acesso a dados baseada no Elastic Container Instance. Essa solução segue as regras abaixo:
Cumpre padrões existentes para garantir uma experiência de usuário consistente. Por exemplo, Sidecar e Device Plugin no Kubernetes são usados como padrões para expor APIs e interfaces de usuário.
Oferece suporte a controle granular de privilégios Linux.
Sincroniza atualizações de kernel e da camada inferior provenientes do Kubernetes open source. Todo o design mantém consistência com o Kubernetes open source.
A arquitetura usada pelo Fluid na computação em nuvem serverless é composta pelo plano de dados e pelo plano de controle.
Plano de dados: Contêineres FUSE correspondentes a diferentes runtimes formam o plano de dados. Esses contêineres são implantados junto com as aplicações como contêineres sidecar. O sidecar gerencia o acesso a dados relacionado às aplicações.
-
Plano de controle: Composto pelo injector, pelo controlador de runtime de cache e pelo controlador de aplicação.
Injector: Transforma as informações de acesso a dados e de implementação de runtime em um formato legível pelo Sidecar e injeta essas informações nas aplicações. Também controla a ordem de inicialização dos contêineres de uma carga de trabalho, que pode ser um pod ou uma carga de computação de IA/big data, como Spark Job, TensorFlow Job ou MPI Job.
Controlador de runtime de cache: Gerencia a elasticidade dos caches de dados com base no throughput do FUSE Sidecar e também controla as permissões de acesso a dados.
Controlador de aplicação: Encerra os contêineres FUSE em um pod quando os contêineres de um batch Job, TensorFlow Job ou Spark Job no mesmo pod são finalizados.