Evolución del backend como servicio: la segunda venida de Scorocode

Hola Habr

Rompemos el silencio durante mucho tiempo y anunciamos el lanzamiento de la segunda versión de Scorocode.
Esto ni siquiera es evolución, sino el nacimiento de un nuevo servicio.

Año de trabajo, Docker, Kubernetes, Yandex.Cloud, etc.

Respondo la pregunta "¿Por qué hay un centro Go aquí?", Respondo: todos los servicios de Scorocode están escritos en Golang , este es el lenguaje que usamos en la pila de tecnología.

Pido detalles bajo cat.

Antecedentes historicos


Scorocode v1 se lanzó en el verano de 2016, recopiló alrededor de 20,000 registros en 3 meses, durante 2.5 años fue una herramienta gratuita para nuestra audiencia pública, se utilizó para implementar nubes privadas en las que se desarrollaron 8 sistemas de diferentes niveles durante este tiempo: desde el servicio taxi al sistema de gestión de producción.


La primera versión tenía servicios escritos para trabajar con NoSQL MongoDB DBMS, su propio analizador de consultas de bases de datos, servicios que proporcionaban ejecución de código JavaScript en el servidor, y todo esto era un todo en la nube.


Las principales desventajas de la plataforma v1:


  1. Todos los recursos rebuscaron entre aplicaciones, y era imposible obtener un recurso garantizado, que en nuestro tiempo ya parece al menos extraño.
  2. No había ningún mecanismo para lanzar un servidor WEB de nodo completo, solo era posible el lanzamiento de un script de una sola vez con un tiempo de ejecución limitado.
  3. Resultó que MongoDB no es necesario para la mayoría de nuestros clientes NoSQL; en cambio, todos pidieron MySQL / PostgreSQL relacional.
  4. El costo de la tarifa inicial pagada era alta, alrededor de 3.000 rublos / mes, y no se entendía lo que el usuario estaba pagando.

A finales del año pasado, nuestro equipo, después de comprender todos los logros y fracasos, decidió involucrarse en el desarrollo de una nueva versión, rediseñando fundamentalmente la arquitectura.


¿Qué hay de nuevo en v2?


La lógica no ha cambiado. Hay una cuenta en la que el propietario de la cuenta de usuario puede crear aplicaciones. Pero la estructura de la aplicación ha cambiado. Ahora es independiente, alojado en recursos dedicados (en una nube pública, en un servidor virtual dedicado).


Al evaluar el trabajo realizado, entendemos que hemos recorrido un largo camino. Para empezar, construimos una arquitectura básica, cuyos ladrillos son servicios que viven en contenedores acoplables , que, a su vez, se combinan en grupos dependientes y viven en las unidades que gestiona Kubernetes. En general, todo es un clásico del género.


De los servicios confeccionados se utilizan:



El siguiente paso es escribir y crear sus propios servicios.


Autenticación

Servicio de autorización de aplicaciones que utiliza el método de Autorización HTTP (tipo Bearer).


Corredor

Servicio para empacar sus propios servicios (perdón por la tautología). Hoy se presenta en forma de un servidor de nodo, en el que puede implementar su aplicación completa con códigos fuente o un conjunto de nodo ya listo (más información sobre esto en la descripción de scorocode-cli). Estamos desarrollando el servicio en la dirección de la posibilidad de empacar tanto los servicios confeccionados de DTR como los servicios autoescritos . Hacemos los primeros experimentos, por supuesto, en servicios escritos en golang.


DBAPI

Un servicio que proporciona la operación RESTful API con todas las tablas de base de datos PostgreSQL.
Es decir, tan pronto como cree una tabla en la base de datos, todas las operaciones CRUD estarán disponibles a través de la API.


Websockets

Al conectar clientes a través del protocolo WebSocket, identifica a los clientes, después de lo cual se pueden enviar mensajes con nombre o de difusión desde la API del servidor. Además, desarrollaremos el servicio hacia el almacenamiento en búfer y la entrega garantizada de mensajes.


FS

Trabaja con carpetas y archivos del almacenamiento de la aplicación.


EMPUJAR

Envío de notificaciones push. Los certificados de Android / iOS están vinculados en su cuenta.


Utilidad de consola scorocode-cli


Dos años de usuarios que trabajan con la primera versión nos enseñaron que no importa cuán hermosas herramientas se presenten en el portal en la cuenta personal del usuario, después de un período de "mimos", el desarrollador quiere volver a su entorno familiar, a su computadora local. Por lo tanto, no podríamos prescindir de una utilidad de consola.


Hoy, scorocode-cli (sc-cli binary) proporciona al desarrollador las siguientes funciones:


buscar

Conexión a la aplicación en la nube, autorización, guardar la configuración en la carpeta .cli.


init

Obtener el repositorio e implementar la aplicación base, seguido de compilar y guardar en la nube. La aplicación básica sigue siendo una, cómo conseguirlo: escribiremos algunos más, de diferentes tipos.


tirar

Sincronice archivos de proyectos locales con la nube.


empujar

Guarde archivos de proyectos locales en la nube.


regdb

Registre una base de datos.


registros

Obteniendo registros del servicio.


puente

Reenviar puertos locales a la nube para todos los servicios. Por ejemplo, después de iniciar el puente, puede conectar cualquier cliente al nublado PostgreSQL como local.


servir

Lanzamiento local de la aplicación. Utilizado para la depuración local.


Los problemas


Hubo muchos problemas en el camino. Y aún hay muchos de ellos. Básicamente, surgen en la unión de productos de código abierto. Algunas veces las acciones elementales dieron como resultado una excavación semanal y, como resultado, una solicitud de extracción al repositorio del producto. Es difícil meter todo en un solo artículo. Espero escribir más sobre problemas y soluciones particulares.


Planes de desarrollo


En primer lugar, escribiremos servicios. Muchos servicios Pero no los escribiremos de manera abstracta, sino a pedido de nuestros clientes. También desarrollaremos plantillas de aplicaciones para que los usuarios escriban menos código para conectar nuevas funciones.


Sobre negocios


Cambiamos nuestro enfoque de usuarios privados al segmento de mercado B2B. Y cambiamos la base, ahora estamos en Yandex.Cloud . Más sobre esto serán los artículos de nuestro producto Korbut . Es precisamente por esto que la versión de prueba apareció en la nueva versión de la nube pública: 1 mes, después del cual nos gustaría saber si el usuario ha perdido interés en nosotros o si está listo para pagar el servicio (el costo de la configuración básica de la aplicación es de 990 rublos / mes).


Sobre tarifas


Ahora tenemos aranceles absolutamente transparentes. El usuario ve los recursos asignados para su aplicación IaaS, cuyo costo simplemente hacemos un margen en porcentaje. El porcentaje es flotante, dependiendo del volumen consumido. Esto nos dio transparencia en los precios y la capacidad de implementar nubes privadas con precios en la cuenta personal de Yandex.Cloud después de lanzar el mercado Yandex.Cloud.


Y sí, tenemos cuidado. Teniendo en cuenta que proporcionamos recursos asignados para cada aplicación, el grupo de aplicaciones para el período de prueba es pequeño, aproximadamente cien. En primer lugar, enviamos una invitación a nuestros usuarios desde la versión anterior, pero seguimos aceptando solicitudes para la conexión al período de prueba en scorocode.ru


Epílogo


Estoy muy agradecido con nuestro equipo, que no se desanimó incluso en las situaciones de mayor estancamiento. Por cierto, sobre el comando:


  • Anya Korbut - Gerente de Producto
  • Zhenya Khramtsov - arquitecto, desarrollador desarrollador
  • Levan Kiknadze - arquitecto, desarrollador desarrollador
  • Roma Gayazov - desarrollador js / frontend
  • Tagir Khalilov - DevOps
  • Dasha Golubeva - Analista de Sistemas

Y, por supuesto, muchas gracias al equipo de Yandex.Cloud por su rapidez, apoyo y participación en temas emergentes.


Gracias por leer hasta el final. Lo tengo todo

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


All Articles