Почти каждая переделка, за которой к нам приходят, начиналась одинаково: систему спроектировали под десять пользователей и один склад, а через два года в ней триста человек и пять филиалов. Код при этом обычно нормальный — не выдерживает фундамент.
Четыре вопроса до кода
Сколько человек работает одновременно в пик. Не штатная численность, а число людей, которые реально нажимают кнопки в понедельник утром. От этого зависит, как устроено чтение данных и нужен ли кэш.
Сколько документов в день и сколько накопится за три года. Таблица, которая мгновенно работает на десяти тысячах строк, на десяти миллионах ведёт себя иначе. Индексы и структура выборок закладываются под второй объём, а не под первый.
Что происходит в сезон. У многих компаний нагрузка неравномерна: конец месяца или декабрь дают пик в несколько раз выше среднего. Система, рассчитанная на среднее, ляжет именно тогда, когда она нужнее всего.
Что должно работать при отказе внешней системы. Если 1С недоступна, продолжают ли работать продажи? Ответ «нет» — тоже ответ, но его надо дать осознанно.
Три ошибки, невидимые на тестовых данных
Отчёт, читающий всю историю при каждом открытии. На сотне записей мгновенно, на годовом объёме — минуты и нагрузка на базу.
Список без постраничной выдачи. Работает, пока позиций двести. На двадцати тысячах страница не открывается вовсе.
Синхронный вызов внешнего сервиса в середине операции. Пока сервис отвечает быстро, никто не замечает. Когда он отвечает двадцать секунд, виснет оформление заказа — и виноватой считают вашу систему.
Ни одна из трёх не проявляется на демо-данных. Поэтому проектируют под реальный объём и проверяют нагрузочным тестом до запуска, а не после первого сезона.
Почему это дешевле решить заранее
Изменить архитектуру после запуска — значит переписать структуру данных и способ доступа к ним. Стоит это обычно дороже первоначальной разработки, потому что параллельно надо не сломать работающий бизнес. Решить на проектировании — стоит недели размышлений и нескольких неудобных вопросов.
Смотрите также: разработка программного обеспечения, программа для учёта, веб-приложения, личный кабинет, техническое задание.