
Hace casi cuatro años comenzamos a diseñar un sistema de correo distribuido completamente nuevo, Mailion, destinado a las comunicaciones corporativas. Nuestra solución está construida sobre una arquitectura de microservicios Cloud Native, capaz de manejar más de 1,000,000 de usuarios simultáneamente y estará lista para cubrir el 100% de las necesidades de grandes corporaciones.
A lo largo del trabajo en Mailion, el equipo ha crecido varias veces y actualmente casi 70 desarrolladores están involucrados en el producto. Hemos recorrido un largo camino desde la idea y los primeros prototipos hasta la etapa de pilotaje de la versión comercial. Es hora de contar a Habr sobre el producto que estamos creando, cómo está diseñado y cómo funciona nuestro sistema de correo, qué tecnologías utilizamos y por qué nuestra solución representa el futuro de las comunicaciones corporativas. ¡Vamos!
¡Hola, Habr! Mi nombre es Anton Gerasimov, dirijo el departamento de desarrollo en el centro de desarrollo de Moscú de la compañía . Hoy queremos presentar Mailion: un sistema de correo corporativo ruso completamente nuevo que se convertirá en una alternativa digna a las populares soluciones extranjeras. Mailion tiene una alta capacidad de carga, capacidades de escalabilidad y resistencia sin precedentes, y también requiere una atención mínima por parte de los administradores de sistemas.
Nuestra solución se encuentra actualmente en fase beta, pero muy pronto, según nuestro plan, para finales de 2020, pasará al estado de implementación piloto del producto comercial.
En su mayor parte, este artículo contiene información general: explicar un producto de software complejo en una sola publicación es simplemente imposible. Planeo hacer una serie de artículos para hablar sobre tecnologías clave. Mientras tanto, para su conveniencia, propongo el siguiente contenido:
¿Qué es un sistema de correo corporativo?
La respuesta simple y obvia a esta pregunta es una herramienta para el correo electrónico y el calendario. Pero, como se sabe, el diablo está en los detalles.
Así que estamos creando un correo de nueva generación con funciones avanzadas de planificación de calendarios, orientado al segmento corporativo y a grandes empresas. Nos dirigimos a trabajar con grandes estructuras comerciales y gubernamentales, donde puede haber desde 30,000 hasta varios cientos de miles de puestos de trabajo.
La base de nuestro sistema se basa en el principio de solución de plataforma. Partimos de la concepción de Comunicaciones Unificadas y ofrecemos una herramienta única para trabajar con correo electrónico, calendario y documentos dentro de un mismo sistema, con la posibilidad de ampliar la funcionalidad de la solución mediante la conexión de módulos y componentes adicionales. Las extensiones, por cierto, pueden ser desarrolladas no solo por nosotros, sino también por nuestros socios. Para este propósito, se publicará un conjunto de herramientas bastante amplio de SDK.
¿A quién y para qué le hace falta otro correo?
Las grandes empresas han creado una tendencia interesante: las organizaciones sienten la necesidad de funciones de colaboración. No se trata solo de la interacción directa entre empleados mediante el reenvío de algo, sino de un acceso compartido a bandejas de entrada de correo y roles, la posibilidad de trabajar con grandes grupos de participantes y la existencia de diversas funciones corporativas.
Una función corporativa típica es el mecanismo de recuperación de correos, que es muy demandado en grandes empresas, pero que prácticamente no se utiliza ni en el segmento B2C ni en pequeñas empresas. La razón es que entre pequeños grupos de usuarios, la probabilidad de necesidad de esta función es bastante baja, y el costo del error es mucho menor. Además, implementar esta función fuera de un sistema de correo corporativo es simplemente imposible: incluso en Gmail no existe la recuperación de correos en la forma en que los usuarios de Exchange están acostumbrados. La raíz del problema radica en la estructura de los protocolos de correo de la década de 1980.
Realizamos decenas de grupos focales, encuestamos a cientos de usuarios y dedicamos miles de horas-hombre para identificar los escenarios típicos de uso del correo electrónico. Esto nos permitió estudiar detenidamente las necesidades de nuestros potenciales usuarios y las características de sus procesos empresariales. Con base en los datos obtenidos, decidimos desarrollar una arquitectura que permita escalar al volumen de carga necesario cuando sea necesario. En nuestra concepción, no hay límite alguno, sin embargo, en este momento entendemos cómo garantizar el funcionamiento de empresas que emplean a cientos de miles de usuarios.
¿Qué hay bajo el capó?
Nuestro producto incluye una solución de correo electrónico, una herramienta de planificación de calendario, una libreta de direcciones, así como una vista interactiva de documentos basada en nuestra propia solución MойОфис para la gestión de documentos.
Dado que estamos hablando de una solución de nivel corporativo, una parte integral del correo empresarial es también un sistema de búsqueda completo. Nuestra solución es capaz de realizar una búsqueda morfológica integral a través de todos los componentes. Además, todo el sistema de correo está basado en un almacenamiento interno, que también está optimizado para el trabajo colaborativo.
¿Cuáles son las diferencias entre los sistemas de correo MойОфис?
El lector de Хабра que ya ha tenido experiencia con las soluciones de MойОфис sabe que en los productos comerciales está presente 'MойОфис Почта'. Y surge la pregunta: ¿cuáles son sus diferencias con el sistema de correo corporativo Mailion, en el que trabajó mi equipo?
En MойОфис decidimos que para satisfacer las necesidades de empresas de diferentes tamaños era necesario crear dos sistemas de correo de clase corporativa. El producto 'MойОфис Почта' está destinado a organizaciones donde el número de usuarios está en miles o decenas de miles. Para estructuras más grandes, es más adecuado implementar Mailion, el nuevo producto de MойОфис, que está construido sobre una arquitectura de microservicios Cloud Native, y posee capacidades sin precedentes de escalabilidad y resiliencia.
Al seleccionar productos, los clientes deben determinar de antemano la estrategia de desarrollo futuro de su empresa. Para cualquier organización, la implementación de un sistema de correo electrónico es un trabajo de proyecto complejo que no admite un reemplazo rápido de una solución por otra. Por lo tanto, es necesario considerar de antemano la carga máxima, los criterios de resistencia a fallos y la recuperación automática, así como el factor de distribución geográfica.
Los dos sistemas de correo electrónico de МойОфис son fundamentalmente diferentes. Se construyen utilizando diferentes pilas tecnológicas, y las herramientas para cada sistema se eligen de acuerdo con los objetivos y tareas del segmento en el que se desplegará el sistema de correo. Tenemos una visión común del producto sobre lo que debe estar presente en los sistemas de correo, así como una sincronización en los enfoques de diseño. Pero son dos productos dirigidos a diferentes audiencias de usuarios.
¿Qué desafíos enfrentan los desarrolladores?
A partir de aquí, solo hablaré sobre el nuevo sistema de correo corporativo Mailion.
Hemos llevado a cabo una investigación exhaustiva y hemos analizado las ventajas y desventajas de las soluciones de correo electrónico existentes. La experiencia acumulada de nuestros especialistas, quienes en el pasado tuvieron relación directa con la creación de sistemas de alta carga, nos permitió identificar rápidamente el principal punto crítico de cualquier producto conocido: el rendimiento de las operaciones de entrada y salida de disco (IO).
Se puede decir que la tarea de acelerar las operaciones de IO se ha convertido en el principal desafío que enfrentamos. Era necesario concentrarse en resolver nuestras tareas específicas y comenzamos a crear y desarrollar nuestro propio sistema de almacenamiento de datos binarios. Este enfoque tiene una clara componente económica: no solo necesitamos almacenar datos, sino también realizar una cantidad considerable de operaciones de entrada y salida de disco.
Esta solución no fue fácil de alcanzar. Estudiamos numerosos productos de clase empresarial dirigidos al almacenamiento de información y no logramos encontrar nada adecuado que cumpliera con nuestros requisitos. Necesitamos no solo almacenar datos, sino también trabajar con ellos constantemente, no de manera monopólica con acceso de un solo usuario, sino permitiendo la colaboración de varios miles de usuarios.
Así que determinamos que el criterio corporativo más prioritario para nosotros es trabajar con grandes volúmenes de datos.
Fiabilidad
Y esto no es tanto una cuestión de almacenamiento, sino un desafío para procesar y acceder rápidamente a esa información. Es necesario asegurar altos niveles de fiabilidad: el tiempo de operación continua de toda la solución debe estar en un nivel del 99,9%. Al mismo tiempo, el sistema de correo debe ser autónomo en la toma de decisiones correctas sobre el manejo de fallos. Solo así se puede lograr la ausencia de interrupciones que puedan paralizar los procesos comerciales de cualquier empresa.
Tolerancia a fallos
Hemos desarrollado un conjunto de medidas que se aplican a cada componente y hemos seleccionado enfoques para garantizar la tolerancia a fallos. En particular, el sistema de correo corporativo aplica un trabajo de quórum con los datos, la redundancia de servicios y el control de la ausencia de sus estados, así como mecanismos propios de enrutamiento y soporte del quórum basado en consenso.
Un criterio de alta tolerancia a fallos es la existencia de mecanismos de autoevaluación en cada componente. Mailion analiza constantemente si una función se está ejecutando correctamente o no, y si un bloque está funcionando adecuadamente. Esto es uno de los medios de auto-recuperación del sistema en caso de fallo. La información no debe perderse, la solución debe llegar a un estado consistente en última instancia.
Hay que entender que no es posible prever todos los eventos probables de la vida; la física no puede ser engañada. Pero seguimos enfoques de diseño que nos permiten, con un alto grado de confianza, asegurar un manejo correcto de los incidentes de ciertos patrones. También contamos con un gran grupo de pruebas que constantemente intenta romper algo en el producto. Y a veces lo logran. En ese caso, se registra un incidente que estudiamos en detalle y, en base a él, creamos un nuevo mecanismo para eliminar este tipo de problemas.
Cómo reacciona el sistema ante incidentes
El mercado a menudo pregunta: ¿qué sucederá con el sistema si de repente pierde la conexión con uno de sus nodos? Esta inquietud es especialmente relevante si se planea implementar una solución geográficamente distribuida.
Al diseñar una instalación de este tipo, es necesario tener en cuenta las necesidades del cliente y su conjunto de criterios de confiabilidad. Es erróneo suponer que la conexión a la red de datos es igual en todas partes. En sistemas corporativos, es crucial considerar incluso la velocidad de transmisión de la señal a través de fibra óptica.
Si el cliente tiene altas exigencias de confiabilidad, recomendaremos la instalación en varios centros de datos, que estarán interconectados por líneas dedicadas.
Sin embargo, no se puede descartar el escenario de un corte total de electricidad en uno de los nodos del sistema de correos. En este caso, se detendrá el trabajo con los datos maestros de ese segmento, pero las otras partes funcionarán como si nada hubiera ocurrido. El sistema notificará a los administradores sobre la pérdida del nodo, y el personal deberá llevar a cabo una serie de acciones pertinentes.
Además, nuestro sistema de correos se puede configurar de tal manera que haya redundancia dentro del centro de datos. Este enfoque garantizará su operatividad ante la pérdida de varios nodos dentro del CPD, y la pérdida de uno de los nodos no será notada, excepto, por supuesto, por el sistema de monitoreo. Ante la ocurrencia de tal evento, la carga simplemente se redistribuye. Por lo tanto, al diseñar el sistema de correos, es importante considerar un margen: cuántos y qué componentes se podrán "perder" en caso de un incidente.
Autonomía
No existen sistemas absolutamente confiables, y las fallas pueden ocurrir de una forma u otra. Por lo tanto, al diseñar un sistema de correo electrónico, es importante garantizar la capacidad de localización rápida de fallas, lo que permitirá resolverlas dentro de un período SLA determinado. Además, las fallas deben ser corregidas automáticamente por el sistema, minimizando así la intervención de administradores de sistemas y servicios de operación.
Facilidad de operación
Por supuesto, los grandes sistemas no pueden evitar la atención de empleados altamente calificados. Sin embargo, uno de los aspectos que consideramos al diseñar es que el sistema debe ser fácilmente administrable y no requiere competencias únicas.
Eficiencia económica
Sin duda, trabajar con cualquier sistema corporativo de este tipo requiere capacitación para los empleados, ya que estamos hablando de escalas realmente grandes. Por lo tanto, al desarrollar nuestro producto, nos centramos en reducir el costo total de propiedad del sistema. Para cualquier negocio, es importante monitorear la efectividad del gasto y tratar de evitar inyecciones interminables de dinero en los gastos operativos.
Descentralización
Para garantizar los principios que mencioné anteriormente, es necesario que el sistema sea completamente distribuido; un enfoque centralizado siempre está limitado por las condiciones del hardware utilizado.
Por supuesto, se puede comprar un servidor grande y tratar de instalar todas las aplicaciones y servicios en él. Pero cuanto más grande sea el sistema, más compleja será toda la estructura, y la confiabilidad de dicho sistema disminuye constantemente; un solo servidor significa un único punto de fallo. Cuanto más centralizamos el funcionamiento, más dependemos de ese punto central.
Requisitos del sistema
Cuando hablamos de sistemas de correo electrónico corporativos complejos, debemos entender que no existe un concepto como "configuración mínima para funcionamiento". En la base de cualquier gran implementación siempre hay un trabajo de diseño serio. Este permite alinear las necesidades específicas de un negocio con la configuración óptima del sistema de correo electrónico.
Un sistema de correo electrónico corporativo es una herramienta flexible que se puede personalizar según una gran cantidad de parámetros. Realizamos pruebas de carga según nuestra propia metodología, que permite simular la carga basándose en el análisis de decenas de criterios básicos y varios cientos de criterios posibles.
Se puede decir que, al preparar el proyecto de implementación, los cálculos mostrarán la intensidad de trabajo de los usuarios en los procesos comerciales existentes de la organización. Al mismo tiempo, se analizan muchos parámetros de entrada y, dependiendo de la carga posible, se toma una decisión sobre el volumen necesario de recursos computacionales, desde una computadora hasta una sala de máquinas completa.
Por lo tanto, hablar de configuraciones mínimas no es del todo correcto. En particular, tenemos un banco de pruebas que funciona en una sola máquina. Pero entendemos que el trabajo en el segmento corporativo requiere la instalación en decenas e incluso cientos de máquinas virtuales.
Stack tecnológico
Al crear productos, prestamos especial atención a la limpieza del código bajo licencia. En Mi Oficina, se establecen y aplican altos estándares de calidad que requieren que desarrollemos los productos por completo, con la mínima implicación de código externo.
Una gran parte del código de Mailion es desarrollo propio, un código cuyas derechos pertenecen completamente a nosotros y que podemos modificar y mejorar según sea necesario. La mayor parte del código de nuestro sistema de correo está escrita en Go (Golang). Además de Go, usamos C++ y Java Script ES6 para la parte web.
El 5% restante son lo que se llaman "componentes pesados", como bases de datos. Entre ellos se encuentran RethinkDB, ArangoDB y Redis. También destaco otra tecnología clave, gRPC, un sistema de llamadas a procedimientos remotos que se utiliza como un único mecanismo para la interacción a través de API, lo cual es una parte importante.
¿De qué está compuesto el producto?
Un sistema de correo electrónico corporativo no es un "servidor en un vacío". Nuestro producto incluye alrededor de 70 componentes y 45 servicios que se encargan del mantenimiento del sistema de correo. Todos estos elementos están escritos "desde cero" y son desarrollo propio de Mi Oficina.
La parte más notable del sistema es el complejo de servidores, que garantiza el funcionamiento del almacenamiento, sistemas de correo, calendario y búsqueda, así como del cliente web. Estamos desarrollando algunas aplicaciones personalizadas y planeamos ofrecer a nuestros usuarios nuevos "clientes ligeros" basados en la tecnología de nuestro cliente web en el momento del lanzamiento comercial.
Compatibilidad con sistemas de correo
Mailion funciona con protocolos estándar. Para comenzar a utilizar nuestra solución, solo es necesario configurar las aplicaciones de cliente y luego trabajar con ellas en un entorno familiar. Por ejemplo, se puede utilizar la aplicación cliente "MoyOfis Correo" que forma parte del producto.
Además, para la comodidad de nuestros usuarios, hemos creado un complemento especial que asegura una transición sin problemas desde Exchange. Con él, los usuarios podrán seguir utilizando MS Outlook al cambiar de servidor de correo; ni siquiera notarán que ha habido cambios en su interacción habitual con las herramientas de comunicación. Este complemento permite migrar suavemente a los usuarios desde el antiguo sistema de correo sin interrumpir el trabajo de toda la organización. Esto es especialmente importante si necesita cambiar las herramientas de trabajo de cientos de miles de usuarios.
Facilidad de administración
Una característica de nuestro sistema de correo corporativo es la necesidad de una participación mínima de los administradores. Durante el diseño, nos esforzamos por encontrar un equilibrio entre la personalización posible y la complejidad de la gestión. Para lograr esto, fue necesario llevar a cabo numerosas investigaciones sobre los patrones de comportamiento de los administradores de sistemas corporativos complejos.
En nuestro equipo trabajan, como ya mencioné, profesionales altamente calificados, cada uno de los cuales tiene una sólida experiencia en administración. Por lo tanto, al desarrollar el sistema, nos esforzamos por trasladar su experiencia a las necesidades de los usuarios al gestionar un producto complejo. En otras palabras, al conocer los problemas potenciales, anticipamos las soluciones desde la etapa de diseño de la arquitectura.
Por ejemplo,
- se asegura la aislamiento de los componentes del sistema en contenedores, incluidos los de infraestructura; esto nos ayuda a aumentar el nivel de seguridad, a configurar accesos de manera flexible entre los componentes, así como a añadir rápidamente nuevos sistemas y plataformas demandadas por el negocio a la lista de soportados;
- un enfoque único para el desarrollo y la implementación, un formato único de configuración para todos los componentes fomenta un trabajo más claro y eficaz y reduce los gastos en soporte;
- un instalador propio del sistema, basado en herramientas de implementación familiares, permite gestionar la instalación de manera centralizada, flexible y comprensible;
una arquitectura de microservicios con una clara separación de las responsabilidades de la lógica de negocio entre los servicios ayuda a entender el esquema de funcionamiento del sistema y a proporcionar soporte de manera más eficaz; - la parte de infraestructura del sistema se basa en soluciones familiares, utilizando las mejores prácticas, y también permite realizar integraciones con sistemas ya existentes en la empresa, lo que simplifica la puesta en marcha del sistema dentro de la compañía;
- en el almacenamiento se prevé un sistema basado en inteligencia artificial, que puede identificar potenciales fallos por sí mismo y gestionar el equipo.
Diseño moderno
Se requirieron miles de horas-hombre para crear el diseño del producto. Antes de iniciar el desarrollo, el objetivo era hacer que la interfaz fuera moderna — ligera e intuitiva. Esto es complicado cuando se diseña un sistema corporativo que por defecto debe incluir una serie de funciones específicas.
Por supuesto, el diseño no puede "tallarse en piedra" o ser aprobado con firma y sello — es una herramienta viva, que evoluciona y mejora constantemente. En cuatro años, hemos transformado el diseño varias veces, pero no ha habido un cambio radical en la ideología. El principio clave en la construcción de toda la línea de productos corporativos es la creación de un sistema de diseño universal.
Al diseñar la interfaz del sistema de correo electrónico corporativo, prestamos especial atención a tres direcciones clave: adaptabilidad, sistematización y la capacidad de ajustarse al estilo corporativo del cliente.
Adaptabilidad
La característica del diseño de la interfaz del sistema de correo corporativo Mailion es la capacidad de mostrarse en dispositivos con pantallas de cualquier tamaño. Todos los componentes visuales están cuidadosamente diseñados, se escalan correctamente al trabajar en dispositivos móviles y son ideales incluso para ser utilizados con los dedos en pantallas táctiles. Además, al cambiar el tamaño de la ventana de la aplicación, se transforma el diseño en columnas: el tamaño de las columnas se ajusta proporcionalmente, en estricta conformidad con los postulados de la concepción de aplicaciones web ricas.
Sistema
La base del diseño del sistema de correo corporativo Mailion se fundamenta en un enfoque sistemático. Estamos desarrollando esta área desde principios de 2017, cuando hablar sobre sistemas de diseño no era tan popular como lo es hoy. Un sistema de diseño es un conjunto de reglas y herramientas para la ejecución visual y técnica, que refleja la filosofía del producto y se desarrolla constantemente. Lo implementamos para facilitar la comunicación entre desarrollo y diseño.
Configuración de la identidad corporativa
Nuestro diseño es un "camaleón", capaz de adaptarse a cualquier estilo corporativo del cliente. Los colores de todos los elementos de la interfaz están definidos a través de variables. De esta manera, al cambiar el conjunto base de varios colores, se puede reconfigurar automáticamente todas las aplicaciones.
Las fuentes también están definidas a través de variables: la interfaz puede utilizar la fuente corporativa de la empresa cliente, si así lo permite la guía de marca del cliente. Al mismo tiempo, diferentes fuentes pueden tener diferentes tamaños de letras, y lo tenemos en cuenta. Por ejemplo, PT Sans en tamaño 16 parece notablemente más pequeño que Roboto en el mismo tamaño 16. Por lo tanto, ajustamos el tamaño de los bloques de texto según las características de la fuente específica.
Dedicaremos artículos separados a la estructura de nuestra biblioteca de colores y a las particularidades del trabajo con fuentes.
Aplicaciones móviles
Una parte integral de cualquier sistema de correo moderno son las aplicaciones móviles: los usuarios deben poder trabajar desde cualquier lugar y en cualquier momento.
Actualmente, estamos formando solo la concepción de aplicaciones móviles corporativas, que deben tener en cuenta las diferencias en la funcionalidad de los sistemas de correo de MójOfis y ofrecer diferentes enfoques para el uso del correo electrónico y los sistemas de calendario en las corporaciones.
Panel de medios inteligente
Nuestros grupos de enfoque mostraron que los usuarios consideran que las interfaces de los sistemas de correo electrónico tradicionales son complicadas. Los encuestados mencionaron que es especialmente difícil trabajar con eventos en el calendario y con archivos adjuntos. Nos esforzamos por lograr una interfaz receptiva y aumentar el rendimiento, para que el uso de nuestro producto sea placentero.
El panel de medios, una nueva herramienta para acelerar la colaboración, sistematiza toda la información sobre la correspondencia y proporciona acceso instantáneo a la lista de participantes en la conversación, enlaces y versiones de documentos que hayan sido enviados alguna vez.
Esta herramienta es útil en situaciones donde los usuarios deben trabajar con extensos hilos de cientos de mensajes. A menudo es necesario encontrar un documento o una imagen que solo se encuentre en uno de ellos. El panel de medios crea un listado de todos los elementos de la cadena de correos y los presenta en un solo lugar, facilitando así la búsqueda del objeto necesario.
Localización
La necesidad de un sistema de correo corporativo no es solo un asunto de los usuarios rusos. МойОфис está llevando a cabo una política consistente para ingresar en mercados extranjeros, por lo que se presta gran atención a la localización de productos.
En nuestro producto, la necesidad de localización a idiomas extranjeros fue considerada desde el inicio, en el nivel básico del sistema. De hecho, agregar nuevos idiomas no representa un gran problema para nosotros; es una tarea comprensible que sabemos cómo resolver.
Actualmente, los usuarios tienen disponibles los idiomas ruso e inglés. En las próximas versiones, añadiremos al sistema de correo corporativo el soporte para los idiomas en los que operan los productos de МойОфис: francés, español, portugués y otros. En cierto sentido, nos resulta más fácil que a nuestros colegas de otras divisiones, ya que para los sistemas de correo y calendario solo es necesario tener en cuenta el alfabeto y las particularidades del trabajo con fechas y horas; afortunadamente, no tenemos fórmulas como en un editor de hojas de cálculo.
¡Sí, estamos contratando!
El desarrollo de nuestro producto ha requerido varios cientos de años-hombre. Y a pesar de que me encantaría, no podría hablar de todo en un solo artículo. Sin embargo, espero que esta publicación sirva como un punto de partida para conocer nuestro producto. Como mencioné anteriormente, planeo contar más detalladamente sobre la solución en sí, sus características, y nuestros enfoques de desarrollo en el futuro.
Sin la más mínima modestia, diré también que hoy en día hay muy pocas empresas en el mundo que desarrollen sistemas de correo como este. Es realmente una tarea de ingeniería compleja, que requiere tanto una comprensión profunda de las necesidades de los clientes corporativos como un análisis minucioso de los procesos empresariales de grandes organizaciones, las tendencias actuales en diseño y desarrollo, así como una cantidad considerable de especialistas competentes. Nuestro sistema de correo evoluciona cada día.
Justo ahora, tenemos abiertas casi vacantes en desarrollo. Ven a trabajar con nosotros si deseas crear un producto que pueda transformar la percepción del mundo corporativo sobre el correo electrónico.
Fuente: habr.com
