Когда матерятся даже ангелы или о великом и могучем обновлении

в 18:49, , рубрики: базы данных, обновление, Разработка веб-сайтов, метки:

Я не уверен, что это история для хабра; с другой стороны, я уверен, что эта история именно для хабра. Так это или нет, пусть судит читатель, а я попробую, насколько, конечно, способен, ее подробно рассказать с использованием большого количества букв и совсем без картинок. Причем так, чтобы меня поняли не только люди тесно связанные с данным видом деятельности.

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

Итак, как у любого «большого» проекта у нашего тоже должен был быть свой сайт с блэк джеком и сами знаете чем. Так вот, этот сайт при подключении нового абонента согласно условиям подключения получал обезличенные данные. Город, улица, дом и какой-то уникальный идентификатор. Задача сайта, получив информацию, отобразить эти точки на карте. Процесс преобразования названия в координаты (широта, долгота) называется прямым геокодированием (есть еще обратная — ну, вы наверное уже поняли ее смысл без объяснений). Так вот, прямое геокодирование требует специфичных данных, которых ни у кого нет, кроме пары известных компаний с их же картами. Правда, у меня была еще одна компания, но ее возможности процесс упрощали довольно слабо.

Так вот, все эти компании, конечно, не ждут всех желающих загрузить свои сервисы большим кол-ом запросов и наглецов бы быстро отсекли, но в нашем случае было все просто. Конечно, абонентов было очень много, но не настолько, чтобы такие крупные компании прочувствовали наглых пользователей в лице «меня». Одной из проблем подобных запросов являются ошибки или большое количество вариантов в ответе. Когда приходил адрес или дом от оператора (а приходило это с помощью специального API на сайте автоматически, то есть если где-то в офисе оператор вбивал нового абонента в своей программе в свою базу, то этот же адрес автоматом попадал на сайт) сайт ставил адрес в очередь и через какое-то время пытался этот адрес перевести в координаты.

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

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

После подготовки всего необходимого обновление было успешно «залито» на сервер заказчика, доступ к которому был только один и только через панель управления. Для знающих людей — никакой. Стоит добавить, что к этому моменту количество «абонентов» в БД сайта уже имело большое количество знаков. В процессе обновления что-то пошло не так, как хотелось бы. Один из самых простых вариантов в этой ситуации — забыть всё это недоразумение и вернуть сайт к его виду ближайшего прошлого. И вот, будучи главным разработчиком в этой маленькой конторке, на программиста + я, решил откатиться прямо на «бэкап», которую мне любезно предоставила панель управления, которую, в свою очередь, установил какой-то крутой админ оператора.

Я проверил все детали, посмотрел содержимое «бэкапа», а точнее, торжественное обещание Панели, что в бэкапе содержится все каталоги, сайт, база данных, настройки и т.д. и т.п. Я вообще всегда отличался чутьем в заднем месте — это отмечали многие работодатели, смотря как работают мои поделки. Почти все поделки предусматривали любое самое невероятное развитие событий (некоторых это даже бесило, не все любят, когда проект предусматривает всё) и очень редко по-настоящему давали неприятный баг. Так вот, мое заднее место, посмотрев на всю эту чудо-панель, почувствовало неладное и я решил связаться со случайно знакомым, админом в этой компании, который отвечал именно за этот сервер (зы. официально я никаких знакомых не имел и обязан был работать только через манагеров). Я постучался к нему в аську и задал простой вопрос: «Слушай вот тут у вас в панели написано, что «бэкап» включает в себя ......" ну классический ответ на классический вопрос: «Да конечно, 100%». «Ну ок» — сказал я и нажал кнопку…

Не знаю, сколько конкретно времени прошло, но панель управления выдала фразу: «Система восстановила сайт из архива за .....». Ок, подумал я, и обновил сайт в другой вкладке. Он почему-то заругался странными ошибками и я, еще не особо поняв произошедшее, полез смотреть глубже. В этот день и девушки и женщины и даже сис. админ узнали, что есть ситуации, когда даже я, который никогда за 5 лет ни ни ни, могу четко и громко высказать все свои знания могучего русского. Фактически передо мной был пустой сайт без кода, без базы. Все, кто повернулся в этот момент, посмотреть на меня, и без слов понимали всю трагичность ситуации. В истории было много всякого, и ситуаций неприятных, но еще никогда за 5 лет работы я не выражал свои эмоции настолько глубоко и четко. Кто-то попытался спросить, что происходит, но быстро понял, что сейчас лучше меня не трогать. От слов лучше не подходи и даже не заикайся…

Код сайта у меня был, причем любой версии и эту проблему я мог решить, но где взять базу абонентов и вообще кто мне ее даст… Это была жо… Я повторил весь свой словесный эпитет знакомому, который до этого меня уверял в полной безопасности операции и теперь он тоже понимал, что это не только моя ж..., но и его в том числе. Доступ он мне, конечно, НЕ дал, но готов был выполнять любые мои требования, хоть ползать под стулом, дабы свершилось чудо. Всю историю, что мы делали в этот вечер, я пересказывать не буду, но к концу дня сайт заработал и БД было восстановлена. В этот момент я еще раз продемонстрировал весь свой словарный запас, взял пачку сигарет и двинулся в курилку в сопровождении всех коллег, которые, в очередной раз поняв все без дополнительных слов, пошли со мной услышать невероятную историю длинной в пару часов и не одну сигарету из пачки.

Эту историю вообще знают только несколько человек — коллеги, админ оператора и я. Для других обновление сайта прошло успешно и ничего в этот день экстраординарного не происходило (разве что сайт по какой -то причине был недоступен несколько часов, обновление долго «заходило»).

После этого случая моя задница стала еще более внимательной ко всем действиям, да и доверять я стал только ей и никому больше на долгие годы! Многие еще спрашивают, а как ты вообще смог восстановить базу? Ох… это блин магия, наверное, которая приходит с опытом и ты знаешь немного больше в этих вопросах, а еще повезло, что создатели этой панельки (кстати, крутая компания, да и панель очень известная) были криворуки не только в вопросах «бэкапа», но и в других, что позволило произойти чуду из чудес и спасти мой зад от еще больших приключений.

P.S. Сам проект уже давно прекратил свое существование и от него осталась эта незабываемая история на всю жизнь.

Автор: hockfan

Источник

Поделиться

* - обязательные к заполнению поля