Fury: Как за 4 месяца разработки мессенджера с нуля не сойти с ума. android.. android. fury.. android. fury. max.. android. fury. max. messenger.. android. fury. max. messenger. Венчурные инвестиции.. android. fury. max. messenger. Венчурные инвестиции. кейс.. android. fury. max. messenger. Венчурные инвестиции. кейс. мессенджер.. android. fury. max. messenger. Венчурные инвестиции. кейс. мессенджер. Мессенджеры.. android. fury. max. messenger. Венчурные инвестиции. кейс. мессенджер. Мессенджеры. разработка.. android. fury. max. messenger. Венчурные инвестиции. кейс. мессенджер. Мессенджеры. разработка. Системы связи.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Fury: Как за 4 месяца разработки мессенджера с нуля не сойти с ума - 1
    Fury: Как за 4 месяца разработки мессенджера с нуля не сойти с ума - 2

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

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

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

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

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

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

Fury: Как за 4 месяца разработки мессенджера с нуля не сойти с ума - 3

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

Звонки: 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 в плане объединения с серьезными инвесторами или партнерами для продвижения продукта в массы с четким планом развития и монетизации.


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

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

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

Сайт проекта: https://furymsg.ru

ТГ Канал поддержки: https://t.me/furymessenger

RuStore: https://www.rustore.ru/catalog/app/ru.fury.messenger

Автор: REPLAY_5

Источник

Rambler's Top100