Evolução do back-end como serviço: a segunda vinda do scorocode

Olá, Habr.

Quebramos o silêncio por um longo tempo e anunciamos o lançamento da segunda versão do Scorocode.
Isso nem é evolução, mas o nascimento de um novo serviço.

Ano de trabalho, Docker, Kubernetes, Yandex.Cloud, etc.

Advertindo a pergunta "Por que existe um hub Go aqui?", Respondo - todos os serviços Scorocode estão escritos em Golang , esse é o idioma que usamos na pilha de tecnologia.

Peço detalhes sob gato.

Antecedentes históricos


O Scorocode v1 foi lançado no verão de 2016, coletou cerca de 20.000 registros em 3 meses; durante 2,5 anos, foi uma ferramenta gratuita para nosso público, usada para implantar nuvens privadas nas quais 8 sistemas de diferentes níveis foram desenvolvidos durante esse período: a partir do serviço táxi para o sistema de gerenciamento de produção.


Na primeira versão, havia serviços auto-escritos para trabalhar com o NoSQL MongoDB DBMS, seu próprio analisador de consultas ao banco de dados, serviços que forneciam execução de código JavaScript no servidor e tudo isso era um todo na nuvem.


As principais desvantagens da plataforma v1:


  1. Todos os recursos vasculharam os aplicativos, e era impossível obter um recurso garantido, o que em nosso tempo já parece pelo menos estranho.
  2. Não havia mecanismo para iniciar um servidor WEB de nó completo; apenas era possível o lançamento de script único com um tempo de execução limitado.
  3. Como se viu, o MongoDB não é necessário para a maioria dos nossos clientes NoSQL; todos pediram MySQL / PostgreSQL relacional.
  4. O custo da tarifa paga inicial era alto, cerca de 3.000 rublos / mês, e não havia como entender o que o usuário estava pagando.

No final do ano passado, nossa equipe, tendo compreendido todas as conquistas e falhas, decidiu se envolver no desenvolvimento de uma nova versão, redesenhando fundamentalmente a arquitetura.


O que há de novo na v2?


A lógica não mudou. Há uma conta na qual o proprietário da conta do usuário pode criar aplicativos. Mas a estrutura do aplicativo mudou. Agora ele é independente, hospedado em recursos dedicados (em uma nuvem pública - em um servidor virtual dedicado).


Avaliando o trabalho realizado, entendemos que percorremos o longo caminho. Para iniciantes, construímos uma arquitetura básica, cujos tijolos são serviços que residem em contêineres de encaixe , que, por sua vez, são combinados em grupos dependentes e residem nos pods que o Kubernetes gerencia. Em geral, tudo é um clássico do gênero.


Dos serviços prontos são utilizados:



O próximo passo é escrever e criar seus próprios serviços.


Auth

Serviço de autorização de aplicativo usando o método de Autorização HTTP (tipo Portador).


Corretor

Serviço para embalar seus próprios serviços (desculpe pela tautologia). Hoje, ele é apresentado na forma de um servidor de nó, no qual você pode implantar seu aplicativo completo com códigos-fonte ou um conjunto de nós já pronto (mais sobre isso na descrição de scorocode-cli). Estamos desenvolvendo o serviço na direção da possibilidade de empacotar os serviços prontos do DTR e os serviços auto-escritos. É claro que fazemos os primeiros experimentos em serviços escritos em golang.


DBAPI

Um serviço que fornece operação da API RESTful com todas as tabelas do banco de dados PostgreSQL.
Ou seja, assim que você cria uma tabela no banco de dados, todas as operações CRUD ficam disponíveis por meio da API.


Websockets

Ao conectar clientes através do protocolo WebSocket, ele identifica clientes, após o qual as mensagens nomeadas ou de difusão podem ser enviadas a partir da API do servidor. Além disso, desenvolveremos o serviço para armazenamento em buffer e entrega garantida de mensagens.


FS

Trabalhe com pastas e arquivos do armazenamento de aplicativos.


PUSH

Enviando notificações por push. Os certificados Android / iOS estão vinculados à sua conta.


Utilitário de console scorocode-cli


Dois anos de usuários que trabalham com a primeira versão nos ensinaram que, independentemente de quão bonitas ferramentas sejam apresentadas no portal na conta pessoal do usuário, após um período de "mimos", o desenvolvedor deseja retornar ao seu ambiente familiar - ao computador local. Portanto, não poderíamos ficar sem um utilitário de console.


Hoje, o scorocode-cli (binário sc-cli) fornece ao desenvolvedor as seguintes funções:


buscar

Conectando-se ao aplicativo na nuvem, autorização, salvando a configuração na pasta .cli.


init

Obtendo o repositório e implantando o aplicativo base, seguido pela criação e salvamento na nuvem. A aplicação básica ainda é uma, como colocar as mãos em prática - escreveremos mais algumas, de diferentes tipos.


puxar

Sincronize os arquivos do projeto local com a nuvem.


empurrar

Salve os arquivos do projeto local na nuvem.


regdb

Registre um banco de dados.


logs

Obtendo logs do serviço.


ponte

Encaminhe portas locais para a nuvem para todos os serviços. Por exemplo, após iniciar a ponte, você pode conectar qualquer cliente ao PostgreSQL nublado como local.


servir

Lançamento local do aplicativo. Usado para depuração local.


Os problemas


Havia muitos problemas na estrada. E ainda existem muitos deles. Basicamente, eles surgem na junção de produtos de código aberto. Às vezes, ações elementares resultavam em escavação semanal e, como resultado, em solicitação de recebimento para o repositório do produto. É difícil colocar tudo em um artigo. Espero escrever mais sobre problemas e soluções específicas.


Planos de desenvolvimento


Primeiro de tudo, vamos escrever serviços. Muitos serviços. Mas não os escreveremos de maneira abstrata, mas a pedido de nossos clientes. Também desenvolveremos modelos de aplicativos para que os usuários escrevam menos código para conectar novos recursos.


Sobre negócios


Mudamos nosso foco de usuários privados para o segmento de mercado B2B. E mudamos a base - agora estamos no Yandex.Cloud . Mais sobre isso serão os artigos de nosso produto Korbut . É justamente por isso que a versão de avaliação apareceu na nova versão da nuvem pública - 1 mês, após o qual gostaríamos de entender se o usuário perdeu o interesse em nós ou está pronto para pagar pelo serviço (o custo da configuração básica do aplicativo é de 990 rublos / mês).


Sobre tarifas


Agora temos tarifas absolutamente transparentes. O usuário vê os recursos alocados para seu aplicativo IaaS, cujo custo é simplesmente feito uma margem em porcentagem. A porcentagem é flutuante, dependendo do volume consumido. Isso nos deu transparência tarifária e a capacidade, após o lançamento do mercado Yandex.Cloud, de implantar nuvens privadas com tarifação para usuários na conta Yandex.Cloud.


E sim, somos cuidadosos. Considerando que atribuímos recursos alocados para cada aplicativo, o pool de aplicativos para o período de avaliação é pequeno, cerca de cem. Antes de tudo, enviamos um convite para nossos usuários a partir da versão antiga, mas continuamos aceitando pedidos de conexão com o período de avaliação no scorocode.ru


Epílogo


Sou muito grato à nossa equipe, que não desanimava mesmo nas situações mais difíceis. A propósito, sobre o comando:


  • Anya Korbut - Gerente de produtos
  • Zhenya Khramtsov - arquiteto, desenvolvedor go
  • Levan Kiknadze - arquiteto, desenvolvedor go
  • Roma Gayazov - desenvolvedor js / frontend
  • Tagir Khalilov - DevOps
  • Dasha Golubeva - Analista de Sistemas

E, claro, muito obrigado à equipe do Yandex.Cloud por sua presteza, apoio e participação em questões emergentes.


Obrigado por ler até o fim. Eu tenho tudo.

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


All Articles