Наша система: я не могу вам многое рассказать об этом, но это большое SaaS-приложение, обслуживающее многих платящих клиентов.
Каждая часть работы над производительностью / мощностью, которую мы выполняем, выполняется очень осторожно - мы не можем просто попробовать что-то проверить, чтобы убедиться, что они работают.
Первоначально был бы некоторый анализ текущей производительности и мощности, можем ли мы продолжать работать в любом случае.
Если возможно, мы будем воспроизводить проблемы с производительностью в непроизводственной системе, где мы можем профилировать код и вносить экспериментальные изменения. Мы не всегда можем использовать точно такое же оборудование, как и на производстве (на производстве имеется большое количество серверов с очень высокими техническими характеристиками; у dev есть только несколько специализированных блоков тестирования производительности для производственных спецификаций).
Если проблема не может быть осмысленно проанализирована в непроизводственной среде, мы отправим некоторые инструменты в наш код в процессе производства (после тщательного тестирования, чтобы убедиться, что инструменты не влияют на саму систему). Эта аппаратура будет поставляться «выключенной» и включаться выборочно, чтобы собрать достаточно данных.
Как только мы получим точный анализ проблемы, мы рассмотрим возможные решения и, возможно, разработаем прототипы - их можно будет проверить на функциональную корректность.
Обычно мы выбираем наименее рискованный вариант, если их несколько.
Затем будет следовать нормальный процесс выпуска - множество тестов, обзоров кода и т. Д.
Если необходимо, изменение может быть отправлено с «переключателем возврата», который позволяет быстро отключить его в производственном режиме, если возникла проблема.
Существует много потенциальных улучшений производительности, которые мы определили, большинство из которых мы не будем развивать до тех пор, пока не возникнет проблема (если мы в любом случае не выполняем рефакторинг этого компонента программного обеспечения).