вторник, 21 сентября 2010 г.

Установщики

Губит людей не пиво.


Старый анекдот. Султан постоянно посылает евнуха привести очередную жену их гарема. В результате евнух не выдержал нагрузки и помер, хотя султан продолжал отлично себя чувствовать. Мораль: убивают не женщины, а беготня за ними (или другой вариант: "утомляет не любовь, утомляют хлопоты").

Я бы перефразировал: убивает не development, а deployment. 20-30% проблем, с которыми я регулярно сталкиваюсь на работе, связана не с самим софтом, а с его установкой и конфигурацией. Бывает, тратишь несколько дней, чтобы понять: "там-то я пропустил запятую". И найденная ошибка обычно ничему тебя не учит, не помогает в будущем работать эффективнее.

Наверное, эта обычная проблема для SOA: легко протестировать каждый сервис в отдельности, но становится тяжело протестировать и обновить всю систему в целом. У нас даже есть два специальных человека, которые занимаются исключительно подготовкой и установкой очередного релиза (это не программисты, и не тестировщики, а именно "установщики"). Процесс установки или обновления каждого сервиса автоматизирован, но всё равно надо знать, в какой последовательности что устанавливать, что от чего зависит. И самое сложное - как откатить назад неудачный релиз.

Автоматизировать обновление всей системы в целом в принципе можно было бы. Но регулярно меняется структура, зависимости между сервисами, количество серверов и их физическое расположение.

3 комментария:

Dmitry комментирует...
Этот комментарий был удален автором.
KosMos комментирует...

"И самое сложное - как откатить назад неудачный релиз."
Вал, может я чегой-то не понимаю в вашей специфике, но уже давно как существуют виртуальные машины со снепшотами. Откат к снепшоту - дело даже не минут, а секунд...

Valik комментирует...

Да, всё это есть, этим пользуются. Но, допустим, часто бывает, что надо надо откатить не всё целиком, а только один-два глюкавых сервиса (при этом убедится, что всё остальное по-прежнему будет работать).

База данных - тоже интересный момент. У нас load balancer для сервисов, но не для базы. Таким образом, одна база должна в некоторый момент времени корректно работать и с новой, и со старой версией сервиса (и наоборот, обновление базы никогда не должно ломать старый сервис). Поскольку наш сайт работает 24x7, то это важно.

Ratings by outbrain