«МойОфис»: Первые шаги

Позвольте представиться, мы — «Новые облачные технологии», команда разработчиков проекта «МойОфис». Коллектив состоит из инженеров, принимавших участие в создании офисных пакетов «Лексикона» и мобильного QuickOffice. Не так давно о нас уже успели рассказать на CNews, «МегаМозге» и даже вышел небольшой пользовательский обзор.

Пришло время для повествования от первого лица. Эта статья открывает наш блог на «Хабрахабре», в котором мы будем писать о том, кто мы и что делаем. Давайте знакомиться!
3516d190fe3249f18fe05670c8e26fd3.jpg


«МойОфис» — платформа для полноценной работы офисных сотрудников, которая позволяет обмениваться почтовыми сообщениями, вести список контактов, управлять совместными встречами в календаре и — самое главное — работать вместе, создавая и редактируя массу документов.
7d114d68e4b848b884ecac98f73c1b70.jpg

Для нас совместная работа с документами, например со сложными текстовыми файлами, таблицами и презентациями, — это прежде всего возможность одновременной работы всех участников. Мы ушли от сценария работы, когда у каждого документа есть один автор, масса версий, пересылаемых по почте, и бесконечные поочередные правки и комментарии. Работая вместе, мы должны получать результат этой работы сразу, это значительно увеличивает производительность. Другими словами, мы реализуем переход от последовательного редактирования к параллельному.
3e8d0e9949d44def8a2a662ffcf76419.jpg

Создание простого и удобного продукта — наш вектор развития. Продукт должен быть легким в использовании для конечного пользователя. И мы надеемся, что скоро вы сможете дать оценку тому, удалось ли нам это. Сегодня «МойОфис» работает на большинстве современных платформ: это полноценный Web-клиент, настольные версии приложения для Windows, Mac OS и Linux, а также мобильные приложения для iOS и Android. Еще мы работаем над версией для Tizen.

В наших планах предоставить «МойОфис» для широкой аудитории уже в конце этого года. Немного ранее, осенью, доступ получат корпоративные пользователи.

Мы сделали «МойОфис» как можно более гибким, обеспечив его работу как в публичных облаках и на открытых платформах, так и на оборудовании заказчика. Мы удовлетворяем требования безопасности корпоративного класса: проводим сертификацию на отсутствие недекларированных возможностей. В ближайшем будущем планируем поддерживать стандарты и алгоритмы шифрования, принятые в разных странах.


Начать можно с самого важного — единого ядра системы. Благодаря ему приложения «МойОфис» идентично отображают документы на любых устройствах и поддерживают все возможности совместной работы. Как нам кажется, мы хорошо поработали и теперь можем адаптировать его к любой платформе, сохраняя при этом высокую производительность и полный набор функций как для смартфона, так и для Web-клиента.
540239e0efa243c8b7748b52871cdda9.jpg

Ядро редактора «МойОфис» полностью написано на C++ и собирается под необходимую платформу в зависимости от набора доступных инструментов (SDK, NDK и т.п.) либо используя кросс-платформенное решение. В случае Web-клиента это Emscripten.

Таким образом, мы добились того, что редакторы везде работают одинаково. Отличия заключаются лишь в интерфейсе и специфичных для разных платформ подсистемах.

Мы сознательно отказались от заимствования у open source аналогов и весь код ядра написали сами. Для нас важным моментом стал внутренний формат файлов, который имеет общую иерархическую структуру для текстовых документов и таблиц, более сложную, чем стандартные форматы. Именно по этой причине имеющиеся OSS нам не подходили.

Далее серверная часть. Для нее в основном использованы Java и C++. Это дает нам преимущества обоих миров в части гибкости разработки и высокой производительности. А архитектурное разделение на независимые сервисы предоставляет нам возможности для простого горизонтального масштабирования и обеспечивает отказоустойчивость.

Java используется в серверных компонентах, которые обслуживают клиентские REST API, запросы к модулям редактирования документов, запуск операций конвертирования, клиентские уведомления и прочие похожие операции. Он был выбран как язык, удобный для серверной разработки и поддержки, фактически являющийся стандартом для корпоративных сервисов. C++ же используется в модулях конвертирования и совместного редактирования, которые требуют высокой скорости работы и экономного расходования памяти.

Требования к масштабированию и отказоустойчивости диктуют и соответствующую инфраструктуру, которую мы построили на базе etcd/fleet. Они управляют жизненным циклом отдельных сервисных модулей и кластерных компонентов системы, запускают и останавливают контейнеры и системные службы. Балансировка backend«ов при этом реализована на базе nginx/openresty.

Вслед за новейшими технологиями для развертывания высоконагруженных систем, для виртуализации мы используем легковесные контейнеры Docker.

Вот так просто о сложном. Подробнее об этом и многом другом мы готовы рассказать в следующих статьях.


Для себя мы уже наметили следующие темы:

  1. Как мы создаем кросс-платформенные приложения.
  2. Особенности разработки и архитектуры приложений для совместного редактирования документов.
  3. Как проектировать дизайн интерфейса по принципу Mobile First.


Ваши вопросы и комментарии помогут нам выбрать то, о чем мы расскажем в первую очередь.

До встречи!

© Habrahabr.ru