
Hola Somos "Hosting Technologies" y hace 5 a帽os lanzamos
VDSina , el primer hosting vds creado espec铆ficamente para desarrolladores. Nos esforzamos para que sea conveniente, como DigitalOcean, pero con soporte ruso, m茅todos de pago y servidores en Rusia. Pero DigitalOcean no es solo fiabilidad y precio, tambi茅n es un servicio.
El software de ISPsystem result贸 ser una cuerda que nos at贸 las manos en el camino hacia un servicio genial. Hace tres a帽os, utilizamos la facturaci贸n de Billmanager y el panel de control del servidor VMmanager y r谩pidamente nos dimos cuenta de que es casi imposible proporcionar un buen servicio sin nuestro propio panel.
C贸mo el sistema ISP mat贸 la usabilidad
BichosNo pudimos solucionar el error nosotros mismos, cada vez que ten铆amos que escribir en el soporte de otra persona y esperar. La soluci贸n a cualquier problema requer铆a la respuesta de una empresa externa.
El soporte del sistema ISP respondi贸 normalmente, pero las correcciones solo llegaron a trav茅s de algunas versiones, y no siempre y no todas. A veces se corrigieron errores cr铆ticos durante varias semanas. Tuvimos que tranquilizar a los clientes, disculparnos y esperar a que el sistema ISP solucione el error.
Amenaza de tiempo de inactividadLas actualizaciones podr铆an dar lugar a tiempos de inactividad impredecibles que provocaron nuevos errores.
Cada actualizaci贸n era una loter铆a: era necesario cubrir la facturaci贸n y hacer sacrificios a los dioses de las actualizaciones; un par de veces la actualizaci贸n caus贸 un tiempo de inactividad de 10 a 15 minutos. En ese momento, nuestros administradores se estaban volviendo grises ante nuestros ojos: nunca supimos cu谩nto tiempo durar铆a el tiempo de inactividad y no pod铆amos predecir cu谩ndo ISPsystem decidi贸 lanzar una nueva actualizaci贸n.
En la quinta generaci贸n, Billmanager mejor贸, pero para obtener acceso a las funciones necesarias, tuve que instalar una versi贸n beta, que ya se actualizaba cada semana. Si algo se romp铆a, ten铆a que dar acceso a desarrolladores extranjeros para que corrigieran algo.
Interfaz de panel inconvenienteTodo estaba dividido en diferentes paneles y controlado desde diferentes lugares. Por ejemplo, los clientes pagaron a trav茅s de Billmanager, y tuvieron que reiniciar o reinstalar VDS en VMManager. Nuestros empleados tambi茅n tuvieron que cambiar entre ventanas para ayudar al cliente, verificar la carga en su servidor o ver qu茅 sistema operativo usa.
Tal interfaz lleva tiempo, tanto la nuestra como la de los clientes. Sobre cualquier conveniencia, como DigitalOcean, no hay duda en tal situaci贸n.
Ciclos de vida cortos con actualizaciones frecuentes de APIEscribimos nuestros propios complementos, por ejemplo, un complemento con m茅todos de pago adicionales que no est谩n en VMManager.
En los 煤ltimos a帽os, VMManager tuvo un ciclo de vida relativamente corto, y en las nuevas versiones los nombres de variables o funciones en la API podr铆an cambiar arbitrariamente, esto rompi贸 nuestros complementos. El soporte para versiones anteriores se minimiz贸 r谩pidamente y tuvo que actualizarse.
No puedes modificarM谩s precisamente, pero extremadamente ineficiente. Las restricciones de licencia no le permiten realizar cambios en la fuente, solo puede escribir complementos. El m谩ximo de complementos son algunos elementos del men煤, un asistente paso a paso. El sistema ISP est谩 afilado para mayor versatilidad, y necesit谩bamos soluciones especializadas.
Entonces la decisi贸n de escribir su panel madur贸. Fijamos metas:
- Responda r谩pidamente a errores, errores y pueda solucionarlos usted mismo, sin hacer que el cliente espere.
- Modifique libremente la interfaz para los procesos de trabajo y las necesidades del cliente.
- Mejore la usabilidad con un dise帽o limpio y comprensible.
Y comenzaron el desarrollo.
Nueva arquitectura de paneles
Tenemos un equipo de desarrollo autosuficiente, por lo que escribimos el panel nosotros mismos.
El trabajo principal fue realizado por tres ingenieros: el director t茅cnico Sergey ide贸 la arquitectura y escribi贸 al agente del servidor, Alexey hizo la facturaci贸n, y nuestra interfaz Artysh reuni贸 la interfaz.
Paso 1. Agente del servidor
Un agente de servidor es un servidor web de Python que administra la biblioteca
libvirt , que a su vez administra el
hipervisor Qemu-kvm .
El agente gestiona todos los servicios en el servidor: crear, detener, desinstalar vds, instalar sistemas operativos, cambiar configuraciones, etc. a trav茅s de la biblioteca libvirt. En el momento de la publicaci贸n, se trata de m谩s de cuarenta funciones diferentes, que complementamos seg煤n la tarea y las necesidades del cliente.
En principio, libvirt se pod铆a administrar directamente desde la facturaci贸n, pero requer铆a demasiado c贸digo adicional y decidimos distribuir estas funciones entre el agente y la facturaci贸n; la facturaci贸n simplemente hace solicitudes al agente a trav茅s de la API JSON.
Lo primero que hicimos fue el agente, porque no requer铆a ninguna interfaz y pod铆a probarse directamente desde la consola del servidor.
Lo que nos dio el agente del servidor: apareci贸 una capa que simplifica la vida de todos: la facturaci贸n no necesita enviar un mont贸n de comandos, sino solo hacer una solicitud. Y el agente har谩 todo lo que necesite: por ejemplo, asignar espacio en disco y RAM.
Paso 2. Facturaci贸n
Para nuestro desarrollador, Alex, este no fue el primer panel de control: Alex estuvo en hosting durante mucho tiempo, por lo que generalmente entendi贸 lo que el cliente necesitaba y lo que necesitaba el proveedor de alojamiento.
Llamamos a la facturaci贸n entre nosotros un "panel de control": contiene no solo dinero y servicios, sino tambi茅n su administraci贸n, atenci贸n al cliente y mucho m谩s.
Para cambiar del software ISPSystem, era necesario retener completamente la funcionalidad anterior para los clientes, transferir todas las acciones de los usuarios financieros de la facturaci贸n anterior a la nueva, as铆 como todos los servicios y comunicaciones entre ellos. Estudiamos lo que hay en el producto actual, luego las decisiones de los competidores, principalmente DO y Vultr. Analizamos las desventajas y ventajas, recopilamos comentarios de personas que trabajaban con productos antiguos de ISPsystem.
En la nueva facturaci贸n, se utilizaron dos pilas: PHP cl谩sico, MySQL (y en el futuro se planea cambiar a PostgreSQL), Yii2 como marco en el back-end y VueJS en el frente. Las pilas funcionan independientemente entre s铆, desarrolladas por diferentes personas, y se comunican utilizando la API JSON. Para el desarrollo, entonces y ahora usamos
PHPStorm y
WebStorm de JetBrains y los amamos mucho (chicos, 隆hola!)
El panel est谩 dise帽ado de acuerdo con el principio modular: m贸dulos del sistema de pago, m贸dulo de registro de dominio o, por ejemplo, m贸dulo de certificado SSL. Puede agregar f谩cilmente una nueva funci贸n o eliminar la anterior. La base para la expansi贸n se coloc贸 arquitect贸nicamente, incluso en la direcci贸n opuesta, "al hierro".
Lo que obtuvimos : un panel de control sobre el cual tenemos control total. Ahora los errores se corrigen en horas, no en semanas, y se implementan nuevas funciones a petici贸n de los clientes, y no a petici贸n de ISPSystem.
Paso 3. Interfaz

La interfaz es una creaci贸n de nuestro equipo.
Primero, observamos lo que suceder铆a si hici茅ramos un complemento sobre la API del sistema ISP sin cambiar nada dram谩ticamente en la interfaz. Result贸 regular y decidimos hacer todo desde cero.
Cre铆amos que lo principal era hacer que la interfaz fuera l贸gica, con un dise帽o limpio y minimalista, y luego obtendr铆amos un panel hermoso. La disposici贸n de los elementos se discuti贸 en Megaplan, y la interfaz que los usuarios ven en el panel de control ahora nacer谩 gradualmente.
El primero apareci贸 en el dise帽o de la p谩gina de facturaci贸n, porque ya realizamos complementos de pago para el sistema ISP.
FrontendDecidieron hacer del panel una aplicaci贸n de SPA, sin recursos y con una carga de datos r谩pida. Nuestro front-end Artysh decidi贸 escribirlo en Vue, en ese momento Vue acababa de aparecer. Asumimos que el marco se desarrollar谩 din谩micamente, como React, despu茅s de alg煤n tiempo la comunidad Vue crecer谩 y aparecer谩 un mar de bibliotecas. Lo instalamos en Vue y no nos arrepentimos, ahora agregar al frente nuevas caracter铆sticas que ya se han programado en el backend lleva poco tiempo. Le informaremos m谩s sobre los paneles frontend en un art铆culo separado.
Comunicaci贸n del frontend con el backendEl frontend estaba atado al backend a trav茅s de pushies. Tuve que sudar y escribir mi propio controlador, pero ahora la informaci贸n en la p谩gina se actualiza casi instant谩neamente.
Lo que sucedi贸: la interfaz del panel se ha vuelto m谩s f谩cil. Lo adaptamos, y la carga r谩pida permite que se use incluso desde tel茅fonos m贸viles en los 煤ltimos minutos antes del despegue, sin instalar una aplicaci贸n separada para trabajar con el panel.
Paso 4. Prueba y esquema de migraci贸n
Cuando todo comenz贸 y pasaron las primeras pruebas, surgi贸 la cuesti贸n de la migraci贸n. En primer lugar, configuramos la facturaci贸n y comenzamos a probar su trabajo con el agente del servidor.
Luego escribieron un script simple que transfiere la base de datos de la facturaci贸n anterior a la nueva.
Tuve que probar y verificar dos veces literalmente todo, ya que los datos se vertieron en una nueva base de datos de las tres antiguas: Billmanager, VMmanager y IPmanager manager. Quiz谩s la migraci贸n de prueba es lo m谩s dif铆cil que encontramos en el proceso de desarrollo de un nuevo panel.
Despu茅s de volver a verificar, cubrimos la facturaci贸n anterior. La migraci贸n final de datos fue un momento muy preocupante, pero, gracias a Dios, se complet贸 en unos minutos y sin problemas notables. Hubo errores menores que arreglamos en una semana. El tiempo principal se tom贸 probando lo que sucedi贸.
Luego enviamos cartas a los clientes con la direcci贸n del nuevo panel y la facturaci贸n e hicimos una redirecci贸n.
En pocas palabras: 隆EST脕 VIVO!Feliz
Desde las primeras horas de nuestro software, sentimos todas las delicias de la transici贸n. El c贸digo era completamente nuestro y con una arquitectura conveniente, y la interfaz era limpia y l贸gica.
La primera revisi贸n despu茅s de lanzar un nuevo panelComenzamos el proceso de transici贸n en diciembre, en la v铆spera del A帽o Nuevo de 2017, cuando hubo la menor carga para facilitar la transici贸n a los clientes: casi nadie trabaja en la v铆spera de las vacaciones.
Lo principal que obtuvimos durante la transici贸n a nuestro sistema (adem谩s de la confiabilidad y conveniencia generales) es la capacidad de agregar r谩pidamente funcionalidades para los clientes clave: ser su cara y no su trasero.
Que sigue
Estamos creciendo, la cantidad de datos, clientes, datos de clientes est谩 creciendo. Un servidor memcached y dos gestores de colas con diferentes tareas tuvieron que agregarse al backend. Hay cach茅 y colas en el front-end.
Por supuesto, todav铆a tuvimos aventuras a medida que desarrollamos y complicamos el producto, por ejemplo, cuando agregamos HighLoad.
En el pr贸ximo art铆culo, le diremos c贸mo se lanz贸 la tarifa Hi-CPU: sobre hardware, software, qu茅 tareas resolvimos y qu茅 hicimos.

Suscr铆base a nuestro desarrollador de Instagram
