?

Log in

No account? Create an account
   Journal    Friends    Archive    Profile    Memories
 

Impressed - morfizm


Feb. 15th, 2012 07:50 pm Impressed

From the story how NetFlix ported to AWS:
http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html

"...
3. The best way to avoid failure is to fail constantly.
...
One of the first systems our engineers built in AWS is called the Chaos Monkey. The Chaos Monkey’s job is to randomly kill instances and services within our architecture. If we aren’t constantly testing our ability to succeed despite failure, then it isn’t likely to work when it matters most – in the event of an unexpected outage."

7 comments - Leave a commentPrevious Entry Share Next Entry

Comments:

From:_m_e_
Date:February 16th, 2012 05:12 am (UTC)
(Link)
ага, netflix молодцы.

Я полгода назад создал race condition в базе данных, вызвав у соседней компоненты не-нулевое количество ошибок (они проигрывали race и вторая стадия их апдейтов падала). Они пытались ругаться, я им привел в пример netflix - мол ошибки в облаке надо ожидать, а я для них chaos monkey написал, должны сказать спасибо. Им пришлось согласиться, и пофиксить свои баги.
From:archaicos
Date:February 16th, 2012 05:15 am (UTC)
(Link)
Reminded me one case of simple yet very effective VM testing: create, start, stop, reset, resume, delete VMs at random, many many times, multiple VMs at the same time. Found a lot of race conditions and other things.
From:me_milady
Date:February 16th, 2012 07:48 pm (UTC)
(Link)
Из подобного, мы делали вот так: делаешь сайт, а потом удаляешь все данные из базы данных (как бы сломался) и проверяешь что даже в такой ситуации на нём не вылазит ошибок.
Т.е. страницы будут пустые, но "Fatal error" нигде не должно быть, и других Error-ов и Notice-ов.
From:morfizm
Date:February 16th, 2012 08:09 pm (UTC)
(Link)
А пробовали базу просто отключить/деинсталлировать/прибить процесс? Или через dd прописать нулями случайные места на партиции, где база физически лежит?

Это, по-моему, с большей вероятность может произойти, чем удаление данных командой DELETE.
From:me_milady
Date:February 16th, 2012 08:17 pm (UTC)
(Link)
Насчёт "отключить базу" - эту ошибку (ошибку соединения с базой) программисты не забывают обрабатывать, а вот понадеяться что "раз соединились, значит нужные данные там есть" в некоторых местах могут забыть.

From:morfizm
Date:February 16th, 2012 08:22 pm (UTC)
(Link)
А как насчёт повреждения целостности файлов базы?

Ещё - для самой базы можно fuzzer написать.
Чтобы ходил и в случайных таблицах случайные данные менял на случайные. (Ну, понятно, "случайность" можно подкрутить так, чтобы было покрытие как можно большего количества по смыслу разных ситуаций).
From:dennyrolling
Date:February 18th, 2012 11:41 pm (UTC)
(Link)
для бизтока я писал тестовый тул который брал все сиквеловские stored procedures и вписывал в начало "если рандом больше чем заданый процент то вернуть фейл". нашел тонну багов, но никто их так и не починил. я хотел еще написать "вернуть неконсистент данные", но мое время там уже закончилось.