Итак, продолжу рассказ о том, как в один прекрасный день, оказавшись на задворках блокировок мессенджеров, я решил создать свой собственный. Изначально проект задумывался как простое средство коммуникации с родными и партнерами по бизнесу. Но вот во что это вылилось спустя всего 4 месяца... Ранее писал о том как всё это начиналось [тут] и [тут]

Аудитория и первые стресс-тесты

На текущий момент у мессенджера уже появилась своя постоянная аудитория, причем многие из этих людей мне совершенно незнакомы! Регистрации идут каждый день, что дает отличный фидбэк, но вместе с тем устраивает настоящий стресс-тест для систем.

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

  • Система модерации: реализовано полноценное управление пользователями.

  • «Режим канала»: возможность моментально превратить группу в канал, где публикации делает только автор, а оформление меняется на формат «ленты».

GitHub
-небольшую краткую readme-инструкцию пользования и некоторые файлы опубликовал на github

Борьба за мегабайты: спасаем память смартфона

Так как в Fury упор сделан на локальное хранение данных (сервер держит передаваемые файлы минимальное время, чтобы экономить ресурсы), вся история и файлы из групп ожидаемо хранятся на телефонах пользователей.

Никогда бы не подумал, что если найдутся 2–3 человека, любящих пофлудить, покидать видосики и картинки, то объем данных в чате за 1–2 недели может легко превысить гигабайт! Для меня это стало личной болью: я видел, как безбожно расходуется место, а приложение начало весить более 2 Гб.

Что было сделано:

  • Сначала я внедрил функционал «Данные и память», позволяющий увидеть, какой именно чат и сколько файлов хранит. Сразу стало понятно, какие группы активнее всего «украшают нашу цифровую помойку».

  • Добавил кнопки очистки: сначала «удалить все файлы старше 30 дней», затем «удалить всё», а позже — «старше 7 дней». Но и этого оказалось недостаточно.

  • Не все пользователи достаточно продвинуты, чтобы заходить в настройки и чистить кэш руками, а контейнер приложения тем временем раздувался бы до бесконечности.

  • В итоге я разработал систему автоматического удаления старых файлов на базе лимита по размеру. По умолчанию на все публичные группы ставится лимит в 200 МБ (его можно менять или отключать). Теперь телефон рядового обывателя спасен, а я могу спать спокойнее.

API и экстренные оповещения

Сейчас я веду разработку botApi. Не уверен, насколько это нужно пускать в массы, ведь сейчас в мессенджере такое ламповое, человеческое общение без всяких «ИИшниц».

Однако API уже пригодился мне для правильных целей. Я создал каналы экстренного оповещения об угрозах БПЛА и прочих опасностях для нескольких регионов (Краснодарский край, Крым, Ростовская область). Для меня актуально получать эти уведомления оперативно. Сейчас система работает на базе анализа профильных TG-каналов с автоматической пересылкой в соответствующие каналы внутри Fury.

Рекомендации: коммерческий задел

Раздел «Рекомендации» — это потенциально неплохая точка для коммерциализации. Именно отсюда (и пока только отсюда) пользователи могут увидеть список рекомендованных каналов.

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

Звонки: HD-качество и борьба с потерями

Была проделана огромная работа по отладке кодеков и протоколов передачи: UDP, P2P, коррекция потерь, jitter-буфер с изменяемой скоростью воспроизведения, чтобы оставаться в точке актуальности при плохой связи. Всё разработано с нуля и с любовью.

На текущий момент могу сказать уверенно: в Fury можно болтать часами в HD-качестве, потребляя минимум трафика. Система отлично стабилизирует голос даже в нестабильных сетях.

Кстати основной базовый протокол взаимодействия - это тоже апсолютно разработанное с нуля решение, на уровне стека TCP (Да Да! Никаких WebSocket, HTTPS И прочего ширпотреба!) Только RAW TCP/UDP Только хардкор!!! Проведенный аудит безопасности протокола, с помощью анализа исходников с помощью ИИ порадовал ещё больше. Можно почитать тут -> furymsg.ru/security.html

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

Backend: от монолита к микросервисам

Разрабатывая бэкенд, я постоянно совершенствую навыки создания горизонтально масштабируемых систем.

  • Было: монолитный сервис на Go, база данных MySQL, который отвечал за всё сразу: звонки, файлы, основной канал связи.

  • Стало: микросервисная архитектура. Есть внутреннее ядро, взаимодействующее с MySQL и Redis, и коннектор основного канала. Система готова к multi-instance запуску на разных серверах.

В планах — внедрить NATS и еще сильнее оптимизировать работу с SQL и локальным кэшем, чтобы система могла принять миллионы пользователей.

Клиент под Windows и магия KMP

Многие просили Desktop-версию, так как одного Android для работы мало. Писать с нуля на .NET C# было бы круто, но поддерживать два разных приложения в одиночку — самоубийство. Протокол и фичи меняются слишком быстро.

Спасением стала Kotlin Multiplatform (KMP) в связке с IntelliJ IDEA. С минимальными доработками удалось практически скопировать (Ctrl+C / Ctrl+V) большую часть кода и дизайна под Windows. Теперь изменения в одной версии легко переносятся в другую. В теории, так же можно сделать версии под Linux и iPhone (про iOS пока не думаю принципиально из-за санкций и личного отношения к платформе).

Итоги и планы

Большое спасибо ребятам, которые подкидывают идеи, находят баги и даже тем, кто флудит мусором в группах — вы лучшие! ;)

После публикации в RuStore взрывного роста пользователей не случилось, зато прекратились крики о том, что «страшно устанавливать левый APK с сайта». Хотя, как по мне, модерация стора не добавляет особой безопасности, хоть они и проверяют каждое мелкое обновление.

Пока я развиваю проект за свой счет — мне это просто интересно. Но я вижу будущее у Fury в плане объединения с серьезными инвесторами или партнерами для продвижения продукта в массы с четким планом развития и монетизации.


Как вам такой формат? Если нужно что-то добавить или акцентировать внимание на технических деталях — пишите!

Бизнес-партнеры и инвесторы приветствуются!

[наши линки]:

Сайт проекта

ТГ Канал поддержки

RuStore

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Пользовались бы таким мессенджером?
36.67%Да11
30%Нет9
33.33%Не знаю10
Проголосовали 30 пользователей. Воздержались 4 пользователя.