Compartimos la experiencia de modernizar la arquitectura del portal web, lo que hizo posible que el producto sea conveniente, estable y tolerante a fallas: 隆el tr谩fico aument贸 de 350 mil a 7 millones de usuarios! La historia ser谩 煤til para aquellos que planean expandir su producto. Primero, veremos qu茅 factores pueden interferir con el trabajo y el desarrollo del portal web:
- Obsolescencia El enfoque de usabilidad, la adaptaci贸n a diferentes dispositivos, la apariencia y la estructura elementales dejan de satisfacer las necesidades de la audiencia con el tiempo.
- Obsolescencia tecnol贸gica. Los est谩ndares web y la tecnolog铆a est谩n en constante evoluci贸n. Los cambios afectan tanto a las herramientas del desarrollador (por ejemplo, marcos, bases de datos, otro software) como a los fundamentos fundamentales de la web. De lo relativamente reciente: una transici贸n masiva de http a https y el abandono del soporte para DNS heredado.
- Errores y bloqueos. Los desarrolladores pueden hacer frente imperfectamente a su tarea y permitir fallas. Como resultado de esto, pueden ocurrir violaciones del sitio, comenzando con el hecho de que los botones no funcionan la primera vez, hasta que los sistemas fallan por completo.
CasoNos contact贸 un cliente cuyo portal web necesitaba un mayor desarrollo. En cierto punto, se alcanz贸 un techo de 350 mil visitantes 煤nicos cada mes. Esto parec铆a insuficiente: el proyecto claramente ten铆a perspectivas y ten铆amos que averiguar qu茅 era lo que imped铆a ampliar a煤n m谩s el recurso.
AuditoriaResult贸 que el viejo motor Bitrix no estaba adaptado a cargas y escalas. Cada uno de los componentes del sistema se entrecruz贸 estrechamente y dependi贸 el uno del otro. La correcci贸n constante de errores era una tarea tan insoportable que propusimos una arquitectura de microservicio flexible y comprensible. En ellos, cada componente es lo suficientemente independiente como para que los errores en su interior no "da帽en" los elementos restantes del sistema.
Bitrix sigui贸 siendo la base de la arquitectura; al menos, la autorizaci贸n est谩 vinculada a ella, pero donde fue posible y prometi贸 una gran eficiencia, transferimos la funcionalidad a los microservicios. Se convirtieron en la piedra angular del proyecto.
La nueva arquitectura combinada nos ha proporcionado un funcionamiento estable y m谩s r谩pido de los sistemas y una ausencia casi completa de errores en algunos m贸dulos. Tambi茅n sirvi贸 de base para el trabajo efectivo de los vendedores. Gracias a la arquitectura mejorada, los especialistas en promoci贸n lograron aumentar la asistencia del recurso en 20 veces.
MicroserviciosEn microservicios independientes, distinguimos m贸dulos como un cargador de archivos, b煤squeda y noticias. Adem谩s de estas cosas f谩ciles de usar y obvias, se implementaron muchos otros elementos funcionales en forma de microservicios:
- Descarga, almacenamiento y gesti贸n de datos de proyectos de c贸digo abierto;
- Creaci贸n din谩mica de canales RSS;
- Creaci贸n din谩mica de un sistema de bloques, disposici贸n de materiales de cualquier servicio en bloques estructurales;
- Agregar datos adicionales a los materiales de servicio;
- Servicio de soporte t茅cnico;
- Un solo cat谩logo de varios datos.
Adem谩s de todo lo anterior, hemos creado muchos microservicios para un trabajo conveniente con el panel de administraci贸n.

Cada bloque funcional del sitio se ha convertido en una unidad bastante aut贸noma. Se utiliza un proceso dedicado para cargar y renderizar, minimizando la intersecci贸n con otros servicios.
De acuerdo, cuando un usuario realiza un pago, no querr谩 esperar mucho tiempo para cargar el script responsable de reproducir el video que no necesita en otra parte de la p谩gina. De hecho, esto es lo que sucede en los sistemas monol铆ticos: las funcionalidades secundarias a veces interfieren con el trabajo de componentes realmente importantes.
Dimos el primer paso y facilitamos la vida de los usuarios y desarrolladores, lanzando m谩s de 20 nuevos servicios por a帽o. Como resultado:
- Resolvimos el problema de la escala.
- Implementado un proceso de desarrollo m谩s eficiente por equipos distribuidos.
- Configure la gesti贸n din谩mica de recursos para un funcionamiento r谩pido y sin problemas del sistema.
Actualizaci贸n de pila de tecnolog铆aParalelamente, actualizamos la pila de tecnolog铆a. Si el portal se bas贸 originalmente en php 5.6 y MySQL 5.6, en el transcurso de la mejora del motor, lo cambiamos a php 7.0 y MySQL 5.7. Implement茅 el marco Yii2, proporcion茅 el almacenamiento en cach茅 de memcache.
Cola de tareasPara paralelizar mejor las tareas, transferimos los trabajadores web (controladores internos) a la cola RabbitMQ. Optimiza la secuencia de eventos de activaci贸n, lo que reduce la carga en el sistema. Trabajar con el sitio se ha vuelto mucho m谩s r谩pido y m谩s c贸modo.
Integraci贸n continuaUn proceso de desarrollo transparente y manejable es compatible con GitLab CI. Este es un desarrollo continuo sin interrupciones que deja a los programadores y evaluadores m谩s tiempo con preguntas importantes en lugar de parchear agujeros.
Para minimizar los errores, introdujimos bucles de desarrollo adicionales. La cadena consta de varios bucles de prueba de aplicaciones e infraestructura: pre-lanzamiento, donde se llevan a cabo las 煤ltimas pruebas de ensamblaje (pre-prod), combate (prod), varios bucles de prueba para probar varias compilaciones a la vez, as铆 como un bucle para desarrolladores.
Sistema de montajeEn la etapa inicial, las compilaciones se crean a partir de las fuentes del proyecto. En lugar de un conjunto dispares de clases, estilos y controladores, se utilizan entidades combinadas, cada una en el shell de un archivo ejecutable. Solo las construcciones necesarias se colocan en el ensamblaje para realizar eventos en la p谩gina. Esto adem谩s proporciona flexibilidad y velocidad del sitio.
Monitoreo de erroresGitLab CI proporciona funciones avanzadas para la validaci贸n de c贸digo y pruebas automatizadas. A la m谩s m铆nima discrepancia de ensamblajes con los par谩metros dados, el sistema notifica a los desarrolladores y no permite iniciar el proceso posterior de implementaci贸n de componentes antes de corregir los errores. Adem谩s, instalamos Sentry, una herramienta completa de monitoreo de errores.
Optimizaci贸n de procesos.Para mantener el sistema en un estado de alto rendimiento, hemos optimizado constantemente la infraestructura y los procesos comerciales. Las bibliotecas compartidas y los prototipos de servicios se convirtieron en la base para la r谩pida implementaci贸n de nuevas funciones: tomamos plantillas preparadas y en poco tiempo obtenemos un producto que funciona.
Monitoreo y operaci贸nTodos los procesos est谩n a la vista. Al monitorear el estado de cada nodo, proporcionamos Zabbix, un sistema de seguimiento integral. Tuvimos la oportunidad de analizar el n煤cleo de la estructura del proyecto y verlo de manera compacta.
Tambi茅n conectamos la plataforma Grafana, que convierte los datos secos en un tablero visual para la comodidad de los empleados del cliente.
Estabilizaci贸n y refactorizaci贸n.Seg煤n sea necesario, reestructuramos el sistema: el c贸digo se simplifica y se vuelve conciso. Al mismo tiempo, siempre hay espacio para crecer, ya que el dopaje regular de los sistemas acelera el sitio. Como resultado, el recurso se ha vuelto m谩s amigable para los motores de b煤squeda y los usuarios.
La nueva arquitectura es la base del crecimiento.Al comienzo del trabajo, el recurso ten铆a un potencial modesto para la promoci贸n y no era lo suficientemente conveniente para los clientes, lo que imped铆a los procesos comerciales de la empresa. Para mejorar el proceso de interacci贸n del usuario con el sitio, actualizamos casi por completo la arquitectura del portal y su estructura, creamos un mecanismo flexible que se integra con una gran cantidad de servicios y aplicaciones, gracias a nuestra propia API. Muchos servicios han estado funcionando de manera 贸ptima durante m谩s de un a帽o, sin requerir intervenci贸n; el n煤mero de errores en su trabajo ha disminuido a casi cero.
El nuevo sitio es una herramienta poderosa para el desarrollo de negocios, con el potencial para una mayor expansi贸n. Utilizando la arquitectura actualizada de la aplicaci贸n web, los vendedores del proyecto pudieron implementar su gama de actividades promocionales y aumentar el tr谩fico de 350 mil visitantes 煤nicos por mes a m谩s de 7 millones. Adem谩s, despu茅s de un aumento m煤ltiple en la audiencia, el portal contin煤a funcionando de manera estable.