У минулому я працював у різних середовищах. Настільні програми, ігри, вбудовані речі, веб-сервіси, завдання командного рядка, веб-сайти, звітування про бази даних тощо. Усі ці середовища мали однакову особливість: незалежно від їх складності, незалежно від їх розміру, я завжди міг мати підмножину або фрагмент програми на своїй машині або в середовищі розробників для тестування.
Сьогодні я ні. Сьогодні я опиняюсь у середовищі, основний акцент якого робиться на масштабованості. Відтворення навколишнього середовища є надмірно дорогим. Беручи фрагмент середовища, хоча він правдоподібний (деякі частини потрібно буде імітувати або використовувати в режимі одного примірника, який вони не роблять), якийсь спосіб перемагає мету, оскільки це затьмарює одночасність і завантажує це реальна система зустрічається. Навіть невелика «тестова» система має свої вади. Якщо у вас є 2 вузли та коли у вас 64 вузли, все буде вести себе по-різному.
Мій звичайний підхід до оптимізації (виміряти, спробувати щось, перевірити правильність, виміряти відмінності, повторити) тут насправді не працює, оскільки я не можу ефективно виконати кроки 2 та 3 для важливих частин проблеми (надійність та ефективність навантаження). Цей сценарій не здається унікальним. Який загальний підхід до виконання подібних завдань у таких умовах?
Є кілька пов'язаних питань:
Reproducing the environment is prohibitively costly.
- Скільки коштує помилка на виробництві? А як щодо 2 помилок? У непередбачувані часи (швидше за все, коли більшість користувачів одночасно завантажують систему). Зважте це на витрати на створення мінімального відтворювального середовища - ви можете здати, що це все не надто дорого.
prohibitively costly
.