поздно развивать. Оплата страховки от пожара кажется бессмысленной ровно до того момента,
как ваш дом сгорает дотла.
Попытайтесь максимально разграничить свои основные и запасные системы. Одна из
причин, по которым люди арендуют ячейки в банке, как раз связана с тем, чтобы сохранить что-
то важное в случае пожара или кражи. Той же цели служит резервное копирование данных на
серверах, расположенных вне офиса: если с основными компьютерами компании что-то
произойдет, данные сохранятся в целости в другом месте.
Системы обеспечения бесперебойной работы, взаимосвязанные с основными системами,
могут нести с собой дополнительные риски. Худшее, что вы можете сделать, — это превратить
систему резервного копирования в часть системы, которую пытаетесь защитить. К примеру, будет
плохо, если поломка генератора приведет к проблемам в основной системе энергообеспечения
дома и внезапному отключению электричества. Аналогичным образом, использование
автоматизированной системы копирования данных окажется совершенно бесполезным, если в
результате ее работы ваши изначальные файлы будут уничтожены.
По возможности избегайте наличия в системе
Если функционирование вашей системы зависит от критически важных входных элементов или
процессов, то стоит создать план действий на случай, если эти элементы недоступны, а рабочие
процессы нарушены. Что произойдет, если откажет ваша основная система?
Заранее планируйте механизмы обеспечения бесперебойной работы для всех важнейших
систем, и они станут настолько гибкими, насколько это возможно.
291
Тестирование в условиях стресса
Предположим, вы создали гибкую систему, однако хотите убедиться в том, что она
действительно работает так, как вам надо. Каким образом вы могли бы ее протестировать?
Тестирование в условиях стресса представляет собой процесс определения границ
системы с помощью имитации определенных условий среды. Вместо того чтобы мыслить,
подобно инженеру системы, вы (с помощью тестирования в условиях стресса) выступаете от
имени «демона-разрушителя». Вы задаетесь вопросом: что нужно сделать, чтобы разрушить
созданную вами систему?
В самом начале работы над «Сам себе МВА», каждый раз, когда я загружал новую версию
списка рекомендованной для чтения литературы, мой веб-сервер «погибал с музыкой»: система
просто не справлялась с наплывом людей, пытавшихся зайти на мой сайт. Я несколько раз
выбирал новые системы, но каждый раз их мощностей было недостаточно.
Проблемы с сервером продолжались до тех пор, пока я всерьез не задумался о тестировании
в условиях стресса. Вместо того чтобы ждать притока посетителей, вырубавшего мой сайт, я
решил намеренно «разрушить» свою систему.
С помощью автоматизированного инструмента3 я имитировал огромное количество
посетителей, одновременно заходящих на мой сайт. Этот инструмент последовательно
увеличивал количество обращений к сайту и рассчитывал время отклика. По мере роста
количества обращений производительность сервера снижалась до тех пор, пока он не рухнул.
С помощью данных тестирования в условиях стресса я произвел целый ряд значительных
улучшений инфраструктуры и системы сайта. Теперь тысячи людей могут одновременно
посещать мой сайт, практически не мешая друг другу.
Стресс-тесты помогут вам лучше понять, как работают ваши системы. Если вы занимаетесь
производством, то могли бы имитировать одновременное поступление тысячи заказов и
проверить, сможете ли вы с ними справиться. Если вы занимаетесь поддержкой пользователей,
то можете имитировать одновременное поступление тысяч вопросов или жалоб. Ваша
способность к тестированию ограничена только временем и воображением — позвольте своему
внутреннему демону вырваться на волю и решите все основные проблемы до того, как они
помешают вашим реальным клиентам.
Планирование сценариев
292
Никто не способен предсказать, что случится завтра, не говоря уже о том, что произойдет
через десять лет. В сущности, многие ваши планы и цели зависят от обстоятельств, находящихся