Пузыри. Айти для детей и их родителей

Иван Бевуч

Автор начал работать в IT в 2008 году. Видел отрасль с разных сторон, видел много смешного и грустного. Видел, как системы создавались и как они разваливались на части… И теперь готов поделиться этим всем с вами, чтобы вы тоже понимали, как оно было, есть и будет. Эта книга поможет приподнять занавес магического мира айти и проникнуть за кулисы. Для всех, кому интересно это по разным причинам. Тем, кто уже все знает сам, эта книга тоже будет полезна, потому что всего не знает никто.

Оглавление

Пузырь безопасности

— Борис Николаевич, к вашему Антону претензий нет. Даты — это очень и очень важно. Но обозначенную «Проблему-2000» вы так и не раскрыли в ходе лекции.

— Михаил Сергеевич, извиняюсь, память старая… Запамятовал. В следующий вторник обязательно расскажу.

— Что кроме нее?

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

— Специалиста по ИБ?

— Специалиста по общению с ИБ.

— Если бы я был японцем, я бы сказал:

Каждый диалог

С вами сердце скорбью

Наполняет мне.

Лекция от 29.10.2019

— Всем ку! Мы в прошлый раз разглагольствовали целую лекцию про даты, а «Проблема-2000» опять мимо. Давайте быстренько. На дворе рубеж третьего десятилетия двадцать первого века. Те, кто писал программы в начале девяностых прошлого века, особо не думали о проблемах календарей. Сотрудники передовых многомиллиардных корпораций не думали о том, что их детища проживут пять-десять лет и перешагнут рубеж тысячелетия. Что уж говорить о сотрудниках более мелких продуктовых компаний. Хотя официально рубеж вроде бы перешагнулся с 00 на 01, а не с 99 на 00, но именно смена с 99 на 00 грозила всему миру. Из-за этого отвратительного мученичества с датами, а также еще и из-за крайне невысокой производительности компьютеров того времени считать биты было необходимостью. На один символ два бита. Еще два бита на каждый разделитель. А выкидывание двух лишних символов из каждой даты («19») позволяло сэкономить четыре бита и чуть-чуть сократить трудоемкость операций над ними. Сделали и забыли, другие тоже сделали и забыли, третьи… Четвертые поставили ПО и решили больше не обновляться, пятые поставили, но больше обновлений не прилетало от шестых, потому что они закрылись и разбежались. И вот в какой-то момент времени оказывается, что компьютеров на планете десятки миллионов, на каждом десятки программ, компьютеры замешаны уже практически во всех сегментах человеческого бизнеса… И большая часть экземпляров используемого ПО, то есть сотни миллионов инсталляций, считает, что после 1999 года идет 1900-й. Точнее, после 99 идет 100, что могло запросто считаться и как 19100.

— Возникала натуральная квантовая неопределенность. Каждая программа могла умереть или жить дальше при начале 2000 года. И только позиция наблюдателя, который посмотрит в программный код, могла внести ясность в эту неопределенность. Это, конечно, шутка, квантовой неопределенностью тут и не пахнет. Обычная такая, неквантовая… Человечество спохватилось своевременно, что-то обновили разработчики, что-то поменяли пользователи: подкрутили в исходниках, где это было возможно, либо перешли на новые системы, где нет. Также некоторым системам было индифферентно, какой на дворе год, хоть 1601-й, хоть 2038-й. Калькулятор и пасьянс «Косынка» будут служить вам верой и правдой вне зависимости от года. Человечество преодолело проблему малой кровью.

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

— При этом не стоит забывать, что «Проблема-2000» была не только в 2000. Она случалась каждый год, но в сильно меньших масштабах. Вот представьте, разработчик ПО добавляет выбор года из списка на экран. Неважно, на какой, просто выбор года из списка. В техническом задании сказано — «год должен быть этот и предыдущий». Разработчик доблестно выполняет требование, прописывая ручками номер «этого» и номер «предыдущего». На этапе тестирования это проходит незамеченным… Как минимум потому, что с таким разработчиком наверняка там будет огромный перечень других, более наглядных ошибок. Заказчик получает свое ПО, начинает пользоваться, все довольны (чаще нет). И вот Рождество (у бездуховных), Новый год (у православных), шампанское, мандарины, каникулы. Все возвращаются в рабочий ритм в начале января, идут в систему, чтобы ввести первый заказ в новом году, а система говорит: «Ничего не знаю, такого года не существует, он не похож ни на тот, который был этот, ни уж точно на предыдущий».

Слова «этот» и «предыдущий» Борис Николаевич выделил в монологе и интонацией, и жестикуляцией.

— Где-то год не использовался в явном виде, а хранился в неявном. Там особо одаренные также могли зацементировать «1997» или «2018», а дальше осталось только дождаться нового года. У которого будет тот же номер, если верить системе. Честно признаюсь, лично я раза два-три встречал Новый год, переживая… Когда в 00:15—00:30 страх брал верх и я лез проверять, работает ли та или иная система. Не начудили ли мои архаровцы. Обычно это связано было с проверкой систем, которые в эксплуатацию запускались в декабре. Один раз точно я был не уверен в себе, в том, что сам не забыл все сделать по-человечески. Но в моих случаях, к счастью, все работало. Зато примеров, в которых январь оборачивался колоссальным факапом, я слышал несколько, а в целом по планетке их была не одна тысяча явно.

Солнце вновь поддалось собственной орбите и перестало мешать лекции. Борис Николаевич с облегчением продолжил:

— По моим ощущениям любой, кто имел опыт, связанный с разработкой ПО… Я говорю про ПО, которое потом будут использовать несколько других человек. Ваши лабы в институте, к сожалению, не в счет. Так вот, любой может вспомнить одну или несколько подобных историй, связанных с датами и временем29. Поэтому про даты речь и шла на прошлой лекции — даты как хороший пример проблем, возникающих из-за неявности требований, недальновидности разработчиков и невнимательности проверяющих за ними. Да, с годами технологии меняются, некоторые вещи становятся проще, но в целом глобальная проблема никуда не денется. Любая система может сломаться тогда, когда этого никто не ожидает — именно по этим причинам. Запомните, это важно.

Аудитория активно запоминала.

— Один мой хороший знакомый поведал мне как-то историю на близкую тему… На самом деле это был я много лет назад, но я подписывал соглашение о неразглашении, поэтому буду все отрицать, и вы ничего не докажете. В одной крупной-крупной межгалактической корпорации… шел проект по разработке и внедрению небольшого мобильного клиента для руководства небольшой, по меркам корпорации, организации. Мобильный клиент должен был аккумулировать данные из нескольких систем и выводить их в виде понятных и простых отчетов с графиками и анимацией. Было две проблемы — сотрудники местной службы информационной безопасности были настоящими небожителями и по власти своей уступали разве что некоторым богам Олимпа. Зевсу уступали, Гере возможно, Дионису — точно не уступали, но речь не об этом. Вторая проблема была в том, что данные, которые нужны были для отрисовки нескольких страниц с отчетами были очень и Очень Конфиденциальными. Даже гриф был такой — «ОК». А перед входом в заводоуправление был расположен целый нефтепровод с надписью: «В БЕЗОПАСНОСТИ НЕТ МЕЛОЧЕЙ», что, несомненно, ненавязчиво намекало на то, что требования безопасности придется выполнить. Все. Целиком. Полностью.

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

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

Профессор Соснин задумчиво глядел в окно. Потом подошел к ноутбуку и что-то вбил в поисковую строку браузера.

— Я погуглил, что является основанием позвоночника, но так и не разобрался и на всякий случай уточню — я имел в виду нижнюю часть оного.

Борис Николаевич специально для визуалов продемонстрировал на себе, что же он имел в виду.

— Кульминация этой истории произошла несколько позже. Счастливые пользователи, у которых появился такой удобный танк на педальной тяге, несколько обалдели. И от безопасного удобства, и от удобной безопасности. А еще они обалдели, потому что за 30 месяцев все уже поменялись по пять раз. Но как-то с горем пополам начали пользоваться. И вроде бы уже привыкли даже. Тем более что сами понимали — в безопасности нет мелочей, и если ИБ сказали, значит, так надо. У нас даже для Приемо-Сдаточных Испытаний по Информационной Безопасности термин тогда появился: «ПэСэИ по_ИБэ»… Золотые были деньки…

Борис Николаевич погрузился в сладкие воспоминания, пока аудитория хихикала над очередной шуткой «категории b».

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

Зал ожидал окончания истории.

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

— Закончилась эта история тем, что еще через какое-то время новые операционные системы перестали поддерживать танковую броню третьего поколения. И было варианта два: год переезжать на броню четвертого поколения или выкинуть все в мусорное ведро. Сначала внедрение системы, а потом ведрение. Ну вы сами догадались уже, что в итоге сделали.

Примечания

29

Если нет, то мне стыдно за тебя, товарищ.

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я