Мы запускались тихо и рассчитывали на спокойный старт: небольшая независимая команда, приложение, о котором почти никто не слышал, рост по чуть-чуть — так, чтобы успевать за ним руками. Вышло иначе. Про Syntara начали рассказывать друг другу, приглашать родных и коллег, и поток новых регистраций оказался в разы выше всего, к чему мы готовились.
Это лучшее, что могло случиться с продуктом, и одновременно — самое тяжёлое испытание для инфраструктуры. Последние дни часть из вас видит долгую загрузку чатов, сообщения, которые уходят не с первой попытки, звонки, которые соединяются дольше обычного, и ошибки при регистрации. Мы видим то же самое на своих графиках и не собираемся делать вид, что всё в порядке.
Что происходит на самом деле
За мессенджером стоит не одна программа, а несколько связанных систем: приём и доставка сообщений, база данных, хранилище медиа, сигнализация для звонков, отправка уведомлений. Под нагрузкой первым сдаётся самое узкое место, а когда оно проседает, следом начинает штормить всё остальное: очереди растут, повторы запросов множатся, и сервис уходит в петлю, из которой нужно выводить его руками.
Именно этим мы сейчас и заняты: ищем узкие места по одному и расширяем. Общими словами про «улучшение производительности» тут не отделаться. Что-то чинится перезапуском за минуты, что-то требует переписать код или переехать на более мощное железо — а это дни работы, не часы.
Почему мы не подготовились заранее
Честный ответ: мы недооценили интерес. Запас прочности у нас был, но он рассчитывался на плавный рост, а не на волну. Можно было арендовать мощности с многократным избытком заранее — но это деньги, которые небольшая команда без рекламы и подписок тратит из своего кармана, и до сих пор такой запас выглядел бы просто выброшенным.
Мы приняли это решение и отвечаем за него. Урок сделали: теперь инфраструктура считается с запасом на кратный рост, и добавить мощность мы должны успевать за час. Раньше на это уходили сутки.
Что мы уже сделали
Мы расширили серверы, которые принимают соединения, и развели нагрузку так, чтобы тяжёлые операции — загрузка медиа, синхронизация истории — не мешали самому важному: доставке сообщений. Мы включили подробный мониторинг всех ключевых узлов, чтобы видеть проблему до того, как её увидите вы, а не после ваших писем в поддержку. Часть запросов, которые приложение делало слишком часто, стала экономнее — это уже разгрузило базу данных.
Отдельно мы занялись повторной доставкой: если сообщение не ушло с первой попытки, приложение обязано доставить его само, без вашего участия. Это то, что должно работать даже в самый плохой момент, и мы доводим этот механизм до конца в первую очередь.
Что делаем дальше
Ближайшие дни уйдут на то, чтобы убрать оставшиеся узкие места и перенести самые нагруженные части системы на более мощные машины. Параллельно мы меняем подход к выкатке обновлений: сейчас важнее стабильность, чем новые функции, поэтому часть запланированных релизов подождёт. Business API и другие большие вещи никуда не денутся — просто сначала мы вернём сервису ту скорость, ради которой вы его и выбрали.
Если приложение работает плохо прямо сейчас
Самое полезное, что вы можете сделать, — не удалять приложение и не переустанавливать его без нужды: сообщения, отправленные в момент сбоя, дойдут сами, когда связь восстановится, а переустановка только заставит заново синхронизировать историю и добавит нагрузки. Если чат долго открывается, обычно достаточно свернуть и открыть приложение снова.
А если вы столкнулись с чем-то конкретным — не проходит регистрация, не отправляется файл, обрывается звонок — напишите нам. Такие письма сейчас особенно ценны: они показывают, что именно ломается у живых людей, а не только на графиках. Мы читаем всё.
Извините за эти дни
Вы пришли, рассказали о нас друзьям и доверили нам свою переписку — и получили сервис, который в первые дни работает хуже, чем должен. Нам за это правда неловко. Ответственность наша, разбираемся круглосуточно.
Спасибо, что остаётесь и пишете, вместо того чтобы молча удалить приложение. Мы очень хотим, чтобы через полгода этот текст читался просто как запись о трудном старте.