google web font

суббота, 23 июля 2011 г.

Достоверный источник

На нашей юмористической работе никаких башоргов не надо. Самый юмористический ресурс, который я читаю — это еженедельный отчёт техподдержки, который генерируется системой автоматически. Именно оттуда я узнал про эту загадочную историю.

Введение. Центробанк каждый день публикует курсы валют в свободном доступе для того, чтобы другие банки могли своевременно его узнавать. Для того, чтобы автоматизировать импорт, центробанк предоставляет "API" — XML-файл с названием в виде текущей даты, который можно получить по определённому адресу у них на сайте. Поскольку наша система работает с деньгами, у неё в комплекте есть скриптик, который вытаскивает этот XML и засовывает курсы нужных валют в базу данных. Согласно моим наблюдениям (пока я расплачивался с ипотекой, мне приходилось следить за курсом доллара), ЦБ РФ публикует курс на следующий день не раньше часа дня, иногда даже после двух.



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

Тестировщики запустили скрипт, увидели отсутствие ожидаемого результата и сообщение в логе, что-то типа "Can't parse XML file: no such file or directory" — ну, в общем, всё понятно, вроде. Отдали баг программистам, чтобы исправляли.

Программист посмотрел на этот скрипт, почесал репу и всё, что смог придумать — это заменить модуль, который забирает XML-файл с сайта центробанка — с LWP::Simple на LWP::UserAgent. то есть, по сути, ничего не изменил. Отдал исправление на тестирование, тестировщики запустили скрипт, увидели ожидаемый результат (в базе обновился курс валют) — и отдали исправленный вариант техподдержке. Те внедрили исправление заказчику, обновили курс валюты и успокоились.

А потом я увидел всё это шевеление в отчёте, посмеялся как следует и написал в свой маленький уютненький бложик эту поучительную заметку. Поучительной она оказалась потому, что все участники этого процесса делали какие-то телодвижения, которые можно было не делать вообще и, судя по всему, не понимали, что толкут воду в ступе. Ну, кроме, может, программиста: по его патчу сложно понять, реально ли он понимал, в чём проблема, или просто исправил, что нашёл.

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

Так чему же учит эта история? Ну, это же очевидно: тому, что надо сначала проверить корректность входа и только потом уже жаловаться на некорректный выход.

Едиснтвенное, что мне непонятно: это есть ли в этой истории хоть один участник, который всё сделал правильно? Ну, кроме самого скрипта, сконечно.

Комментариев нет:

Отправить комментарий