
Майже чотири роки тому ми почали проектувати нову розподілену поштову систему Mailion, яка призначена для корпоративних комунікацій. Наше рішення побудоване на Cloud Native мікросервісній архітектурі, здатне працювати з більш ніж 1 користувачів одночасно і буде готове покрити 000% потреб великих корпорацій.
За час роботи над Mailion команда зросла в кілька разів, і зараз у продукті залучено майже 70 розробників. Ми пройшли великий шлях від ідеї та перших прототипів до етапу пілотування комерційної версії. Настав час розповісти Хабру про те, що за продукт ми створюємо, як влаштована та працює наша поштова система, який стек технологій ми використовуємо і чому за нашим рішенням – майбутнє корпоративних комунікацій. Погнали!
Хабре, привіт! Мене звуть Антон Герасимов, я керую департаментом розробки у московському центрі розробки компанії . Сьогодні ми хочемо представити Mailion - принципово нову російську поштову систему корпоративного класу, яка стане гідною альтернативою популярним іноземним рішенням. Mailion володіє високою здатністю навантаження, безпрецедентними можливостями масштабування і відмовостійкості, а також вимагає мінімальної уваги з боку системних адміністраторів.
Сьогодні наша технологія перебуває в стадії бета-версії, але незабаром, за нашим планом до кінця 2020 року, перейде в статус пілотного застосування комерційного товару.
Здебільшого ця стаття містить загальні відомості – розповісти про складний програмний продукт в одній публікації просто неможливо. Я планую зробити серію статей із розповіддю про ключові технології. А поки що для вашої зручності пропоную такий зміст:
Що таке корпоративна поштова система?
Проста і очевидна відповідь на це питання — засіб для роботи з електронною поштою та календарем. Але диявол, як відомо, у деталях.
Отже, ми створюємо пошту нового покоління з розширеними функціями календарного планування, яка орієнтована на корпоративний сегмент та великі компанії. Ми націлені працювати з великими комерційними і державними структурами, у яких може бути від 30 тисяч до кількох сотень тисяч робочих місць.
В основі нашої системи є принцип платформного рішення. Ми відштовхуємось від концепції Unified Communications та пропонуємо єдиний інструмент для роботи з поштою, календарем та документами всередині однієї системи, з можливістю нарощування функціональності рішення за рахунок підключення додаткових модулів та компонентів. Розширення, до речі, може бути розроблено як нами, а й нашими партнерами. Для цього буде опубліковано і досить широкий інструментарій SDK.
Кому та навіщо потрібна ще одна пошта?
Великий бізнес сформував цікавий тренд — підприємства потребують функцій спільної роботи. Мова не тільки про безпосередню взаємодію співробітників через пересилання чогось, а саме про спільний доступ до поштових та рольових скриньок, можливість роботи з великими групами учасників та наявність різних корпоративних функцій.
Типова корпоративна функція — механізм відкликання листів, який вкрай затребуваний у великих компаніях, але практично не використовується ні в B2C-сегменті, ні в малому бізнесі. Справа в тому, що серед малих груп користувачів ймовірність виникнення такої потреби досить невелика, та й ціна помилки набагато менша. Причому реалізувати цю функцію поза корпоративною поштовою системою просто неможливо — навіть у пошті Google немає відгуків листів у тому вигляді, до якого звикли користувачі Exchange. Корінь проблеми знаходиться у влаштуванні поштових протоколів з 80-х років минулого століття.
Ми провели десятки фокус-груп, опитали сотні користувачів та витратили кілька тисяч людино-годин на виявлення типових сценаріїв використання пошти. Це дозволило нам ретельно вивчити потреби наших потенційних користувачів та особливості їхніх бізнес-процесів. На основі отриманих даних ми вирішили розробляти архітектуру, яка дозволила б за необхідності масштабуватись до потрібного обсягу навантаження. У нашому уявленні межі взагалі не існує, проте на даний момент ми розуміємо, як забезпечити роботу компаній, в яких працює кілька сотень тисяч користувачів.
Що ховається під капотом
До складу нашого продукту входять поштове рішення, інструмент для календарного планування, адресна книга, а також інтерактивний перегляд документів на базі нашого рішення МійОфіс для роботи з документами.
Оскільки ми говоримо про рішення корпоративного рівня, то невід'ємною частиною корпоративної пошти є повноцінна пошукова система. Наше рішення здатне проводити наскрізний морфологічний пошук за всіма компонентами. Крім того, вся поштова система базується на власному сховищі, яке також оптимізовано для спільної роботи.
У чому відмінність поштових систем?
Читач Хабра, який уже мав досвід роботи з рішеннями МійОфіс, знає, що у складі комерційних продуктів є «МійОфіс Пошта». І постає питання — а в чому ж її відмінність від корпоративної поштової системи Mailion, над якою працювала моя команда?
Ми в МійОфіс вирішили, що для задоволення потреб компаній різного масштабу необхідно зробити дві поштові системи корпоративного класу. Продукт «Мій Офіс Пошта» призначений для організацій, де кількість користувачів обчислюється тисячами або кількома десятками тисяч. Для більших структур доцільніше застосовувати Mailion — новий продукт МойОфіс, який побудований на Cloud Native мікросервісній архітектурі, має безпрецедентні можливості щодо масштабування та стійкості до відмов.
При виборі продуктів клієнтам потрібно заздалегідь визначитися зі стратегією подальшого розвитку своєї компанії. Для будь-якої організації запровадження поштової системи — складна проектна робота, яка передбачає швидкої заміни одного рішення іншим. Тому максимально можливе навантаження, критерії відмови та самовідновлення, а також фактор географічного розподілу варто враховувати заздалегідь.
Дві поштові системи МійОфіс принципово різні. Вони побудовані з використанням різних технологічних стеків, і інструменти для кожної системи вибираються відповідно до цілей і завдань того сегмента, в якому буде розгортатися поштова система. У нас є загальне продуктове бачення того, що має бути присутнім у поштових системах, а також синхронізація у підходах до дизайну. Але це два продукти, розраховані на різну аудиторію користувачів.
Які виклики стоять перед розробниками
Далі по тексту я говоритиму тільки про нову корпоративну поштову систему Mailion.
Ми провели ретельне дослідження та проаналізували переваги та недоліки існуючих поштових рішень. Накопичений досвід наших фахівців, які у минулому мали безпосереднє відношення до створення високонавантажених систем, дозволив швидко виявити основну больову точку будь-якого відомого продукту – продуктивність дискових операцій уведення та виведення (IO).
Можна сказати, що завдання прискорення IO-операцій стало головним викликом, з яким ми зіткнулися. Необхідно було зосередитись на вирішенні наших конкретних завдань і ми почали створювати та розвивати власну систему зберігання бінарних даних. Такий підхід має цілком очевидну економічну складову — нам потрібно не лише зберігати дані, а й робити досить багато операцій дискового введення та виведення.
Таке рішення далося нелегко. Ми вивчили безліч продуктів корпоративного класу, які націлені на зберігання інформації, і не змогли знайти нічого готового та підходящого під наші вимоги. Адже нам потрібно не тільки зберігати дані, а й постійно з ними працювати, причому не в монопольному режимі з доступом одного користувача, а забезпечити можливість колаборації кількох десятків тисяч користувачів.
Отже, ми визначили, що найбільш пріоритетним корпоративним критерієм для нас є робота з більшими обсягами даних.
Надійність
Причому це не так питання зберігання, як завдання обробки та швидкого доступу до цієї інформації. Потрібно забезпечити високі показники надійності - час безперервної роботи всього рішення має бути на рівні 99,9%. При цьому поштова система має бути автономною у прийнятті вірних рішень щодо обробки відмов. Тільки таким чином можна досягти відсутності збоїв, здатних паралізувати бізнес-процеси тієї чи іншої компанії.
Відмовостійкість
Ми опрацювали комплекс заходів, які застосовуються для кожного компонента, та відібрали підходи для забезпечення стійкості до відмови. Зокрема, у корпоративній поштовій системі застосовується кворумна робота з даними, резервування сервісів та контроль відсутності їх станів, а також власні механізми маршрутизації та підтримки кворуму на базі консенсусу.
Критерієм високої стійкості до відмови є наявність у кожному компоненті механізмів для самоперевірки. Mailion постійно аналізує, правильно чи неправильно виконується та чи інша функція, чи коректно діє той чи інший блок. Це один із засобів самовідновлення системи у разі збою. Інформація не повинна втрачатися, рішення має проходити в консистентному стані зрештою.
Треба розуміти, що передбачити взагалі всі ймовірні події в житті неможливо — фізику не обдуриш. Але ми дотримуємося таких підходів до проектування, які дозволяють нам із досить високим ступенем упевненості говорити про коректну обробку аварій певних патернів. У нас також є велика група тестування, яка постійно намагається щось в продукті зламати. І іноді у них це виходить. За таким фактом заводиться інцидент, який ми детально вивчаємо і на його основі створюємо новий механізм для усунення таких проблем.
Як система реагує на аварії
Ринок часто ставить питання — що станеться із системою, якщо вона раптово втратить зв'язок з одним із своїх вузлів? Такий запит є особливо актуальним, якщо планується впровадити географічно розподілене рішення.
При проектуванні такої інсталяції необхідно враховувати потреби замовника та його набір критеріїв надійності. Помилково вважати, що підключення до мережі передачі скрізь однакове. У корпоративних системах важливо враховувати навіть швидкість проходження сигналу оптоволокном.
Якщо замовник висуває високі вимоги до надійності, ми рекомендуватимемо установку в кількох дата-центрах, які будуть об'єднані виділеними лініями зв'язку.
Проте, не можна виключати і сценарій повного відключення електрики в одному з вузлів поштової системи. У цьому випадку призупиниться робота з майстер-даними цього сегменту, але решта частин працюватиме, ніби нічого не сталося. Система повідомить адміністраторів про втрату вузла, і співробітники повинні будуть здійснити низку відповідних дій.
Також нашу поштову систему можна настроїти таким чином, щоб відбувалося резервування всередині дата-центру. Такий підхід забезпечить працездатність при втраті кількох вузлів усередині ЦОДу, причому втрату одного з вузлів ніхто не помітить — крім, звичайно, системи моніторингу. У разі такої події навантаження просто перерозподіляється. Тому при проектуванні поштової системи важливо враховувати запас - скільки і яких компонентів можна буде "втратити" при аварії.
самостійність
Абсолютно надійних систем не буває, і відмови так чи інакше, але можуть статися. Тому при проектуванні поштової системи важливо забезпечити можливість швидкої локалізації збоїв, яка дозволить усунути їх за певний SLA-період. Причому збої повинні усунутись системою самостійно, мінімізуючи при цьому втручання системних адміністраторів та служб експлуатації.
простота експлуатації
Звичайно ж, великі системи не можуть зовсім не вимагати уваги висококваліфікованих співробітників. Але один із аспектів, який ми розглядаємо при проектуванні, полягає в тому, що система має бути легко адміністрованою і не вимагати якихось унікальних компетенцій.
Економічна ефективність
Безумовно, для роботи з будь-якими подібними корпоративними системами потрібна підготовка співробітників — адже ми говоримо про справді величезні масштаби. Тому під час створення нашого продукту ми фокусувалися на зниженні сукупної вартості володіння системою. Для будь-якого бізнесу важливо стежити за ефективністю витрат і прагнути уникнути нескінченного вливання грошей до операційних витрат.
Децентралізованість
Для забезпечення тих принципів, які я говорив раніше, необхідно, щоб система була повністю розподілена — централізований підхід завжди обмежений умовами використання апаратного забезпечення.
Звичайно, можна купити один великий сервер і спробувати поставити на нього всі програми та послуги. Але чим більша система, тим складніша вся конструкція, та й надійність такої системи неухильно знижується - адже один сервер означає і єдину точку відмови. І чим більше ми централізуємо роботу, тим більше ми залежимо від цієї центральної точки.
Системні вимоги
Коли ми говоримо про складні корпоративні поштові системи, потрібно розуміти, що такого поняття, як «мінімальна конфігурація для роботи» не існує. В основі будь-яких великих впроваджень завжди лежить серйозна проектна робота. Вона дозволяє співвіднести потреби конкретного бізнесу та оптимальну конфігурацію поштової системи.
Корпоративна поштова система – це гнучкий інструмент, який можна налаштувати відповідно до великої кількості параметрів. Ми проводимо тестування навантаження за власною методикою, яка дозволяє моделювати навантаження, виходячи з аналізу десятка базових і декількох сотень можливих критеріїв.
Можна сказати, що під час підготовки проекту впровадження саме розрахунки покажуть інтенсивність роботи користувачів у існуючих бізнес-процесах організації. При цьому аналізується багато вхідних параметрів, і залежно від можливого навантаження приймається рішення про необхідний обсяг обчислювальних потужностей — від одного комп'ютера до машинного залу.
Тому говорити про якісь мінімальні конфігурації — не зовсім коректно. Зокрема, ми маємо і демонстраційний стенд, який працює всього на одній машині. Але ми розуміємо, що робота в корпоративному сегменті потребує інсталяції на десятки та навіть сотні віртуальних машин.
Технологічний стек
Під час створення продуктів ми приділяємо особливу увагу ліцензійній чистоті коду. У МійОфіс встановлені та діють високі стандарти якості, які вимагають від нас самостійно розробляти продукти повністю, з мінімальним залученням зовнішнього коду.
Велика частка коду Mailion – власна розробка, код, права на який повністю належать нам і який ми можемо змінювати та доопрацьовувати за потреби. Більшість коду нашої поштової системи написано самостійно на Go (Golang). Крім Go ми використовуємо C++, а також Java Script ES6 для веб-частини.
5% - так звані "важкі компоненти", такі як бази даних. До них відносяться RethinkDB, ArangoDB і Redis. З ключових технологій також відзначу ще gRPC - систему віддаленого виклику процедур, яка використовується як єдиний механізм для взаємодії API, це важлива частина.
З чого складається продукт
Корпоративна поштова система це не «сервер у вакуумі». До складу нашого продукту входить близько 70 компонентів та 45 сервісів, які займаються обслуговуванням поштової системи. Всі ці елементи написані з нуля і є власною розробкою МойОфіс.
Найбільш помітною частиною системи є серверний комплекс, який забезпечує роботу сховища, поштової, календарної та пошукової систем та веб-клієнта. Ми розробляємо і кілька додатків користувача і плануємо до моменту комерційного релізу запропонувати нашим користувачам нові "тонкі клієнти" на технологіях нашого веб-клієнта.
Сумісність із поштовими системами
Mailion працює за стандартними протоколами. Для того, щоб почати користуватися нашим рішенням, потрібно лише налаштувати клієнтські програми і далі працювати з ними у звичному оточенні. Наприклад, можна використовувати клієнтську програму, що входить у продукт «Мій Офіс Пошта».
Також для зручності наших користувачів ми створили спеціальний плагін, який забезпечує безшовний перехід із Exchange. З його допомогою користувачі зможуть при заміні поштового сервера продовжити працювати з MS Outlook - вони навіть не помітять, що в їхній звичній взаємодії із засобами комунікації щось змінилося. Такий плагін дозволяє плавно переносити користувачів з колишньої поштової системи без зупинки роботи всієї організації. Це особливо важливо, якщо вам потрібно замінити кошти для роботи сотень тисяч користувачів.
Легкість адміністрування
Особливість нашої корпоративної поштової системи — у необхідності вкрай малої участі адміністраторів. Під час проектування ми постаралися знайти баланс між можливістю кастомізації та складністю управління. Щоб цього досягти, нам потрібно було провести безліч досліджень патернів поведінки адміністраторів складних корпоративних систем.
У складі нашої команди працюють, як я вже сказав раніше, фахівці високої кваліфікації — кожен з них має солідний досвід адміністрування. Тому під час розробки системи ми постаралися перенести їх досвід потреби користувачів під час управління складним продуктом. Інакше кажучи — знаючи про потенційні проблеми, ми заздалегідь передбачили способи їх вирішення на рівні проектування архітектури.
Наприклад,
- передбачена ізоляція компонентів системи в контейнери, включаючи інфраструктурні - це допомагає нам підвищити рівень безпеки, гнучко налаштовувати доступи між компонентами, а також дозволяє швидко включати до списку підтримуваних систем та платформ нові пункти, затребувані бізнесом;
- єдиний підхід до розробки та розгортання, єдиний формат конфігурації всіх компонентів сприяють більш зрозумілій та ефективній роботі та скорочують витрати на підтримку;
- власний інсталятор системи, на базі звичних інструментів розгортання, дозволяє централізовано, гнучко та зрозуміло керувати установкою;
мікросервісна архітектура з точним поділом відповідальності бізнес-логіки між сервісами допомагає зрозуміти схему роботи системи та ефективніше здійснювати підтримку; - інфраструктурна частина системи базується на звичних рішеннях, з використанням кращих практик, а також дозволяє проводити інтеграції з системами на підприємстві, що вже є, що спрощує введення системи в експлуатацію всередині компанії;
- у сховищі для цього буде передбачена система на базі штучного інтелекту, яка зможе самостійно виявляти потенційні відмови та керувати обладнанням.
Сучасний дизайн
На створення дизайну продукту пішло кілька тисяч людино-годин. Перед розробкою стояло завдання зробити інтерфейс сучасним – легким та інтуїтивно зрозумілим. Це складно, коли ти проектуєш корпоративну систему, яка за умовчанням має включати низку специфічних функцій.
Звичайно, дизайн не можна "висікти в камені" або затвердити під підпис та друк - це живий інструмент, він постійно розвивається та вдосконалюється. За чотири роки ми трансформували дизайн кілька разів, але не було радикальної зміни ідеології. Ключовий принцип побудови всієї корпоративної лінійки продуктів полягає у створенні універсальної дизайн-системи.
При проектуванні дизайну корпоративної поштової системи ми приділили особливу увагу опрацюванню трьох ключових напрямків – адаптивність, системність та можливість підлаштуватися під фірмовий стиль клієнта.
Адаптивність
Особливість дизайну інтерфейсів корпоративної поштової системи Mailion – можливість відображення на пристроях з екранами будь-яких розмірів. Всі візуальні компоненти ретельно промальовані, вони правильно масштабуються під час роботи на мобільних пристроях і чудово підходять навіть для керування пальцями на сенсорних екранах. Також при зміні розміру вікна додатка трансформується і колонкова верстка — розмір колонок зміщується пропорційно, відповідно до постулатів концепції насичених інтернет-додатків.
Системність
В основі дизайну корпоративної поштової системи Mailion є системний підхід. Ми розробляємо цей напрямок з початку 2017 року, коли про дизайн-системи говорити було не так модно, як нині. Дизайн-система - це набір правил та інструментів для візуального та технічного виконання, що відображає філософію продукту та постійно розвивається. Ми запроваджували її для спрощення комунікації між розробкою та дизайном.
Налаштування фірмового стилю
Наш дизайн - це "хамелеон", здатний підлаштуватися під будь-який фірмовий стиль клієнта. Кольори всіх елементів інтерфейсу визначено через змінні. Таким чином, змінивши базовий набір з декількох кольорів, можна перефарбувати всі програми.
Шрифти також визначаються через змінні: інтерфейс може використовувати фірмовий шрифт компанії-клієнта, якщо передбачено клієнтським брендбуком. При цьому різні шрифти можуть мати різний розмір літер і ми це враховуємо. Наприклад, PT Sans у 16-му розмірі виглядає відчутно дрібніше, ніж Roboto у тому ж 16-му розмірі. Тому ми підлаштовуємо розмір текстових блоків особливо конкретного шрифту.
Влаштуванню нашої колірної бібліотеки та особливостям роботи зі шрифтами ми присвятимо окремі статті.
Мобільні додатки
Невід'ємною частиною будь-якої сучасної поштової системи є мобільні програми - користувачі повинні мати можливість працювати з будь-якого місця і в будь-який час.
Зараз ми лише формуємо концепцію корпоративних мобільних додатків, вони повинні враховувати відмінності у функціональності поштових систем МойОфіс та пропонувати різні підходи до використання електронної пошти та календарних систем у корпораціях.
Інтелектуальна медіа-панель
Наші фокус-групи показали, що користувачі вважають за громіздкі інтерфейси звичних поштових систем. Опитані нами респонденти зазначали, що особливо складно працювати з подіями у календарі та вкладеннями. Ми намагалися домогтися чуйності інтерфейсу і збільшення продуктивності зробити так, щоб нашим продуктом було приємно користуватися.
Медіапанель, новий засіб для прискорення спільної роботи, систематизує всю інформацію про листування та забезпечує моментальний доступ до списку учасників листування, посилань та версій документів, які будь-коли були надіслані.
Цей інструмент допомагає в ситуаціях, коли користувачам доводиться працювати з великими треками із сотень повідомлень. Часто буває так, що потрібно знайти документ або картинку, які були лише в одному з них. Медіапанель створює перелік всіх елементів із ланцюжка листів, і відображає їх в одному місці. Внаслідок чого знаходити потрібний об'єкт стає набагато простіше.
Локалізація
Потреба в корпоративній поштовій системі є не лише російськими користувачами. Мій Офіс проводить послідовну політику щодо виходу на іноземні ринки, тому питанням локалізації продуктів приділяється досить велика увага.
У нашому продукті потреба у локалізації іноземними мовами закладалася спочатку, на рівні базової частини системи. Саме собою додавання нових мов для нас не є великою проблемою — це цілком зрозуміле завдання, яке ми знаємо, як вирішувати.
Зараз користувачам доступні російська та англійська мови. У найближчих релізах ми додамо до корпоративної поштової системи підтримку мов, на яких працюють продукти МойОфіс — французька, іспанська, португальська та інші. Нам у деякому плані простіше, ніж колегам із сусідніх підрозділів, бо для поштових та календарних систем потрібно враховувати лише алфавіт та особливості роботи з датами та часом — формул, як у табличному редакторі, у нас, на щастя, немає.
Yes, we are hiring!
На створення нашого продукту пішло кілька сотень людино-років. І при всьому бажанні я не зміг би розповісти відразу про все в рамках однієї статті. Проте я сподіваюся, що ця публікація стане відправною точкою для знайомства з нашим продуктом — як я вже сказав вище, я планую надалі розповідати більш детально як про саме рішення та його особливості, так і про наші підходи до розробки.
Без тіні скромності також скажу, що сьогодні кількість компаній, які розробляють такі поштові системи в усьому світі — лічені одиниці. Це справді складне інженерне завдання, воно потребує і глибинного розуміння потреб корпоративних замовників, і ретельного аналізу бізнес-процесів великих організацій, сучасних трендів у дизайні та розробці, а також значної кількості компетентних фахівців. Наша поштова система розвивається щодня.
Прямо зараз у нас відкрито майже вакансій у розробці. Приходьте до нас на роботу, якщо ви хочете разом із нами створювати продукт, який здатний перевернути уявлення корпоративного світу про електронну пошту.
Джерело: habr.com
