Паштет из гнилых транзакций
Feb. 18th, 2005 12:08 pmВ школьные годы довелось работать на рыбоперерабатывающем заводе. До сих пор не понимаю людей, покупающих "паштет шпротный". А ведь раньше думал, что уж продукты питания готовятся в стерильных условиях и для людей.
Теперь вот в банке работаю. Всего-то и делов: получить транзакцию, прочитать, записать в базу данных. Ну еще проследить, чтоб данные о транзакции никому на сторону не попали.
Первое время для меня каждая транзакция была чем-то святым: если уж она пришла, ее надо обработать, провести, сохранить - все же дело с деньгами связаное.
Потом стал понемногу понимать механику банка.
Транзакции приходят без указания номера счета, без указания типа сделки (продажа-покупка-перевод?), с левыми данными внутри или вовсе в испорченном файле. После того, как они к нам попали, специальная программа распределяет их по клиентам, теряя по пути часть транзакций (в иные дни - по полтысячи штук). То, что до нас все же добралось - нам и обрабатывать.
Попав к нам, транзакции неделями валяются в отстойнике, пребывая в неопределенном состоянии. По месяцу лежат и ждут патча к базе данных, который так и не приходит. Пропадают из отстойника в неопределенном направлении, не вызывая никакой реакции окружающих (ну ладно, я их нашел и скопировал обратно).
Вижу, на одном счету какая-то левая разница. Интереса ради, делаю поиск всех не прошедших транзакций этого счета. Нахожу 2 штуки, все с ошибками. Посылаю обратно на исправление. Получаю ответ, обрабатываю... теперь на этом счету левая разница ровно в 3 раза больше.
Звонят клиенты: "не обрабатывайте транзакции типа 320, а то после вас вообще не поймешь, что там и как. Лучше мы их в базу данных вручную впишем".
Что там китайский программист понаписал - вообще словами не объяснить. Про массивы парень понятия не имеет, сделал 10 переменных попа1, попа2... попа10 и счетчик. И каждый раз IF ставит - "если счетчик равен 1, данные в переменной попа1, если 2 - данные в 2...". Не лень ему. Зато программка уже под мегабайт.
"А этот тип транзакций мы автоматически не обрабатываем", - говорит он - "ты его вручную скопируй, запусти, получи результат, поправь, скопируй в другое место, подожди полчаса и проверь результат".
Коллега нашел три транзакции, которые неправильно записаны в базу. Вижу - моя вина, мне письмо про них пришло, а я его проигнорировал. Месяц прошел - всем пофиг было.
А база данных тоже молодцом - написана с ошибками. Прислали патч - транзакции проходят, ордеры перестали. Без патча - транзакции не хотят идти. Приходится вручную удалять транзакцию, вызывающую облом базы данных и снова пробовать остальные. А удаленная просто пропадает.
Так и живем.
И мы доверяем ЭТОМУ свои деньги?
P.S. Да, а насчет паштета шпротного... Нам выкатывали чаны сгнившей селедки, мы у нее отрезали головы и хвосты и вытаскивали кишки, а тушки кидали в другой чан. На паштет шли не тушки, а то, что мы отрезали - головы, хвосты и кишки гнилой селедки.
P.P.S. Зато теперь я знаю, в чем заключается ВЕЛИКАЯ БАНКОВСКАЯ ТАЙНА!
Теперь вот в банке работаю. Всего-то и делов: получить транзакцию, прочитать, записать в базу данных. Ну еще проследить, чтоб данные о транзакции никому на сторону не попали.
Первое время для меня каждая транзакция была чем-то святым: если уж она пришла, ее надо обработать, провести, сохранить - все же дело с деньгами связаное.
Потом стал понемногу понимать механику банка.
Транзакции приходят без указания номера счета, без указания типа сделки (продажа-покупка-перевод?), с левыми данными внутри или вовсе в испорченном файле. После того, как они к нам попали, специальная программа распределяет их по клиентам, теряя по пути часть транзакций (в иные дни - по полтысячи штук). То, что до нас все же добралось - нам и обрабатывать.
Попав к нам, транзакции неделями валяются в отстойнике, пребывая в неопределенном состоянии. По месяцу лежат и ждут патча к базе данных, который так и не приходит. Пропадают из отстойника в неопределенном направлении, не вызывая никакой реакции окружающих (ну ладно, я их нашел и скопировал обратно).
Вижу, на одном счету какая-то левая разница. Интереса ради, делаю поиск всех не прошедших транзакций этого счета. Нахожу 2 штуки, все с ошибками. Посылаю обратно на исправление. Получаю ответ, обрабатываю... теперь на этом счету левая разница ровно в 3 раза больше.
Звонят клиенты: "не обрабатывайте транзакции типа 320, а то после вас вообще не поймешь, что там и как. Лучше мы их в базу данных вручную впишем".
Что там китайский программист понаписал - вообще словами не объяснить. Про массивы парень понятия не имеет, сделал 10 переменных попа1, попа2... попа10 и счетчик. И каждый раз IF ставит - "если счетчик равен 1, данные в переменной попа1, если 2 - данные в 2...". Не лень ему. Зато программка уже под мегабайт.
"А этот тип транзакций мы автоматически не обрабатываем", - говорит он - "ты его вручную скопируй, запусти, получи результат, поправь, скопируй в другое место, подожди полчаса и проверь результат".
Коллега нашел три транзакции, которые неправильно записаны в базу. Вижу - моя вина, мне письмо про них пришло, а я его проигнорировал. Месяц прошел - всем пофиг было.
А база данных тоже молодцом - написана с ошибками. Прислали патч - транзакции проходят, ордеры перестали. Без патча - транзакции не хотят идти. Приходится вручную удалять транзакцию, вызывающую облом базы данных и снова пробовать остальные. А удаленная просто пропадает.
Так и живем.
И мы доверяем ЭТОМУ свои деньги?
P.S. Да, а насчет паштета шпротного... Нам выкатывали чаны сгнившей селедки, мы у нее отрезали головы и хвосты и вытаскивали кишки, а тушки кидали в другой чан. На паштет шли не тушки, а то, что мы отрезали - головы, хвосты и кишки гнилой селедки.
P.P.S. Зато теперь я знаю, в чем заключается ВЕЛИКАЯ БАНКОВСКАЯ ТАЙНА!