Primeiro olhar: como funciona o novo sistema de correio corporativo Mailion do MyOffice

Primeiro olhar: como funciona o novo sistema de correio corporativo Mailion do MyOffice

Há quase quatro anos, começamos a projetar um sistema de e-mail distribuído fundamentalmente novo, o Mailion, projetado para comunicações corporativas. Nossa solução é construída sobre arquitetura de microsserviços Cloud Native, é capaz de trabalhar com mais de 1 de usuários simultaneamente e estará pronta para cobrir 000% das necessidades de grandes corporações.

Durante o trabalho no Mailion, a equipe cresceu várias vezes e agora quase 70 desenvolvedores estão envolvidos no produto. Percorremos um longo caminho desde a ideia e os primeiros protótipos até à fase de pilotagem de uma versão comercial. É hora de contar a Habr que tipo de produto estamos criando, como nosso sistema de correio está estruturado e funciona, que pilha de tecnologia usamos e por que nossa solução é o futuro das comunicações corporativas. Vamos!

Habr, olá! Meu nome é Anton Gerasimov, chefio o departamento de desenvolvimento do centro de desenvolvimento da empresa em Moscou Meu escritório. Hoje gostaríamos de apresentar o Mailion, um sistema de correio russo de classe empresarial fundamentalmente novo que se tornará uma alternativa válida às soluções estrangeiras populares. Mailion tem alta capacidade de carga, escalabilidade e tolerância a falhas sem precedentes e requer atenção mínima dos administradores de sistema.

Atualmente nosso desenvolvimento está em fase beta, mas muito em breve, de acordo com nosso plano, até o final de 2020, se tornará uma implementação piloto de um produto comercial.

Na maior parte, este artigo contém informações gerais - é simplesmente impossível falar sobre um produto de software complexo em uma publicação. Pretendo fazer uma série de artigos falando sobre tecnologias-chave. Enquanto isso, para sua comodidade, ofereço o seguinte conteúdo:

O que é um sistema de e-mail corporativo?

A resposta simples e óbvia a esta pergunta é uma ferramenta de e-mail e calendário. Mas o diabo, como sabemos, está nos detalhes.

Assim, estamos a criar uma nova geração de correio com funções avançadas de agendamento, que se destina ao segmento empresarial e grandes empresas. Nosso objetivo é trabalhar com grandes estruturas comerciais e governamentais, que podem ter de 30 mil a várias centenas de milhares de empregos.

Nosso sistema é baseado no princípio de uma solução de plataforma. Baseamo-nos no conceito de Comunicações Unificadas e oferecemos uma ferramenta única para trabalhar com correio, calendário e documentos dentro de um sistema, com a capacidade de aumentar a funcionalidade da solução conectando módulos e componentes adicionais. As extensões, aliás, podem ser desenvolvidas não só por nós, mas também pelos nossos parceiros. Para este propósito, um kit de ferramentas SDK bastante amplo será publicado.

Quem precisa de outro e-mail e por quê?

As grandes empresas formaram uma tendência interessante - as empresas estão a sentir necessidade de funções de colaboração. Não se trata apenas de interação direta entre funcionários através do envio de algo, mas de acesso compartilhado a caixas de correio e contas de role-playing, capacidade de trabalhar com grandes grupos de participantes e presença de diversas funções corporativas.

Uma função corporativa típica é um mecanismo de recuperação de cartas, extremamente popular em grandes empresas, mas praticamente não utilizado nem no segmento B2C nem em pequenas empresas. O fato é que, entre pequenos grupos de usuários, a probabilidade de tal necessidade surgir é muito pequena e o custo de um erro é muito menor. Além disso, é simplesmente impossível implementar esta função fora do sistema de correio corporativo - mesmo o correio do Google não lembra as cartas no formato a que os usuários do Exchange estão acostumados. A raiz do problema está no design dos protocolos de correio da década de 80 do século passado.

Conduzimos dezenas de grupos focais, pesquisamos centenas de usuários e gastamos vários milhares de horas de trabalho identificando cenários típicos de uso de e-mail. Isto permitiu-nos estudar cuidadosamente as necessidades dos nossos potenciais utilizadores e as características dos seus processos de negócio. Com base nos dados obtidos, decidimos desenvolver uma arquitetura que nos permitisse escalar para o volume de carga necessário, se necessário. Na nossa opinião, não há limite algum, mas neste momento sabemos como garantir o trabalho de empresas que empregam várias centenas de milhares de utilizadores.

O que está escondido sob o capô

Primeiro olhar: como funciona o novo sistema de correio corporativo Mailion do MyOffice

Nosso produto inclui uma solução de e-mail, uma ferramenta de planejamento de calendário, um catálogo de endereços, bem como visualização interativa de documentos baseada em nossa solução MyOffice para trabalhar com documentos.

Como estamos falando de uma solução de nível corporativo, um sistema de pesquisa completo também é parte integrante do correio corporativo. Nossa solução é capaz de realizar pesquisas morfológicas de ponta a ponta em todos os componentes. Além disso, todo o sistema de correio é baseado em armazenamento próprio, que também é otimizado para colaboração.

Quais são as diferenças entre os sistemas de correio MyOffice?

Um leitor Habr que já tem experiência em trabalhar com soluções MyOffice sabe que os produtos comerciais incluem “MyOffice Mail”. E surge a pergunta - quais são suas diferenças em relação ao sistema de e-mail corporativo Mailion, no qual minha equipe trabalhou?

Nós do MyOffice decidimos que para atender às necessidades de empresas de diferentes portes é necessário criar dois sistemas de e-mail de classe empresarial. O produto MyOffice Mail destina-se a organizações nas quais o número de usuários chega a milhares ou várias dezenas de milhares. Para estruturas maiores, é mais aconselhável usar Mailion - o novo produto MyOffice, que é construído na arquitetura de microsserviços Cloud Native e possui capacidades de escalabilidade e tolerância a falhas sem precedentes.

Na hora de escolher os produtos, o cliente precisa decidir antecipadamente a estratégia para o futuro desenvolvimento de sua empresa. Para qualquer organização, implementar um sistema de e-mail é um projeto complexo que não envolve a substituição rápida de uma solução por outra. Portanto, a carga máxima possível, os critérios de tolerância a falhas e de autocorreção, bem como o fator de distribuição geográfica devem ser levados em consideração antecipadamente.

Os dois sistemas de e-mail MyOffice são fundamentalmente diferentes. Eles são construídos a partir de diferentes stacks tecnológicos, e as ferramentas de cada sistema são selecionadas de acordo com as metas e objetivos do segmento em que o sistema de correio será implantado. Temos uma visão comum de produto sobre o que deve estar presente nos sistemas de correio, bem como sincronização nas abordagens de design. Mas esses são dois produtos projetados para diferentes públicos de usuários.

Que desafios os desenvolvedores enfrentam?

Mais adiante no texto falarei apenas sobre o novo sistema de correio corporativo Mailion.

Conduzimos uma pesquisa completa e analisamos as vantagens e desvantagens das soluções de e-mail existentes. A experiência acumulada de nossos especialistas, que no passado estiveram diretamente envolvidos na criação de sistemas de alta carga, nos permitiu identificar rapidamente o principal ponto problemático de qualquer produto conhecido - o desempenho das operações de entrada e saída de disco (IO) .

Podemos dizer que a tarefa de acelerar as operações de IO tornou-se o principal desafio que enfrentámos. Foi necessário focar na solução de nossos problemas específicos e começamos a criar e desenvolver nosso próprio sistema de armazenamento de dados binários. Essa abordagem tem um componente econômico muito óbvio - precisamos não apenas armazenar dados, mas também realizar muitas operações de entrada e saída de disco.

Esta decisão não foi tomada levianamente. Estudamos muitos produtos de classe empresarial que visam armazenar informações e não encontramos nada pronto e adequado às nossas necessidades. Afinal, precisamos não só armazenar dados, mas também trabalhar constantemente com eles, e não de forma exclusiva com acesso a um usuário, mas garantir a possibilidade de colaboração entre várias dezenas de milhares de usuários.
Portanto, determinamos que o critério corporativo de maior prioridade para nós é trabalhar com grandes volumes de dados.

Confiança

Além disso, não se trata tanto de uma questão de armazenamento, mas sim de uma tarefa de processamento e acesso rápido a esta informação. É necessário garantir altos indicadores de confiabilidade - o tempo de operação contínua de toda a solução deve estar no nível de 99,9%. Ao mesmo tempo, o sistema de correio deve ser autónomo na tomada de decisões corretas sobre o processamento de recusas. Só assim podemos garantir a ausência de falhas que possam paralisar os processos de negócio de uma determinada empresa.

tolerância ao erro

Trabalhamos através de um conjunto de medidas que são aplicadas a cada componente e abordagens selecionadas para garantir a tolerância a falhas. Em particular, o sistema de correio corporativo utiliza processamento de quórum de dados, reserva de serviços e controle da ausência de seus estados, bem como mecanismos próprios de roteamento e suporte de quórum baseados em consenso.

Um critério para alta tolerância a falhas é a presença de mecanismos de autoverificação em cada componente. Mailion analisa constantemente se esta ou aquela função é executada corretamente ou incorretamente, se este ou aquele bloco funciona corretamente. Este é um dos meios de autocura do sistema em caso de falha. As informações não devem ser perdidas; a solução deve, em última análise, atingir um estado consistente.

Você deve entender que não é possível prever todos os eventos possíveis na vida - você não pode enganar a física. Mas aderimos a abordagens de design que nos permitem falar com um grau bastante alto de confiança sobre o tratamento correto de acidentes de determinados padrões. Também temos um grande grupo de testes que está sempre tentando quebrar alguma coisa no produto. E às vezes eles conseguem. Este facto desencadeia um incidente, que estudamos detalhadamente e, a partir dele, criamos um novo mecanismo para eliminar este tipo de problema.

Como o sistema reage a acidentes

O mercado muitas vezes faz a pergunta: o que acontecerá com o sistema se ele perder repentinamente a comunicação com um de seus nós? Esta solicitação é especialmente relevante se você planeja implementar uma solução distribuída geograficamente.

Ao projetar tal instalação, é necessário levar em consideração as necessidades do cliente e o seu conjunto de critérios de confiabilidade. É um erro acreditar que a ligação à rede de dados é a mesma em todo o lado. Em sistemas corporativos, é importante considerar até mesmo a velocidade do sinal através da fibra óptica.

Caso o cliente tenha altos requisitos de confiabilidade, recomendamos a instalação em diversos data centers, que serão conectados por linhas de comunicação dedicadas.
No entanto, não se pode descartar o cenário de corte total de energia num dos nós do sistema postal. Neste caso, o trabalho com os dados mestre deste segmento será pausado, mas as demais partes funcionarão como se nada tivesse acontecido. O sistema notificará os administradores de que um nó foi perdido e os funcionários serão solicitados a tomar as medidas adequadas.

Além disso, nosso sistema de correio pode ser configurado de forma que as reservas ocorram dentro do data center. Esta abordagem garantirá a operabilidade em caso de perda de vários nós dentro do data center, e ninguém notará a perda de um dos nós - exceto, é claro, o sistema de monitoramento. Quando tal evento ocorre, a carga é simplesmente redistribuída. Portanto, ao projetar um sistema de correio, é importante levar em consideração a margem - quantos e quais componentes podem ser “perdidos” em caso de acidente.

Autonomia

Não existem sistemas absolutamente confiáveis ​​e falhas, de uma forma ou de outra, podem acontecer. Portanto, ao projetar um sistema de correio, é importante garantir a capacidade de localizar rapidamente as falhas, o que permitirá que elas sejam eliminadas dentro de um determinado período de SLA. Além disso, as falhas devem ser corrigidas pelo sistema de forma independente, minimizando a intervenção dos administradores do sistema e dos serviços operacionais.

De facil operação

É claro que grandes sistemas não podem deixar de exigir a atenção de funcionários altamente qualificados. Mas um dos aspectos que consideramos ao projetar é que o sistema deve ser fácil de administrar e não exigir competências únicas.

Eficiência econômica

É claro que para trabalhar com qualquer um desses sistemas corporativos é necessário o treinamento dos funcionários - afinal, estamos falando de uma escala verdadeiramente enorme. Portanto, ao criar nosso produto, focamos na redução do custo total de propriedade do sistema. Para qualquer empresa, é importante monitorar a eficiência dos gastos e se esforçar para evitar gastar dinheiro incessantemente em despesas operacionais.

Descentralização

Para atingir os princípios de que falei anteriormente, o sistema deve ser completamente distribuído – uma abordagem centralizada é sempre limitada pelas condições de utilização do hardware.

Claro, você pode comprar um servidor grande e tentar instalar todos os aplicativos e serviços nele. Porém, quanto maior o sistema, mais complexo é todo o projeto, e a confiabilidade de tal sistema está diminuindo constantemente - afinal, um servidor significa um único ponto de falha. E quanto mais centralizamos o trabalho, mais dependemos desse ponto central.

Системные требования

Quando falamos de sistemas de e-mail corporativos complexos, precisamos entender que não existe “configuração mínima para operação”. A base de qualquer grande implementação é sempre um trabalho sério de design. Ele permite correlacionar as necessidades de um negócio específico e a configuração ideal do sistema de correio.

Um sistema de e-mail corporativo é uma ferramenta flexível que pode ser configurada de acordo com um grande número de parâmetros. Realizamos testes de carga com metodologia própria, o que nos permite simular a carga com base na análise de uma dezena de critérios básicos e várias centenas de critérios possíveis.

Podemos dizer que na elaboração de um projeto de implementação são os cálculos que vão mostrar a intensidade do trabalho do usuário nos processos de negócio existentes na organização. Nesse caso, muitos parâmetros de entrada são analisados ​​​​e, dependendo da carga possível, é tomada uma decisão sobre a quantidade necessária de potência computacional - de um computador para uma sala de informática inteira.

Portanto, falar sobre algumas configurações mínimas não é totalmente correto. Em particular, também temos um stand de demonstração que funciona em apenas uma máquina. Mas entendemos que trabalhar no segmento corporativo exige instalação em dezenas e até centenas de máquinas virtuais.

Pilha de tecnologia

Ao criar produtos, prestamos especial atenção à pureza licenciada do código. O MyOffice estabeleceu e opera padrões de alta qualidade, que exigem que desenvolvamos produtos de forma totalmente independente, com envolvimento mínimo de código externo.

Grande parte do código do Mailion é nosso, código sobre o qual possuímos todos os direitos e que podemos alterar e modificar conforme necessário. A maior parte do código do nosso sistema de e-mail é escrita internamente em Go (Golang). Além do Go, usamos C++ e também Java Script ES6 para a web part.

Os 5% restantes são os chamados “componentes pesados”, como bancos de dados. Isso inclui RethinkDB, ArangoDB e Redis. Dentre as principais tecnologias, destaco também o gRPC - um sistema de chamada de procedimento remoto, que é utilizado como mecanismo único de interação via API, esta é uma parte importante.

Em que consiste o produto?

Um sistema de e-mail corporativo não é um “servidor no vácuo”. Nosso produto inclui cerca de 70 componentes e 45 serviços que mantêm o sistema de correio. Todos esses elementos são escritos “do zero” e são desenvolvimento próprio do MyOffice.

A parte mais notável do sistema é o complexo de servidores, que fornece sistemas de armazenamento, correio, calendário e pesquisa, além de um cliente web. Também estamos desenvolvendo vários aplicativos de usuário e planejamos oferecer aos nossos usuários novos “thin clients” baseados em nossas tecnologias de cliente web no momento do lançamento comercial.

Compatibilidade com sistemas de correio

Mailion funciona usando protocolos padrão. Para começar a utilizar a nossa solução, basta configurar as aplicações clientes e continuar a trabalhar com elas no seu ambiente habitual. Por exemplo, você pode usar o aplicativo cliente incluído no produto MyOffice Mail.

Além disso, para conveniência de nossos usuários, criamos um plugin especial que fornece uma transição perfeita do Exchange. Com sua ajuda, os usuários poderão continuar trabalhando com o MS Outlook ao substituir um servidor de e-mail - eles nem perceberão que algo mudou em sua interação habitual com as ferramentas de comunicação. Este plugin permite transferir facilmente usuários do sistema de correio anterior, sem interromper o trabalho de toda a organização. Isto é especialmente importante se você precisar substituir ferramentas para atender centenas de milhares de usuários.

Facilidade de administração

A peculiaridade do nosso sistema de correio corporativo é que ele requer pouquíssima participação dos administradores. Ao projetar, procuramos encontrar um equilíbrio entre a possibilidade de customização e a complexidade de gestão. Para conseguir isso, precisávamos realizar muitas pesquisas sobre os padrões de comportamento dos administradores de sistemas corporativos complexos.

Nossa equipe é formada, como disse anteriormente, por especialistas altamente qualificados - cada um deles com sólida experiência em administração. Portanto, ao desenvolver o sistema, procuramos transferir sua experiência para as necessidades dos usuários no gerenciamento de um produto complexo. Em outras palavras, conhecendo os problemas potenciais, fornecemos proativamente maneiras de resolvê-los no nível do projeto arquitetônico.

Por exemplo,

  • É fornecido o isolamento dos componentes do sistema em contêineres, inclusive os de infraestrutura - isso nos ajuda a aumentar o nível de segurança, configurar de forma flexível o acesso entre os componentes e também nos permite incluir rapidamente novos itens exigidos pelo negócio na lista de sistemas e plataformas suportadas;
  • uma abordagem unificada para desenvolvimento e implantação, um formato de configuração único para todos os componentes contribuem para uma operação mais clara e eficiente e reduzem os custos de suporte;
  • seu próprio instalador de sistema, baseado em ferramentas de implantação familiares, permite gerenciar a instalação de forma centralizada, flexível e clara;
    a arquitetura de microsserviços com uma divisão clara das responsabilidades da lógica de negócios entre os serviços ajuda a compreender o esquema de operação do sistema e a fornecer suporte de forma mais eficiente;
  • a parte de infraestrutura do sistema é baseada em soluções familiares, utilizando as melhores práticas, e também permite a integração com sistemas existentes na empresa, o que simplifica o comissionamento do sistema dentro da empresa;
  • Para o efeito, o armazém contará com um sistema baseado em inteligência artificial, que será capaz de identificar de forma independente potenciais falhas e controlar os equipamentos.

Design moderno

Foram necessários vários milhares de horas de trabalho para criar o design do produto. A tarefa de desenvolvimento foi tornar a interface moderna - fácil e intuitiva. Isso é difícil quando você está projetando um sistema empresarial, que por padrão deve incluir diversas funções específicas.

Primeiro olhar: como funciona o novo sistema de correio corporativo Mailion do MyOffice

É claro que o design não pode ser “esculpido na pedra” ou aprovado com assinatura e selo - é uma ferramenta viva, em constante desenvolvimento e aprimoramento. Ao longo de quatro anos, transformamos o design diversas vezes, mas não houve nenhuma mudança radical na ideologia. O princípio fundamental para construir uma linha completa de produtos corporativos é criar um sistema de design universal.

Ao projetar um sistema de e-mail corporativo, prestamos especial atenção ao desenvolvimento de três áreas principais - adaptabilidade, consistência e capacidade de adaptação ao estilo corporativo do cliente.

Adaptabilidade

Uma característica especial do design das interfaces do sistema de correio corporativo Mailion é a possibilidade de exibi-lo em dispositivos com telas de qualquer tamanho. Todos os componentes visuais são cuidadosamente renderizados, dimensionados corretamente quando executados em dispositivos móveis e são ótimos até mesmo para controle com os dedos em telas sensíveis ao toque. Além disso, quando você altera o tamanho da janela do aplicativo, o layout das colunas também é transformado - o tamanho das colunas muda proporcionalmente, em estrita conformidade com os postulados do conceito de aplicações ricas da Internet.

Consistência

O design do sistema de e-mail corporativo Mailion é baseado em uma abordagem sistemática. Desenvolvemos esta área desde o início de 2017, quando não estava tão na moda falar em sistemas de design como agora. Um sistema de design é um conjunto de regras e ferramentas de execução visual e técnica que reflete a filosofia do produto e está em constante evolução. Nós o introduzimos para simplificar a comunicação entre desenvolvimento e design.

Configurando uma identidade corporativa

O nosso design é um “camaleão”, capaz de se adaptar ao estilo corporativo de qualquer cliente. As cores de todos os elementos da interface são definidas através de variáveis. Assim, alterando o conjunto básico de várias cores, você pode recolorir todos os aplicativos de uma só vez.

As fontes também são definidas através de variáveis: a interface pode utilizar a fonte corporativa da empresa cliente, desde que prevista no brand book do cliente. Ao mesmo tempo, fontes diferentes podem ter tamanhos de letras diferentes e levamos isso em consideração. Por exemplo, o PT Sans no tamanho 16 parece visivelmente menor que o Roboto no mesmo tamanho 16. Portanto, ajustamos o tamanho dos blocos de texto às características de uma determinada fonte.

Dedicaremos artigos separados à estrutura de nossa biblioteca de cores e aos recursos de trabalho com fontes.

Мобильные приложения

Uma parte integrante de qualquer sistema de e-mail moderno são os aplicativos móveis - os usuários devem poder trabalhar de qualquer lugar e a qualquer hora.
Agora estamos apenas formando o conceito de aplicativos móveis corporativos, eles devem levar em conta as diferenças na funcionalidade dos sistemas de e-mail MyOffice e oferecer diferentes abordagens para o uso de sistemas de e-mail e calendário nas corporações.

Painel de mídia inteligente

Nossos grupos focais mostraram que os usuários consideram as interfaces dos sistemas de e-mail tradicionais complicadas. Os entrevistados que entrevistamos observaram que trabalhar com eventos de calendário e anexos era especialmente difícil. Tentamos alcançar uma interface responsiva e aumentar a produtividade – para tornar nosso produto agradável de usar.

O Media Panel, nova ferramenta para agilizar a colaboração, organiza todas as informações sobre correspondências e fornece acesso instantâneo a uma lista de participantes da correspondência, links e versões de documentos já enviados.

Esta ferramenta auxilia em situações em que os usuários precisam trabalhar com grandes faixas de centenas de mensagens. Muitas vezes acontece que você precisa encontrar um documento ou imagem que estava em apenas um deles. O painel de mídia cria uma lista de todos os elementos de uma cadeia de e-mail e os exibe em um só lugar. Como resultado, encontrar o objeto desejado fica muito mais fácil.

Localização

Não são apenas os usuários russos que precisam de um sistema de e-mail corporativo. O MyOffice segue uma política consistente de entrada em mercados estrangeiros, por isso é dada muita atenção às questões de localização do produto.

No nosso produto, a necessidade de localização para línguas estrangeiras foi prevista inicialmente, ao nível da parte básica do sistema. Por si só, adicionar novos idiomas não é um grande problema para nós - é uma tarefa completamente compreensível que sabemos resolver.

Atualmente, os idiomas russo e inglês estão disponíveis para os usuários. Nos próximos lançamentos, adicionaremos suporte ao sistema de e-mail corporativo para os idiomas em que funcionam os produtos MyOffice – francês, espanhol, português e outros. De certa forma, é mais fácil para nós do que para colegas de departamentos vizinhos, pois para sistemas de correio e calendário só precisamos levar em conta o alfabeto e as características de trabalhar com datas e horas - felizmente, não temos fórmulas como em um editor de planilhas.

Sim, estamos contratando!

Foram necessárias centenas de anos-homem para criar nosso produto. E mesmo que eu quisesse, não conseguiria contar tudo de uma vez em um artigo. No entanto, espero que esta publicação sirva de ponto de partida para conhecer o nosso produto - como disse acima, pretendo falar mais detalhadamente no futuro tanto sobre a solução em si e as suas funcionalidades, como também sobre o nosso desenvolvimento abordagens.

Sem sombra de modéstia, direi também que hoje o número de empresas que desenvolvem tais sistemas de correio em todo o mundo é pequeno. Esta é uma tarefa de engenharia verdadeiramente complexa, que requer um profundo conhecimento das necessidades dos clientes corporativos e uma análise minuciosa dos processos de negócios de grandes organizações, tendências modernas em design e desenvolvimento, bem como um número razoável de especialistas competentes. Nosso sistema postal está evoluindo a cada dia.

Neste momento estamos quase abertos cinquenta vagas em desenvolvimento. Venha trabalhar conosco se quiser trabalhar conosco para criar um produto que pode mudar a forma como o mundo corporativo pensa sobre e-mail.

Fonte: habr.com

Adicionar um comentário