будни

Тормозит приложение.

На днях написала топ-менеджер одной ритейл-сети. Тормозит мобильное приложение. Медленно работает поиск, добавление в корзину, оформление заказа. Нажимаешь на кнопку и ждешь…

В ритейле каждая доля секунды задержки — это люди, которые не купили товары, прямые потери. Мобильные разработчики не исправляют ситуацию. Переводят стрелки на бэкендеров, мол это бэкенд тормозит. Как разобраться, на чьей стороне сломалось и починить проблему?

Хорошие разработчики собирают аналитику по производительности своих приложений — какое время занимают ключевые действия типа «открытие главной», «поиск», «добавление в корзину», «оплата». Это называется Real User Monitoring.

Дальше мы кладем эту информацию на график: на оси Х — время, которое занимает действие, на оси Y — количество пользователей. Столбики слева — хорошо. Длинный хвост справа — это несчастные, у них, например, экран оплаты грузится минуту! Эти люди поменяют приложение, если у них будет выбор!

Но это средние значения. Что, если приложение хорошо работает 23 часа в сутки, а по вечерам, в час-пик, в самое важное время, начинает тормозить?

Тут поможет другой классический график: на оси Х — время (вчера, сегодня в течении дня, завтра), на оси Y — время ответа (задержка, latency). Три черты — среднее время, медиана и 95 персентиль. То есть за сколько миллисекунд происходит оплата в среднем, у медианы и за какое время происходит оплата у 95% быстрых пользователей? Он помогает отследить, нет ли тормозов в определенное время суток или в день недели.

Составляем эти два графика для ключевых функций и видим, тормозит наше приложение или нет. По числам оцениваем, стало оно быстрее или медленнее.

Итак, шаг первый — замерить экраны и действия.

Теперь можно переходить к поиску первопричины. Приложение может тормозить само по себе или из-за медленного бэкенда.

Тут мы опираемся на те же два графика, но уже смотрим скорость ответа бэкенда.

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

Хотите заказать классную разработку или аудит? Обращайтесь! @samatg https://fansdev.ru

Есть старая шутка, что в программировании есть только две сложности — инвалидация кеша и придумывать названия вещам.

Меня больше достают интеграции. Когда разные системы должны работать вместе.

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

Это успешное медиа, которое заказало спецпроект у подрядчика. Подрядчик сделал классный апп: даже авторизация в админку не просто по логину и паролю, а по OTP — одноразовыми кодами, всё как у взрослых.

Только коды эти приходят по почте. Поэтому они попросили завести в почтовой системе клиента адреса для отправки и получения. Что может пойти не так? Да всё!

Сначала происходит сломанный телефон между админом клиента и заказчиком и оказывается, что желаемые адреса уже заняты. Админ в конце-концов заводит пользователя для отправки писем и групповую рассылку для получателей.

Потом выясняется, что хостинг подрядчика режет подключения к SMTP портам. Решили временно использовать почтовый сервер подрядчика.

Жду, когда эти письма начнут попадать в спам.

Если можно обойтись без внешних зависимостей и интеграций — лучше без них!

Единственный момент, когда мы используем в работе чаты — это для координации во время крупных запусков. Близится 1 сентября и на этой неделе мы запустим новую LMS (образовательную систему), которую разрабатывали для Вебиума весь прошлый год.

Уж вроде не мальчик, а каждый раз чувство, будто стою на краю водослива плотины (была у меня в детстве в деревне такая, всего 3-4 метра высотой и метров 10 в ширину, но внизу — бетонные блоки) и нужно перейти на другой берег по тоненькой трубе.

Когда по ошибке отправил 2000 писем на продакшене вместо 10 (слава богу, все две тысячи на наши адреса, не игроков)

Я ищу клиентов. Команда супер крутых питонистов и фронтендеров освобождается с июня. В комплекте идут архитектор, продакт-дизайнер и два технических директора — я и мой партнер Федя.

Хотите запустить стартап или быстро сделать проект в крупной компании? — это ваш шанс. Пишите мне в личку @samatg или на почту s@samat.me

Интересно: с одной стороны, вся эта движуха с нейросетями, агентами и прочим «запустим продукт за неделю».

С другой стороны, больша́я часть наших проектов — «разобраться в огромной 20-летней системе, половина которой на хранимках, половина в MSSQL, половина в PostgreSQL (хорошо если не Oracle), а большая часть в C++ и Delphi, чтобы вернуть прозрачность и управляемость, опять быстро вносить изменения / запустить тот же бизнес в новой географии».

В таких проектах нейросети тоже полезны, но главный ограничитель этих задач — не в скорости программирования или числе разработчиков (рук). Там главное — системное мышление, опыт, умение разговаривать с людьми, здравый смысл и вкус. ❤️

«Название компании потом запикаем», «часть про *** и *** нужно вырезать целиком» — вот лейтмотив вчерашней записи подкаста про IT-безопасность.

Строгий продюсер запрещает что-либо обещать, так что пока рано подписываться в iTunes, продолжаем работать...

Мне в проектах больше всего нравится первая установочная встреча с клиентом и нашими разработчиками. Контракт подписан, предоплата внесена и мы с клиентом и программистами вместе отравляемся в путешествие «проект».

Впереди нас ждут сотни макетов дизайна, десятки писем и созвонов, тысячи задач в чеклистах и сотни тысяч строк кода в тысячах коммитов. Результат — день Х запуска или постепенная выкатка в течении нескольких дней. Федя — гениальный реализатор, так что ему, наверное, больше нравится день сдачи проекта.

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

Испытал все это вчера. В 2021 году начинаем делать коммерческое медиа с нуля, да ещё и по очень сложной теме. Вообще без рекламы! Без смс. Сам в шоке. Пока проект секретный, но, надеюсь, смогу делиться ходом дел в процессе.

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

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