Разработать архитектуру (системы мгновенного обмена сообщениями)

Цена договорная
21 октября 2021, 16:03 • 5 откликов • 60 просмотров

Частная компания ищет специалиста (программиста) с опытом работы в области проектирования систем мгновенного обмена сообщениями для создания End-to-end encryption (E2EE) мессенджера (аналог Threema, но более юзабилити), чтобы спроектировать серверную часть, а лучше архитектуру в целом.


Основные моменты:

  1. Необходимо выбрать архитектуру для реализации проекта: централизованную или peer-to-peer.
    И обосновать данный выбор.
  2. Должно использоваться End-to-end шифрование (E2EE) - данные кодируется на стороне клиента А, и декодируется на стороне клиента Б, которому адресованы данные.
  3. Ключи шифрования должны хранится на стороне клиента.
  4. Протокол шифрования должен быть на базе открытой библиотеки.
  5. Библиотеки для разработки должны быть современными и открытыми.
  6. Анонимная регистрация - при регистрации нового пользователя нет обязательной привязки к телефону и/или e-mail - мессенджер автоматически генерирует ID и QR-код для нового пользователя. Однако в дальнейшем по желанию пользователь может указать следующие данные
    - Name;
    - Last Name;
    - Bio (например возраст, род деятельности, город, страна);
    - Phone number;
    - Username (через @, как в телеграм).
  7. В системе должен быть предусмотрен поиск по ID, Name, Last Name, Bio, Phone number и Username.
  8. Необходимо реализовать асинхронную доставку сообщений.
  9. Необходимо реализовать систему обмена файлами, а так же докачки файлов после обрыва связи.
  10. Если адресат А передает сообщение или какие-то данные (файл, голосовое сообщение и т. п.) адресату Б и в данный момент адресат Б не в сети, то, данные хранить на сервере в зашифрованном виде. После передачи данных адресату Б (когда он будет в сети), уничтожать их на сервере. Если адресат Б отсутствует более месяца, данные которые ему адресованы автоматически удаляются через месяц.
  11. На сервере необходимо держать как можно меньше информации, например: дата создания аккаунта и дата последнего появления его в сети, а также необходимые данные для их идентификации и поиска.
  12. Написать серверную часть системы для ОС Linux, точнее API, чтобы клиентские приложения смогли взаимодействовать с ней.
  13. Желательно использовать языки низкого уровня - такие как С, С++ , либо по Вашему усмотрению (но в этом случае нужно будет доказать, что иной язык будет не хуже языков низкого уровня).
  14. Система должна потреблять минимальное количество ресурсов и справляться с большим количеством соединений, а также держать хороший аптайм, без лагов и т. д.
  15. Код должен быть чистым и понятным.
  16. Предоставить подробную документацию на API.
  17. Несмотря на то, что на сервере должно храниться минимальное количество данных, у компании должна быть возможность блокировать пользователей и каналы (которые будут реализованы позже).
  18. Должна быть возможность установить пароль для входа в приложение.
  19. Архитектура приложения должна позволить в дальнейшем реализовать клиенты для
    - Android;
    - IOS (iPhone);
    - Windows Mobile;
    - Windows 7+ и macOS.
  20. Должны быть уведомления о получении и о прочтении сообщений, как у всех мессенджеров.
  21. Должна быть возможность пересылать сообщения.
  22. Должен быть реализован чат “Избранное” - как в телеграм.
Серверная часть должна предоставлять минимальные требования:

  1. Чаты между пользователями;
  2. Смайлики;
  3. Показ картинок прямо в чате, в том числе анимированные;
  4. Показ видео прямо в чате (как у телеграм);
  5. Передача файлов;
  6. Возможность писать комментарии к картинкам, видео и файлам при их отправке.
  7. Голосовые сообщения;
  8. Создания групп не менее 256 пользователей (обязательно с возможностью в дальнейшем значительно увеличить это количество);
  9. Установка и смена аватара для пользователей.
Нужно спроектировать мессенджер так, чтобы после создания системы, ее можно было легко усовершенствовать для будущих возможностей в которые будут входить: аудиозвонки, анимированные смайлики, создание каналов, видеозвонки, самоуничтожающиеся сообщения, самоуничтожение сообщений по таймеру, внесение пользователей в черный список, просмотр статуса пользователя (онлайн, последний раз был в сети), настройки доступов у пользователя (кто может отправлять сообщения, видеть статус и т.д.), мультиязычность, возможность настраивать уведомления, автоматические удаление аккаунта (если пользователь не заходит какое-то время), смена оформления и т.д.

В итоге: нужен специалист который спроектирует архитектуру в целом, напишет серверную часть системы т. е. API, подробно и логично сможет объяснить, почему именно так нужно проектировать, сможет предсказать примерную нагрузку на сервер. После этого будет составлено подробное ТЗ.

Если Вы такой специалист которого мы ищем, то мы готовы предоставить много работы и не скучные задачи)

Для связи оставляйте свой телеграмм и удобное время для связи.

Оплата по договоренности.