Пару тижнів тому у нашій головній Базі на роботі одвалився тригер на одній із таблиць. Навіть не один а п’ять, але то не так важливо. Одвалився собі тихенько і ніхто цього не помітив. Да, треба зауважити що відвалу тригера посприяла відсутність транзакцій у MyISAM, і тут ще можна написати багато слів про використання MySQL для критичних даних взагалі і особливо без підтримки транзакцій, цілісності по зовнішнім ключам і теде і тепе, але то зовсім інша історія. Як казав один відомий дядько, маємо те що маємо.
В результаті відвалу тригера перестало мінятись певне поле у таблиці. Начебто нічого страшного, тільки все це привело вчора до конфлікту IP на одному із серверів доступу, завантаженню його ядер на 100% і вранішнього дзвінка начальства. Телефон мене розбудив, але я його успішно проігнорував. Тим паче що я не адмін і стан якихось там серверів - не моя парафія. Тим паче що систему повернули в попередній стані і єдиним наслідком цієї події стала неможливість перевести кілька десятків абонентів на "білі" IP. Нічого критичного начебто. Та не зважаючи на це я вчора весь день провисів на телефоні у конференції з начальством, адмінами і другим програмістом намагаючись пояснити начальству що це баг. І його треба виправити. Начальство не доганяло. В кінці кінців відклали рішення цього питання до понеділка.
Сьогодні історія повторилась: замість того щоб виправити баг пропонували зробити мегаінтерфейс з суперможливостями. Щоб повністю усі (навіть тимчасові) мережі тримати в базі. Навіть ті які можна обчислити із номеру VLAN'у. Навіть ті які один раз прописані і ніколи не міняються. "Вот завтра мнє захочєтся сделать так і так - а я нє смагу етого сдєлать!". А оскільки слово "гнучкість" і "універсальність" я зараз чую по сто разів на день я психанув і запропонував взагалі викинуть будь-який високорівневий інтерфейс користувача і керувати серверами вручну. Мегауніверсальне і супергнучке рішення! Слава богу, моє слово ще чого варте у цьому відділі. А то просто плюнув би і пішов звідти - нехай самі длубаються у тих тонах лайна, милиць і підпорок на PHP що гордо іменується "База"! На кілька сотень тисяч рядків коду визначено не більше десятка функцій! Про code reuse взагалі мова не йде. ACL реалізовано без усякої системи розвісистою низкою if-ів (навіть не switch!) а збоку ще прикручено smarty, з десяток тригерів і кілька stored procedures. Звісно ніяких code conventions! Coding style, можна сказати, відсутній.
На те щоб поставити на місце тригер і виконати один запит було витрачено час трьох спеціалістів і одного начальника протягом двох днів. Я вже не кажу що починати день із дзвінка начальства не сприяє доброму гумору.
В результаті відвалу тригера перестало мінятись певне поле у таблиці. Начебто нічого страшного, тільки все це привело вчора до конфлікту IP на одному із серверів доступу, завантаженню його ядер на 100% і вранішнього дзвінка начальства. Телефон мене розбудив, але я його успішно проігнорував. Тим паче що я не адмін і стан якихось там серверів - не моя парафія. Тим паче що систему повернули в попередній стані і єдиним наслідком цієї події стала неможливість перевести кілька десятків абонентів на "білі" IP. Нічого критичного начебто. Та не зважаючи на це я вчора весь день провисів на телефоні у конференції з начальством, адмінами і другим програмістом намагаючись пояснити начальству що це баг. І його треба виправити. Начальство не доганяло. В кінці кінців відклали рішення цього питання до понеділка.
Сьогодні історія повторилась: замість того щоб виправити баг пропонували зробити мегаінтерфейс з суперможливостями. Щоб повністю усі (навіть тимчасові) мережі тримати в базі. Навіть ті які можна обчислити із номеру VLAN'у. Навіть ті які один раз прописані і ніколи не міняються. "Вот завтра мнє захочєтся сделать так і так - а я нє смагу етого сдєлать!". А оскільки слово "гнучкість" і "універсальність" я зараз чую по сто разів на день я психанув і запропонував взагалі викинуть будь-який високорівневий інтерфейс користувача і керувати серверами вручну. Мегауніверсальне і супергнучке рішення! Слава богу, моє слово ще чого варте у цьому відділі. А то просто плюнув би і пішов звідти - нехай самі длубаються у тих тонах лайна, милиць і підпорок на PHP що гордо іменується "База"! На кілька сотень тисяч рядків коду визначено не більше десятка функцій! Про code reuse взагалі мова не йде. ACL реалізовано без усякої системи розвісистою низкою if-ів (навіть не switch!) а збоку ще прикручено smarty, з десяток тригерів і кілька stored procedures. Звісно ніяких code conventions! Coding style, можна сказати, відсутній.
На те щоб поставити на місце тригер і виконати один запит було витрачено час трьох спеціалістів і одного начальника протягом двох днів. Я вже не кажу що починати день із дзвінка начальства не сприяє доброму гумору.