Yandex lançou o código-fonte do Userver, um framework para criação de aplicativos em C++

Yandex publicou o código-fonte do quadro visão do usuário, que permite criar aplicativos C++ altamente carregados que funcionam no modo assíncrono. O marco foi testado em uploads de nível Yandex e é usado em serviços como Yandex Go, Lavka, Delivery, Market e projetos de fintech.

visão do usuário é mais adequado para desenvolver aplicativos com uma arquitetura de microsserviço. Inicialmente, a marcaou foi desenvolvido para Yandex Taxi, com sua ajuda, a equipe mudou de um aplicativo monolítico para uma arquitetura que permite desenvolver componentes independentes separados (microsserviços) e usá-los em diferentes aplicativos.

Hoje estamos anunciando o lançamento da estrutura de usuário de código aberto para a construção de aplicativos de alta carga. Para nós, esta é uma forma importante de compartilhar a experiência no desenvolvimento de microsserviços que acumulamos. Aqui está um link para um repositório GitHub com código-fonte, documentação, exemplos, um modelo para criar seus próprios serviços (com CI configurado, ambiente de compilação e teste) e um serviço de configuração dinâmica. Tudo isso é liberado sob a licença Apache 2.0.

Os microsserviços são autônomos, portanto, um aplicativo baseado em tal arquitetura é fácil de atualizar e adicionar novos recursos a ele. Portanto, o microsserviço para encontrar um motorista para pedidos de táxi pode ser usado para uma tarefa semelhante, por exemplo, encontrar um mensageiro para atender pedidos de entrega Yandex. O mesmo pode ser feito com o cálculo da hora de chegada do motorista ou estafeta e muitas outras tarefas.

A estrutura foi originalmente criada com ênfase na confiabilidade e conveniência, e dentro dele fornece tudo o que você precisa para desenvolvimento, diagnóstico, monitoramento, depuração e experimentação. Por exemplo, userver sugere como corrigir erros no estágio de construção, sabe como trabalhar com diferentes bancos de dados, alterar parâmetros em tempo real, etc.

Quanto à composição, é mencionado que drivers para trabalho assíncrono com DBMS estão incluídos (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), clientes e servidores que trabalham de forma assíncrona para vários protocolos (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitivos de baixo nível para gerenciar sincronização e acesso aos recursos do sistema, bem como componentes de alto nível para trabalhar com cache, tarefas, bloqueios distribuídos, rastreamento, métricas, estatísticas e dados em formatos JSON/YAML/BSON, além de suportar a alteração da configuração do serviço em tempo real, sem interrompê-lo.

Quanto às desvantagens da arquitetura monolítica são mencionados os seguintes:

  • Consolidação de todo o código dentro de um monólito. Com uma grande base de código, a criação e o teste podem levar horas e a implantação pode levar um dia inteiro.
  • Interação próxima de diferentes partes do código. Você tem que gastar muito esforço em revisões de código para que as interfaces para as diferentes partes do monólito não se tornem uma bagunça.
  • Fragilidade. Uma mudança em um módulo pode quebrar outro módulo.
  • Áreas de responsabilidade borradas. Durante o processo de desenvolvimento, muitas partes do código se generalizam, começam a ser usadas por equipes diferentes, e isso é bom. Mas, como resultado, não está claro quem é o responsável pelo módulo resultante: os primeiros autores; aqueles que fizeram mais edições; ou aqueles que usam mais ativamente o módulo no código.

Anteriormente, o Yandex transferia suas outras tecnologias-chave na forma de projetos abertos, por exemplo, o sistema de gerenciamento de banco de dados distribuído YDB, capaz de processar milhões de solicitações por segundo, bem como a biblioteca de aprendizado de máquina CatBoost, que o Yandex usa na Pesquisa e em outros Serviços.

Finalmente para aqueles interessados ​​em saber mais sobre issoObserve que o Userver é atualmente suportado para Ubuntu, Debian, Fedora, Arch, Gentoo, sistemas macOS, x86, x86_64, AArch64, arquiteturas Arm, compiladores GCC 8+ e Clang 9+, padrões C++ 17, C+ +20, C ++23.

O código Userver é escrito em C++ e está aberto sob a licença Apache 2.0 e pode ser consultado no link a seguir


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.