Evolution du backend as a service: la seconde venue du scorocode

Bonjour, Habr.

Nous rompons le silence depuis longtemps et annonçons la sortie de la deuxième version de Scorocode.
Ce n'est même pas une évolution, mais la naissance d'un nouveau service.

Année de travail, Docker, Kubernetes, Yandex.Cloud, etc.

Attention à la question «Pourquoi y a-t-il un hub Go ici?», Je réponds - tous les services Scorocode sont écrits en Golang , c'est la langue que nous utilisons comme langue principale dans la pile technologique.

Je demande des détails sous chat.

Contexte historique


Scorocode v1 a été lancé à l'été 2016, a recueilli environ 20000 inscriptions en 3 mois, pendant 2,5 ans, il s'agissait d'un outil gratuit pour notre public, utilisé pour déployer des clouds privés sur lesquels 8 systèmes de différents niveaux ont été développés pendant cette période: depuis le service taxi jusqu'au système de gestion de la production.


Dans la première version, il y avait des services auto-écrits pour travailler avec NoSQL MongoDB DBMS, son propre analyseur de requêtes de base de données, des services qui fournissaient l'exécution de code JavaScript sur le serveur, et tout cela était un seul ensemble dans le cloud.


Les principaux inconvénients de la plateforme v1:


  1. Les ressources ont toutes fouillé entre les applications, et il était impossible d'obtenir une ressource garantie, ce qui à notre époque semble déjà au moins étrange.
  2. Il n'y avait aucun mécanisme pour lancer un serveur WEB de nœud à part entière, seul le lancement unique de scripts avec un temps d'exécution limité était possible.
  3. Il s'est avéré que MongoDB n'est pas nécessaire pour la plupart de nos clients NoSQL; à la place, tout le monde a demandé MySQL / PostgreSQL relationnel.
  4. Le coût du tarif de départ payé était élevé, environ 3 000 roubles / mois, et on ne comprenait pas ce que l'utilisateur payait.

À la fin de l'année dernière, notre équipe, ayant compris toutes les réalisations et les échecs, a décidé de s'impliquer dans le développement d'une nouvelle version, repensant fondamentalement l'architecture.


Quoi de neuf dans la v2?


La logique n'a pas changé. Il existe un compte dans lequel le propriétaire du compte d'utilisateur peut créer des applications. Mais la structure de l'application a changé. Il est désormais indépendant, hébergé sur des ressources dédiées (dans un cloud public - sur un serveur virtuel dédié).


En évaluant le travail accompli, nous comprenons que nous avons fait du chemin. Pour commencer, nous avons construit une architecture de base, dont les briques sont des services qui vivent dans des conteneurs Docker , qui, à leur tour, sont combinés en groupes dépendants, et ils vivent dans les pods gérés par Kubernetes. En général, tout est un classique du genre.


Des services prêts à l'emploi sont utilisés:



L'étape suivante consiste à écrire et à créer vos propres services.


Auth

Service d'autorisation d'application utilisant la méthode d' autorisation HTTP (type Bearer).


Courtier

Service d'emballage de vos propres services (désolé pour la tautologie). Aujourd'hui, il se présente sous la forme d'un serveur de nœuds, dans lequel vous pouvez déployer soit votre application complète avec des codes sources, soit un assemblage de nœuds prêt à l'emploi (plus à ce sujet dans la description de scorocode-cli). Nous développons le service dans le sens de la possibilité d'emballer à la fois des services prêts à l'emploi à partir de DTR et des services auto-écrits. Nous faisons bien sûr les premières expériences sur des services écrits en golang.


DBAPI

Un service qui fournit le fonctionnement de l'API RESTful avec toutes les tables de base de données PostgreSQL.
Autrement dit, dès que vous créez une table dans la base de données, toutes les opérations CRUD deviennent disponibles via l'API.


Websockets

Lors de la connexion de clients via le protocole WebSocket, il identifie les clients, après quoi des messages nommés ou diffusés peuvent être envoyés à partir de l'API du serveur. De plus, nous développerons le service vers la mise en mémoire tampon et la livraison garantie des messages.


FS

Travaillez avec les dossiers et fichiers du stockage d'application.


POUSSER

Envoi de notifications push. Les certificats Android / iOS sont liés dans votre compte.


Utilitaire de console scorocode-cli


2 ans d'utilisateurs travaillant avec la première version nous ont appris que peu importe la beauté des outils présentés sur le portail dans le compte personnel de l'utilisateur, après une période de "chouchoutage", le développeur veut revenir à son environnement familier - à son ordinateur local. Par conséquent, nous ne pourrions pas nous passer d'un utilitaire de console.


Aujourd'hui scorocode-cli (binaire sc-cli) fournit au développeur les fonctions suivantes:


aller chercher

Connexion à l'application dans le cloud, autorisation, sauvegarde de la configuration dans le dossier .cli.


init

Obtenir le référentiel et déployer l'application de base, puis créer et enregistrer dans le cloud. L'application de base en est encore une, comment mettre la main sur - nous en écrirons quelques autres, de différents types.


tirer

Synchronisez les fichiers de projet locaux avec le cloud.


pousser

Enregistrez les fichiers de projet locaux dans le cloud.


regdb

Enregistrez une base de données.


journaux

Obtention des journaux du service.


pont

Transférez les ports locaux vers le cloud pour tous les services. Par exemple, après avoir démarré le pont, vous pouvez connecter n'importe quel client au PostgreSQL nuageux en tant que client local.


servir

Lancement local de l'application. Utilisé pour le débogage local.


Les problèmes


Il y avait beaucoup de problèmes sur la route. Et il y en a encore beaucoup. Fondamentalement, ils surviennent à la jonction des produits open source. Parfois, des actions élémentaires entraînaient des fouilles hebdomadaires et, par conséquent, une demande d'extraction vers le référentiel de produits. Il est difficile de tout mettre dans un seul article. J'espère que j'écrirai plus sur des problèmes et des solutions particuliers.


Plans de développement


Tout d'abord, nous écrirons des services. Beaucoup de services. Mais nous ne les rédigerons pas de manière abstraite, mais à la demande de nos clients. Nous développerons également des modèles d'application afin que les utilisateurs écrivent moins de code pour connecter de nouvelles fonctionnalités.


À propos des affaires


Nous avons changé notre orientation des utilisateurs privés vers le segment de marché B2B. Et nous avons changé la base - maintenant nous sommes dans Yandex.Cloud . Plus d'informations à ce sujet seront les articles de notre produit Korbut . C'est précisément pour cette raison que la version d'essai est apparue dans la nouvelle version du cloud public - 1 mois, après quoi nous aimerions comprendre si l'utilisateur s'est désintéressé de nous ou s'il est prêt à payer pour le service (le coût de la configuration de base de l'application est de 990 roubles / mois).


À propos des tarifs


Nous avons maintenant une tarification absolument transparente. L'utilisateur voit les ressources allouées à son application IaaS, dont le coût nous fait simplement une marge en pourcentage. Le pourcentage est flottant, selon le volume consommé. Cela nous a donné la transparence tarifaire et la possibilité, après le lancement de la place de marché Yandex.Cloud, de déployer des clouds privés avec tarification pour les utilisateurs du compte Yandex.Cloud.


Et oui, on fait attention. Étant donné que nous donnons des ressources allouées à chaque application, le pool d'applications pour la période d'essai est petit, une centaine environ. Tout d'abord, nous avons envoyé une invitation à nos utilisateurs à partir de l'ancienne version, mais nous continuons à accepter les demandes de connexion à la période d'essai sur la page scorocode.ru


Épilogue


Je suis très reconnaissant envers notre équipe, qui n'a pas perdu courage même dans les situations les plus bloquées. Au fait, à propos de la commande:


  • Anya Korbut - Chef de produit
  • Zhenya Khramtsov - architecte, développeur go
  • Levan Kiknadze - architecte, développeur go
  • Roma Gayazov - développeur js / frontend
  • Tagir Khalilov - DevOps
  • Dasha Golubeva - Analyste des systèmes

Et, bien sûr, un grand merci à l'équipe Yandex.Cloud pour sa rapidité, son soutien et sa participation aux problèmes émergents.


Merci d'avoir lu jusqu'au bout. J'ai tout.

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


All Articles