Yandex abre a nuvem. Arquitetura da nova plataforma

imagem

Hoje o Yandex.Cloud tornou-se disponível para todos. Agora qualquer usuário pode ir para a nuvem e implantar os recursos de que precisa, obtendo acesso às tecnologias Yandex. Por exemplo, para tradução automática e reconhecimento e síntese de fala.

Hoje, quero apresentar o Yandex.Cloud e contar como ele está organizado no interior. Sob o corte, você aprenderá um pouco sobre a história, a equipe e a arquitetura da nossa plataforma.

Um pouco de história


Apesar do fato de a plataforma em nuvem Yandex ter sido mostrada publicamente pela primeira vez há pouco tempo, o projeto vem se desenvolvendo na empresa há muito tempo e conseguiu sobreviver a várias fases, e muitas das tecnologias que formaram sua base passaram no teste do tempo na infraestrutura interna da Yandex. O desenvolvimento começou no ano passado e os primeiros usuários externos começaram a testar a plataforma em abril de 2018. Era um modo fechado, no qual cerca de 100 empresas participavam - serviços da Web de vários tamanhos, desenvolvedores de SaaS e corporações. Em setembro, abrimos um site público, mas você só podia entrar na nuvem através da lista de espera e, agora, em dezembro, o acesso ficou aberto a todos.

No início, quando um plano de desenvolvimento de produto estava sendo formulado, era necessário tomar várias decisões estratégicas sobre quais características a nuvem deveria ter e em quais tecnologias deveria se basear: quais soluções de código aberto seria aconselhável usar, que podem ser obtidas na pilha interna de tecnologia Yandex Yandex e o que terá que ser desenvolvido especificamente para a plataforma pública. Uma das questões mais importantes estava relacionada ao OpenStack.



Nessa época, um cluster no OpenStack de vários milhares de hosts estava operando com sucesso no Yandex há vários anos. Uma das soluções possíveis seria usar essa tecnologia para criar a nuvem, principalmente porque isso aceleraria significativamente a entrada da plataforma no mercado. No entanto, após muitas discussões e acalorado debate, foi tomada uma decisão a favor do nosso próprio desenvolvimento. Os prós e os contras foram expressos, mas os seguintes argumentos se tornaram decisivos.

Primeiro, o OpenStack é uma solução para nuvens privadas de inquilino único. Historicamente, ele não foi projetado para criar plataformas escalonáveis ​​para vários locatários . O segundo ponto: essa tecnologia é pouco compatível com a arquitetura hiperconvergente (quando todos os recursos de hardware formam um grande pool e uma infraestrutura virtual já está construída sobre ele). Bem, o terceiro - experimentamos todas as dificuldades com o suporte e a modificação do OpenStack que foram identificadas durante a operação do cluster e não queríamos arriscar a experiência do cliente de nossos futuros usuários. Obviamente, não houve respostas inequívocas às perguntas feitas por nós, mas foi necessário tomar uma decisão informada. A escolha foi feita e a plataforma seguiu seu próprio caminho.

Vale a pena notar as abordagens arquitetônicas que as acompanham, que também foram estabelecidas desde o início. O uso de um único pool de recursos de hardware unificado é uma das decisões fundamentais. Essa abordagem permite escalar facilmente a plataforma e aumentar sem esforço a quantidade de recursos disponíveis. Além disso, determinamos que a plataforma será construída com base no princípio de auto-hospedagem. Ou seja, todos os serviços em nuvem, incluindo os serviços, devem "viver" em cima de uma única infraestrutura hiperconvergente. Isso significa que o Yandex.Cloud não possui servidores de gerenciamento dedicados. Todos os serviços de plataforma são implantados nas mesmas máquinas virtuais que os usuários externos.



A auto-hospedagem permite gerenciar de maneira muito flexível a estrutura da nuvem e conectar automaticamente infraestrutura adicional a custos mínimos - de um servidor a um data center inteiro com milhares de máquinas. Além disso, trabalhamos nas mesmas condições que nossos usuários, o que significa que podemos experimentar toda a experiência do cliente.

E o terceiro princípio subjacente à plataforma: a disponibilidade de um único repositório de metadados e informações do sistema para todos os serviços. Para isso, é utilizado o desenvolvimento interno - Yandex Database (YDB, que não deve ser confundido com ClickHouse), que permite colocar dados com muita confiabilidade, eficiência e flexibilidade. Assim, o repositório de metadados se tornou o serviço interno básico para todos os outros serviços Yandex.Cloud.

Você provavelmente percebeu que os princípios básicos da organização da plataforma estão intimamente relacionados e determinam amplamente a arquitetura e muitas soluções tecnológicas subseqüentes. Foi isso que nos deu a oportunidade de criar uma plataforma escalável que nos permitirá planejar o desenvolvimento de todos os serviços em nuvem existentes e futuros a longo prazo.

Arquitetura


Em geral, a arquitetura fica assim:



O núcleo da nuvem é o armazenamento de metadados compartilhados já mencionado (camada de armazenamento). O YDB usando um mecanismo de replicação especial cobre todo o armazenamento de hardware disponível para a nuvem. Um mecanismo semelhante se aplica ao armazenamento em bloco de rede (NBS). Juntamente com o YDB, eles formam um sistema comum de armazenamento de dados, usado por todos os outros serviços na nuvem.



O serviço Yandex Compute Cloud é construído na parte superior da loja. Ele permite gerenciar máquinas virtuais usadas por usuários externos e componentes internos da plataforma. O hypervisor é KVM e o emulador é QEMU . Como resultado, os drivers VirtIO foram escolhidos para virtualização de dispositivos. Uma parte importante da combinação de máquinas virtuais e infraestrutura de hardware é o Agendador. É ele quem determina em qual servidor físico a próxima máquina virtual será implantada.



Juntos, esses componentes são a parte IaaS da plataforma, que também inclui o serviço Yandex Virtual Private Cloud . O serviço de rede é baseado no projeto OpenContrail de código aberto.

Outro componente importante desse nível é o mecanismo Snapshot. Permite tirar fotos e imagens de disco.



Um nível mais alto são os serviços de plataforma, acessíveis em geral a todos os usuários do Yandex.Cloud. Esses são serviços para gerenciar bancos de dados na nuvem, cujos clusters são implantados em máquinas virtuais (ClickHouse, bancos de dados gerenciados para MongoDB e PostgreSQL); Armazenamento de objeto compatível com S3 bem como serviços de tradução e síntese e reconhecimento de fala .

Existem outros dois serviços importantes que cobrem todas as camadas da nuvem. Estes são Gerenciamento de cobrança e identidade e acesso (IAM). O primeiro é responsável por todas as operações com cobrança e pagamento dos recursos consumidos. O segundo implementa o controle de acesso baseado em função: acesso a recursos : cada usuário pode receber uma ou outra função que descreve as operações permitidas. Por exemplo, a função de editor permite criar, excluir e editar recursos, mas não permite controlar o acesso a eles.

Essa é uma descrição geral do dispositivo Yandex.Cloud, mas permite entender como as várias partes de uma grande plataforma interagem entre si. Se você quiser se aprofundar na estrutura da plataforma, aconselho a analisar a gravação da conferência sobre: ​​nuvem . Especial atenção neste evento foi dada às redes e ao Yandex Database.

A equipe


Finalmente - algumas palavras sobre a equipe. No último ano, aumentou significativamente e continua a crescer . Agora, ele já é composto por mais de 150 pessoas, sem contar o grande número de grupos que não fazem parte diretamente do Yandex.Cloud, mas cujas realizações também são usadas na plataforma. Uma parte significativa dos especialistas é, obviamente, desenvolvedores. Eles são divididos em unidades envolvidas em uma ou outra direção: máquinas virtuais, bancos de dados em nuvem, cobrança, redes, etc. Há um grupo separado, especializado em questões de segurança na nuvem e tudo o que está armazenado nela. Bem, e, claro, suporte, pronto para responder rapidamente às perguntas levantadas pelos usuários.

Isso é tudo para mim. Em breve, publicaremos vários artigos sobre os detalhes de como trabalhar com diferentes serviços de nossa plataforma. Enquanto isso, você pode se familiarizar com o Yandex.Cloud gratuitamente. Cada novo usuário receberá 4000 rublos para se familiarizar com a plataforma. Essa quantia é suficiente para colocar um projeto da Web de tamanho médio na nuvem dentro de um mês, com base em um pacote LAMP padrão com um armazenamento de arquivo de objeto de 1 terabyte; ou para traduzir uma matriz de dados com mais de 9 milhões de caracteres, conectando a tradução automática ao seu aplicativo ou site para celular.

Source: https://habr.com/ru/post/pt432042/


All Articles