dastapov: (Default)
Dmitry Astapov ([personal profile] dastapov) wrote2012-07-11 11:09 am
Entry tags:

Меряем микрометром, помечаем мелом, отрубаем топором

Дискуссии про то, что можно, а что нельзя сделать определенным техническими средствами очень часто скатываются в унылый срач, в котором стороны по кругу повторяют одно и то же из-за того, что:
1)Технические проблемы обсуждаются на уровне самой простой возможной реализации
2)Фичи и возможности обсуждаются на уровне навороченного сервиса или коммерческого продукта
3)Разрыв в сложности и требованиях к качеству между (1) и (2) одной из сторон напрочь игнорируются.

Чем меньше человек шарит в обсуждаемом, тем больший разрыв между (1) и (2) у него получается, и тем охотнее он его игнорирует.

Что я имею в виду? Перефразируя "Мистический человеко-месяц" Брукса (см. напрмер раздел Tar pit вот тут), разные уровни сложности технического решения можно описать вот так:

Накодили: мы делаем что-то один раз "на колене".
Превратили в практику: мы можем повторить свой успех "на колене" много раз.
Сделали сервис: мы формализовали наш опыт и отгородились от ошибок. Спецификации на исходные данные и результат. Контроль потребления ресурсов.
Сделали продукт: может использоваться человеком с минимальной квалификацией. Документирован. Протестирован. Интегрирован.

(это одна из возможных классификаций, не претендующая на роль единственной истинной)

Время и усилия, необходимые на внедрение каждого следующего уровня, многократно возрастают. Чтобы сделать что-то быстро на колене, может уйти N (часов, дней, ...). На то, чтобы сделать этот успех повторяемым, понадобится в 3-10 раз больше времени и сил. На программный сервис - еще больше. На продукт - на порядки больше.

Этот грустный аспект всегда учитывается при рассчете потенциальной отдачи - стоит ли тратить столько-то времени и сил? Какого качества результат мы получим? Оправдывает ли выхлоп усилия? Какой угодно (точнее - best-effort) результат может быть приемлимым или оправданным при однократной деятельности, но если мы ставим что-то на поток - то best effort уже явно недостаточен, более того - он может быть вреден. Типичный пример - изымание жидкостей на входе в самолет, повсеместно практикуемое сейчас.

Попробую проиллюстрировать сказанное на примере из предыдущего поста.

Задача


Оповестить тех, кто находится в зоне (предполагаемого) стихийного бедствия используя возможности мобильной связи.

"Накодили"


Пришла беда, а никакой системы оповещения нет. Допустим, кто-то деятельный из МЧС связывается с оператором и просит помочь. Оператору не пофиг, и происходит что-то такое:
* Кто-то решает: "давайте разошлем СМС!" (для обсуждения именно СМС как средства оповещения есть другой пост).
* Радиопланирование берет зону на карте и выдает базовые, которые ее покрывают
* Эксплуатация базовой сети берет базовые и выдает TMSI/MSISDN тех, кто там делал location update
* Кто-то дает текст SMS
* Эксплуатация сервисных платформ осуществляет рассылку SMS

При этом самым главным элементом процесса будет какой-то технически подкованный сотрудник, который при помощи sed, grep, sql и такой-то матери "заинтегрирует" все этапы процесса: например, возьмет XML, который умеет экспортировать система радиопланеров и выберет оттуда идентификаторы базовых в виде, понятном эксплуатации базовой сети. Возьмет список MSISDN и отделит абонентов других "домашних сетей" (но оставит роумеров). Набросает скрипт, сующий SMS-ы в SMS-центр. Побъет список рассылки на куски, если надо. Посидит рядом, пока он расыслается, устраняя возникающие проблемы.

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

Весь процесс идет в режиме best effort - если получилось, то хорошо; если не получилось - ну, по крайней мере мы старались. При наличии умных инициативных людей на местах реально все сделать за 3-6 часов (большая часть времени уйдет на ожидание и синхронизацию участников). Но вполне реально, что может не повезти - где-то новичок чего-то не знает, где-то кто-то в отгуле и т.п.

"Сделали процедуру"


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

Технические сложности по-прежнему сглаживаются тем, что в процессе непосредственно участвуют узкие специалисты. Появляется ряд организацонных сложностей, они кодифицируются (преврщаются в процедуры и проч.).

Best effort уже недостаточно. Оператор гарантирует (или его обязывают гарантировать) определенный уровень сервиса - скорость, объем рассылки, время реакции и т.п.

Чтобы создать и отладить этот процесс, потребуется, допустим, 2-6 месяцев (не в последнюю очередь потому, что все участники процесса на стороне оператора уже имеют 100500 разных дел, которые им надо делать каждый день).

"Сделали сервис"


После пары факапов или чтобы разгрузить людей Оператор создает или покупает систему, у которой есть API, позволяющее делать такие рассылки сравнительно небольшими усилиями. Одному-двум сотрудникам поручена ее эскплуатация. Система умеет фильтровать большинство типичных ошибок (кривые номера телефонов, сбои при доставке, ...) и ведет себя пристойно с точки зрения потребления разных ограниченных ресурсов (нагрузка на SMS, HLR/VLR, ...).

Чтобы сделать спецификацию на такую систему, разработать или купить и интегрировать ее, потребуется, допустим, 6-12 месяцев (в первую очередь потому, что все участники процесса на стороне оператора уже имеют 100500 разных дел, которые им надо делать каждый день).

"Продукт"


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

Для этого государство в лице МЧС выбирает поставщика (не надо смеяться :), который говорит "СМС-ы?! Да вы все упоролись!" и выкатывает спеку на, допустим, сервис на основе cell broadcast + специфического sim toolkit. Потом поставщик интегрируется с операторами, операторы потихоньку меняют абонентам сим-карты (или через OTA обновляют toolkit), и сервис запускается. Если есть в принципе доступна - сервис будет работать и информировать всех, у кого включен телефон (т.е. качество будет максимально возможным для данной технологии).

Чтобы все это интегрировать и внедрить нужно 6-24 месяцев.

Какие можно из этого сделать выводы?

Рассуждения вида "ну, можно было бы все равно разослать СМС-ы - даже если бы 10% дошло, все равно было бы хорошо" - это best effort, и это справедливо только в случае "пришла беда, откуда не ждали, и мы делаем все возможное и невозможное, чтобы спасти ситуацию". Если же риск или потребность прогнизируемы (а система оповещения, очевидно, необходима), если это не одноразовая работа (а система оповещения, очевидно, не одноразова), то best effort никуда не годится (тем более что есть гораздо более надежные или простые или дешевые альтернативы: cell broadcast, машины с матюгальником, радиоточки, ...).

Да, СМС может быть вспомогательным средством (наряду с фейсбуком, твиттером и прочими слабо подходящими средствами) в какой-то 10 или 15 версии сервиса, но при отсутствии альтернатвных надежных методов слова "оповещение населения" и "СМС" не должны стоять в одном предложении. Усилия надо тратить на что-то реально полезное, а не на фигню.

Just saying.

just for fun

[identity profile] ghrar.livejournal.com 2012-07-11 10:44 am (UTC)(link)
про реально полезное - это точно.
пара комментариев для улыбки:
- после фразы "XML, который умеет экспортировать система радиопланеров" некий радиопланёр, скажем, Пьетро Ф. подавился чаем с булочкой и спросил сквозь кашель что такое "ехемель".
- ввиду всего вышесказанного будет принято решение о развёртывании силами ДНК лидерства МШУ о'Сколково национальной программы оповещения через национальную сеть радиоточек, представляющих из себя стационарный gsm-телефон с громкоговорителем).

[identity profile] dzz.livejournal.com 2012-07-11 10:50 am (UTC)(link)
Воистину, хороший и жизненный пример.

Непонимание того, что из "один раз на коленке" нельзя сделать хороший продукт минимумом средств и сил - общее место большинства заказчиков со стороны бизнеса, да и ИТ-шники этим регулярно грешат.

[identity profile] dtr.myid.net (from livejournal.com) 2012-07-11 11:23 am (UTC)(link)
Чем критичнее задача - тем проще/надежнее должен быть инструмент. Смс и прочие свистелки - хорошо и удобно, но в некоторых случаях оно не взлетит. Хотябы потому что на ночь многие выключают звук/телефон. Самым действенным будет разработка маршрутов движения спецтранспорта с матюгальниками - это машины дпс, патрульные машины, пожарные машины, скорая помощь, иной спецтранспорт с матюгальниками и сиренами. Через матюгальники четко кратко и ясно даются инструкции. За каждым экипажем свой маршрут. Т.к. отделы полиции, пожарные части и пункты скорой помощи распределены по городу более менее равномерно, то всё оповещение не займет много времени. Оборудовать муниципальные учреждения внешними матюгальниками. Дешево, сердито, наглядно, эффективно. Всего то надо - протолкнуть должностные инструкции и назначить ответственных.

[identity profile] -darkus-.livejournal.com 2012-07-11 01:34 pm (UTC)(link)
Ну ты понял уже, что ты — охранитель и противник всякой свободы.

:D

[identity profile] b00ter.livejournal.com 2012-07-11 02:46 pm (UTC)(link)
Вечно эти компьютерщики найдут кучу отмазок, лишь бы ничего не делать (с) :)

[identity profile] inner-creature.livejournal.com 2012-07-11 03:08 pm (UTC)(link)
Фирма, в которой я все еще работаю (название похоже на производителя модных кед (или кедов?), когда-то продавала location-based довесок к своей СМС-системе с поддержкой массовой рассылки. Т.е. коммерческое решение есть и вопрос только в деньгах и интеграции.
Понятно, что на коленке нечто подобное соорудить за пару часов (или даже минут) можно, но для этого нужно работать в Голливуде.

Гораздо проще и дешевле вопрос решен там где я живу сейчас (торнадо-пояс в США) - старые сирены гражданской обороны в городах побольше, радио на аккумуляторах с автоматической настройкой на аварийную АМ-волну у людей живущих "в глуши". Ну и сеть аварийных автоматических АМ-радиостанций.

[identity profile] trizes.livejournal.com 2012-07-11 08:07 pm (UTC)(link)
Как однако люди на мобильные технологии уповают.
Машины со звуковой апаратурой кажутся раз в 100 надёжнее и полезнее. Оборудовать ими все машины экстренных служб?

[identity profile] xeningem.livejournal.com 2012-07-13 07:39 am (UTC)(link)
"Продукт"
"Если есть в принципе доступна" - опечатка?

Всё так и есть, а фразу "при отсутствии альтернативных надежных методов слова "оповещение населения" и "СМС" не должны стоять в одном предложении." - в рамочку и на стену.

О технических решениях. Как оказалось, очень не очевид

[identity profile] livejournal.livejournal.com 2012-07-13 03:28 pm (UTC)(link)
User [livejournal.com profile] dobergroup referenced to your post from О технических решениях. Как оказалось, очень не очевидный вопрос. (http://dobergroup.livejournal.com/145108.html) saying: [...] это и интересно и полезно! Оригинал взят у в Меряем микрометром, помечаем мелом, отрубаем топором [...]

[identity profile] kzayko.livejournal.com 2012-07-14 11:22 am (UTC)(link)
Весь процесс идет в режиме best effort - если получилось, то хорошо; если не получилось - ну, по крайней мере мы старались. При наличии умных инициативных людей на местах реально все сделать за 3-6 часов (большая часть времени уйдет на ожидание и синхронизацию участников). Но вполне реально, что может не повезти - где-то новичок чего-то не знает, где-то кто-то в отгуле и т.п.

А в некой компании именно такой юз-кейс занимает 5 дней. Каждого же нужно по процедуре известить, выделить, написать запрос через SD на проведение выборки, согласовать его и т.д. Проверено лично. Причем именно на кейсе "оповестить область через СМС" :). При том, что есть вполне промышленная система "рассылки СМС по списку абонов".

А Израиль с тобой не согласен :)

[identity profile] kzayko.livejournal.com 2012-08-14 10:49 am (UTC)(link)

[identity profile] amazing-orgazzm.livejournal.com 2012-09-17 09:36 pm (UTC)(link)
Скажите, а во что "реально полезное" следует оператороам тратить усилия?