Приложение «Социальный мониторинг» было сделано из трекера мусоровозов

Продолжаем нашу серию мате­ри­а­лов о рабо­те ДИТ Москвы по даль­ней­шей циф­ро­ви­за­ции сто­ли­цы в пери­од повы­шен­ной готовности.

Одно из самых спор­ных ново­вве­де­ний ДИТ — это при­ло­же­ние «Социальный мони­то­ринг», при­зван­ное кон­тро­ли­ро­вать место­на­хож­де­ние людей, отправ­лен­ных на каран­тин (т.е. инфи­ци­ро­ван­ных либо име­ю­щих подо­зре­ние на инфи­ци­ро­ва­ние коро­на­ви­ру­сом). Это мобиль­ное при­ло­же­ние, кото­рое опре­де­ля­ет место­по­ло­же­ние по GPS, а что­бы чело­век не отпра­вил­ся гулять без смарт­фо­на – пери­о­ди­че­ски про­сит его сде­лать сел­фи. В слу­чае неуста­нов­ки при­ло­же­ния при нали­чии пред­пи­са­ния или неот­прав­ки сел­фи – Главное кон­троль­ное управ­ле­ние г. Москвы выпи­сы­ва­ет штраф в раз­ме­ре 4000 рублей.

(не очень понят­но, о каких «кон­так­тах» гово­рит­ся в рекла­ме при­ло­же­ния, да и зачем вооб­ще рекла­ма при­ло­же­нию, за неуста­нов­ку кото­ро­го штра­фу­ют на 4000 руб­лей в сутки)

Сама по себе идея мог­ла бы и выгля­деть непло­хо, если бы не каче­ство реа­ли­за­ции. Первая вер­сия появи­лась в Google Play в послед­них чис­лах мар­та – и было убра­но отту­да к 1 апре­ля, полу­чив к это­му момен­ту мини­маль­но воз­мож­ный рей­тинг в 1 звез­ду. Приложение при уста­нов­ке тре­бо­ва­ло раз­ре­ше­ния при­мер­но на всё, что толь­ко воз­мож­но собрать со смарт­фо­на, после чего отправ­ля­ло это всё по HTTP-протоколу (нет, мы не забы­ли бук­ву «S», её тут нет) на сер­ве­ра мэрии, а кон­крет­но сел­фи поль­зо­ва­те­ля – через эстон­ский сер­вис рас­по­зна­ва­ния лиц на сер­ве­ра Hetzner в Германии.

Потом при­ло­же­ние было пере­за­пу­ще­но, но силь­но луч­ше не ста­ло: тех­ни­че­ские про­бле­мы ото­шли на вто­рой план, зато на пер­вый вышли орга­ни­за­ци­он­ные: при­ло­же­ние оши­ба­лось в опре­де­ле­нии место­по­ло­же­ния, тре­бо­ва­ло сел­фи в 4 утра, тре­бо­ва­ло сел­фи каж­дую мину­ту, про­сто не рабо­та­ло… И за всё это – штра­фы, штра­фы, штрафы.

На вся­кий слу­чай выде­лим ссыл­ку отдель­но: это достой­но про­чте­ния.

Правительство Москвы несколь­ко дней назад даже назва­ло чис­лен­ную «мет­ри­ку»: на 60 000 поль­зо­ва­те­лей при­ло­же­ния было выпи­са­но 54 000 штра­фов на общую сум­му 216 млн. рублей.

В общем, може­те себе пред­ста­вить мас­штаб недо­воль­ства моск­ви­чей. Впрочем, к юри­ди­че­ским аспек­там мы ещё вер­нём­ся в кон­це, а пока – попро­бу­ем начать раз­ма­ты­вать клу­бо­чек обсто­я­тельств, закон­чив­ший­ся постро­е­ни­ем вот тако­го «полю­бив­ше­го­ся жите­лям и гостям сто­ли­цы» сервиса.

Рейтинг при­ло­же­ния в Google Play на дан­ный момент состав­ля­ет 1,1 балл по резуль­та­там 3809 отзывов.

До про­шлой суб­бо­ты един­ствен­ным ука­за­ни­ем на про­ис­хож­де­ние при­ло­же­ния была ссыл­ка на при­ло­же­ние Wokka Lokka в его лицен­зии. Wokka Lokka — это при­ло­же­ние для тре­кин­га детей, что вполне логично.

Однако в суб­бо­ту на нашем круг­лом сто­ле, посвя­щён­ном как раз обсуж­де­нию рабо­ты ДИТ Москвы, высту­пил Виталий Арделян – в 2017–2018 годах рабо­тав­ший в ком­па­нии «Аник Лаб».

Дальше — тран­скрипт соот­вет­ству­ю­ще­го кус­ка круг­ло­го сто­ла, немно­го при­гла­жен­ный и сокра­щён­ный. Оригинал мож­но посмот­реть на Youtube (ссыл­ка пря­мо на нача­ло выступ­ле­ния Арделяна).

TL;DR: в при­ло­же­нии «Социальный мони­то­ринг» были най­де­ны сле­ды исход­ных кодов про­то­ти­па при­ло­же­ния для кон­тро­ля выво­за быто­вых отхо­дов, сде­лан­но­го 3 года назад за десять дней.

***

Олег Артамонов:
— У нас в гостях сего­дня Виталий Арделян, тех­ди­рек­тор ком­па­нии AmberLabs, кото­рая зани­ма­ет­ся высо­ко­на­гру­жен­ны­ми систе­ма­ми. Более того, систе­ма­ми кон­тро­ля пер­со­на­ла на раз­лич­ных про­мыш­лен­ных объ­ек­тах и, насколь­ко я пони­маю, Виталий может что-то ска­зать про внут­рен­нюю и внеш­нюю исто­рию раз­ра­бо­ток ДИТ Москвы по теме соци­аль­но­го мониторинга.

Виталий Арделян:
— Олег, кол­ле­ги, здрав­ствуй­те. Я, конеч­но, буду рас­ска­зы­вать ров­но то, с чем я столк­нул­ся, рабо­тая с ДИТом Москвы. Вообще исто­рия вза­и­мо­от­но­ше­ний доволь­но дли­тель­ная, но наи­бо­лее актив­ная фаза у нас была где-то года три-четыре назад [прим. ред.: дея­тель­ность «Аник Лаб», рабо­тав­шей по это­му про­ек­ту, нача­лась в кон­це 2017 года]. Мы по зака­зу ДИТа Москвы раз­ра­ба­ты­ва­ли плат­фор­му высо­ко­на­гру­жен­ную для управ­ле­ния про­ек­та­ми в обла­сти рено­ва­ции. Вкратце: систе­ма долж­на была мони­то­рить состо­я­ние объ­ек­тов через видео­ст­ри­мы, долж­на была мони­то­рить нали­чие пер­со­на­ла на объ­ек­тах исполь­зуя инди­ви­ду­аль­ные тре­ке­ры и долж­на была еще управ­лять про­ект­ной доку­мен­та­ци­ей со все­ми выте­ка­ю­щи­ми отсю­да зада­ча­ми: отсле­жи­ва­ние гра­фи­ков, сро­ков, диа­грамм Ганта и про­чие вещи.

Мы, имея опыт рабо­ты имен­но в высо­ко­на­гру­жен­ных систе­мах лет восемь-девять, дела­ли боль­шие систе­мы чаще на Запад, чем на Россию, раз­ра­бо­та­ли ядро систе­мы, пред­ло­жи­ли им вари­ант раз­вер­ты­ва­ния и у нас даже пошел пилот. Но потом это рез­ко свер­ну­лось. Случилось так, что, навер­ное, бюд­же­ты были очень вели­ки, и меж­ду нами и ДИТом вста­ла ещё одна ком­па­ния, кото­рая полу­чи­ла экс­клю­зив­ное пра­во исполь­зо­вать ядро плат­фор­мы, нара­бот­ки — и нас тихо­неч­ко с это­го рын­ка слили.

Что я могу ска­зать… при рабо­те с заказ­чи­ком в виде ДИТа мы пони­ма­ли, что все про­ек­ты дела­ют­ся чинов­ни­ка­ми от IT. Чиновник от IT очень смут­но пред­став­ля­ет весь про­цесс фаб­ри­ки раз­ра­бот­ки; что есть очень мно­го зве­ньев, малень­ких, но очень важ­ных; что нуж­но пони­мать, что такое фаб­ри­ка раз­ра­бот­ки, что такое сре­да тести­ро­ва­ния, что такое environment нагру­жен­но­го тести­ро­ва­ния. Мы это­го не виде­ли, мы сде­ла­ли этот environment, эту сре­ду раз­ра­бот­ки, напи­са­ли кей­сы, сце­на­рии. На нас посмот­ре­ли, ска­за­ли: «Вы что, с ума сошли? У нас рабо­та­ет все по-другому». И отда­ли дру­го­му под­ряд­чи­ку, кото­рый пони­мал это по-своему.

А когда нача­лась вся эта исто­рия с про­пус­ка­ми Москвы, мы с удив­ле­ни­ем обна­ру­жи­ли в исход­ных кодах кус­ки кодов нашей плат­фор­мы, кото­рая ника­ким боком не долж­на была появ­лять­ся в при­ло­же­ни­ях подоб­но­го рода. Во-первых, то, что дела­ли мы, было сде­ла­но для дру­гой обла­сти про­фес­си­о­наль­но­го исполь­зо­ва­ния плат­фор­мы, а во-вторых, это было, по сути, копи­па­с­том из фрон­тен­до­во­го при­ло­же­ния… я сей­час открою такую тай­ну… оно было взя­то из мони­то­рин­га отсле­жи­ва­ния выво­за отходов.

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

И когда начал­ся эпа­таж, свя­зан­ный с про­бле­ма­ми при­ло­же­ния «Социального мони­то­рин­га», ребя­та наши посме­я­лись, ска­за­ли: «Слушай, а ты ниче­го не узна­ешь?». Я гово­рю: «Ну, да». То есть у меня, конеч­но, не было боль­ше вопро­сов. Я пони­мал, что при­ло­же­ние, напи­сан­ное за десять дней и бюд­же­ту Москвы оно обо­шлось в боль­ше сот­ни мил­ли­о­нов – это класс­ный биз­нес [прим. ред.: ком­па­ния «Гаскар Интеграция» полу­чи­ла от мэрии Москвы кон­тракт на 180 млн. руб­лей ещё до стар­та раз­ра­бот­ки «Социального мони­то­рин­га»; на каких усло­ви­ях в него был добав­лен мони­то­ринг, допод­лин­но неиз­вест­но].

По пово­ду «мож­но ли было сде­лать луч­ше?». Я счи­таю – да. Я счи­таю, что если бы, в прин­ци­пе, ува­жа­е­мый ДИТ Москвы исполь­зо­вал бы хотя бы эле­мен­тар­ные поня­тия о девопс-фабрике, о фаб­ри­ке раз­ра­бот­ки, как это при­ня­то в ком­па­ни­ях, кото­рые зани­ма­ют­ся про­фес­си­о­наль­ной раз­ра­бот­кой, мно­гих про­блем мож­но было бы избе­жать. То есть, по сути, при­ло­же­ние соби­ра­лось из ранее собран­ных про­ек­тов, близ­ко под­хо­дя­щим к тема­ти­ке, и ком­пи­ли­ро­ва­лось в какие-то паке­ты и сер­ви­сы. Конечно, нико­им обра­зом эти сер­ви­сы не были оркест­ри­ро­ва­ны меж­ду собой, то есть они вооб­ще име­ли раз­ное api и соби­ра­лось это все на колен­ках и быстро.

Отсюда нача­лись про­бле­мы, соб­ствен­но гово­ря, с негиб­ко­стью при­ло­же­ния. Вот кол­ле­ги ска­за­ли, что надо было сде­лать так, что­бы функ­ции не вли­я­ли друг на дру­га, что­бы под­пор­ка, выби­тая в одном месте, не обру­ши­ла все зда­ние. Собственно гово­ря, ни о какой сер­вис­ной архи­тек­ту­ре речь не шла. Это был тупой моно­лит, собран­ный из все­го, что там было и, есте­ствен­но, пер­вый дятел, зале­тев­ший в скво­реч­ню, обру­шил все дере­во. Так что я думаю, что сде­лать мож­но было лучше.

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

Олег Артамонов:
— Виталий, спа­си­бо. Здесь, кажет­ся, осталь­ные участ­ни­ки заду­ма­лись, какой ком­мен­та­рий дать, пото­му что такое вот вне­зап­ное вскры­тие, из чего на самом деле ДИТ это делал и как он это делал, после того, как пол­то­ра меся­ца все гада­ли отку­да все это взялось…

Виталий Арделян:
— Ну, кол­ле­ги, я еще раз повто­рю, что я лишь делаю выво­ды на осно­ва­нии тех исход­ни­ков, кото­рые мы виде­ли. Что там было уже в кон­це… ско­рее все­го – да, кол­ле­ги с ДИТа поня­ли, что нача­лись боль­шие про­бле­мы и начал­ся рефак­то­ринг кода, но исход­ные кор­ни и как это было сде­ла­но – мне оче­вид­ны. По пово­ду осталь­но­го – я не могу комментировать.

Олег Артамонов:
— Я еще отме­чу, что так сло­жи­лась судь­ба, что при­мер­но месяц-полтора назад я участ­во­вал в раз­ра­бот­ке функ­ци­о­наль­ных тре­бо­ва­ний по при­ло­же­ни­ям как раз выда­чи и кон­тро­ля элек­трон­ных циф­ро­вых про­пус­ков для одно­го из реги­о­нов. Оно не было внед­ре­но, и эта раз­ра­бот­ка дела­лась в надеж­де на то, что это не при­дет­ся внед­рять, что ситу­а­ции не зай­дет так дале­ко, но на слу­чай, если она все-таки зай­дет, то реги­он, осо­бен­но гля­дя на опыт Москвы хотел иметь какую-то мини­маль­но про­ра­бо­тан­ную базу, на кото­рой это мож­но будет стар­то­вать без тех­но­ло­ги­че­ских, репу­та­ци­он­ных и про­чих проблем.

И я здесь заме­чу, что вот тогда, на нача­ло апре­ля, всё то, что сей­час в спеш­ке, в пани­ке внед­ря­ет­ся и каж­дые три дня пере­де­лы­ва­ет­ся в соци­аль­ном мони­то­рин­ге и в nedoma.mos.ru, у нас было в функ­ци­о­наль­ных тре­бо­ва­ни­ях – чёт­ко по пунк­там с блок-схемами и со всем осталь­ным. Всякие лич­ные каби­не­ты орга­ни­за­ций, спис­ки сотруд­ни­ков, режим уве­до­ми­тель­ный, режим раз­ре­ши­тель­ный… все это было про­пи­са­но, и если бы в этом реги­оне ситу­а­ция дошла бы до ста­дии, когда это при­шлось бы внед­рять — была бы, по край­ней мере, неко­то­рая уве­рен­ность, что это не при­дет­ся сши­вать на живую нит­ку, что все это как-то про­ду­ма­но и с экс­пер­та­ми обсуж­де­но заранее.

Виталий Арделян:
— Действительно, ты прав в том, что с точ­ки зре­ния того при­ме­ра, о кото­ром ты гово­ришь —там дей­стви­тель­но были собра­ны тре­бо­ва­ния, при­чем тре­бо­ва­ния были мини­маль­но необ­хо­ди­мые, и была очень корот­кая связь меж­ду командой-разработкой и людь­ми, кото­рые управ­ля­ли про­ек­том. Говоря о корот­кой свя­зи, я еще раз повто­ряю, что про­бле­ма имен­но в этом, пото­му что на самом деле от заказ­чи­ка при­ло­же­ния до реа­ли­за­то­ра в ува­жа­е­мом ДИТе про­ис­хо­дит очень слож­ная цепоч­ка, где участ­ву­ют очень мно­го раз­ных инте­ре­сан­тов. То есть пере­да­точ­ное чис­ло настоль­ко боль­шое, что, соб­ствен­но гово­ря, систе­ма рабо­та­ла с КПД паро­во­за. Говоря о тво­ем вари­ан­те – насколь­ко я пом­ню, при­ло­же­ние было сде­ла­но мень­ше, чем за две с поло­ви­ной недели.

Олег Артамонов:
— Да, это были функ­ци­о­наль­ные тре­бо­ва­ния и про­то­тип при­ло­же­ния. Это была такая про­ра­бот­ка худ­ше­го вари­ан­та из воз­мож­ных. Будем рады, что он не потребовался.

***

Примечание: рабо­та «Аник Лаб» нача­лась в декаб­ре 2017 года. У ком­па­нии есть под­твер­ждён­ные пря­мые кон­трак­ты с ДИТ Москвы, у редак­ции так­же есть досто­вер­ная инфор­ма­ция о рабо­те Виталия Арделяна в «Аник Лаб» в этот пери­од и о раз­ра­бот­ке про­грамм­ных и аппа­рат­ных реше­ний для кон­тро­ля стро­и­тель­ных и смеж­ных работ на объ­ек­тах рено­ва­ции и дру­гих стро­и­тель­ных объектах.

Зачем мы при­во­дим здесь эту бесе­ду, хотя, оче­вид­но, она не рас­кры­ва­ет дета­лей того, как устро­е­но при­ло­же­ние сей­час и как ведёт­ся рабо­та над ним?

Потому что, к сожа­ле­нию, рас­крыть теку­щую инфор­ма­цию может толь­ко ДИТ Москвы — кото­рый, хоть и обе­щал вер­нуть­ся на Хабр, но пока что в пуб­лич­ной сфе­ре отде­лы­ва­ет­ся исклю­чи­тель­но заяв­ле­ни­я­ми о том, что с при­ло­же­ни­ем всё хоро­шо, отдель­ные недо­стат­ки быст­ро устраняются.

Ни по реак­ции моск­ви­чей, ни по рей­тин­гу при­ло­же­ния не замет­но, что­бы недо­стат­ки были «отдель­ны­ми» или что­бы они «быст­ро устранялись».

Это при­ло­же­ние, кото­рое бук­валь­но рушит жиз­ни десят­ков тысяч людей, в том чис­ле – боль­ных тяжё­лым заболеванием.

Поэтому, нам кажет­ся, очень важ­но знать и не забы­вать, с какой «тща­тель­но­стью» оно раз­ра­ба­ты­ва­лось, какой груз ответ­ствен­но­сти ощу­ща­ли на себе раз­ра­бот­чи­ки и их руко­вод­ство — и про­ис­хож­де­ние при­ло­же­ния, сде­лан­но­го из трёх­лет­ней дав­но­сти пилот­но­го наброс­ка, может ска­зать об этом мно­гое. Потому что IT – это не толь­ко про напи­са­ние «кра­си­во­го и понят­но­го кода», это и про ответ­ствен­ность перед теми, чья жизнь, рабо­та и здо­ро­вье будут от это­го кода зависеть.

По-прежнему искренне наде­ем­ся, что руко­вод­ство ДИТ Москвы рас­ска­жет свою вер­сию событий.

P.S. Законность назна­ча­е­мых «Социальным мони­то­рин­гом» штра­фов – отдель­ный вопрос, и крат­кий ответ на него: они неза­кон­ны. Нарушены как мини­мум три поло­же­ния: во-первых, феде­раль­ным КоАП допус­ка­ет­ся авто­ма­ти­че­ская при­бор­ная фик­са­ция толь­ко нару­ше­ний в сфе­ре транс­пор­та и бла­го­устрой­ства; во-вторых, такая фик­са­ция может осу­ществ­лять­ся толь­ко мет­ро­ло­ги­че­ски пове­рен­ным обо­ру­до­ва­ни­ем, како­вым смарт­фон не явля­ет­ся (и, более того, не даёт доста­точ­но для дан­но­го исполь­зо­ва­ния точ­но­сти пози­ци­о­ни­ро­ва­ния в прин­ци­пе); в‑третьих, Главное кон­троль­ное управ­ле­ние Москвы, выпи­сы­ва­ю­щее эти штра­фы, не обла­да­ет пол­но­мо­чи­я­ми по штра­фо­ва­нию физлиц.

В све­те это­го, если вы попа­ли под штра­фы «Социального мони­то­рин­га», мы реко­мен­ду­ем не обжа­ло­вать их через элек­трон­ную при­ём­ную Правительства Москвы, как реко­мен­ду­ет гла­ва Главконтроля г‑н Данчиков, а делать это толь­ко через суд. В про­тив­ном слу­чае боль­шую часть сора удаст­ся заме­сти под ковёр – неза­кон­но выпи­сы­ва­е­мые штра­фы будут тихо отме­не­ны в неофи­ци­аль­ном порядке.

Олег Артамонов
Член ВКС Партии прямой демократии

Подписаться на рассылку новостей
Партии прямой демократии

Directed by Pixel Imperfect Studio. Produced by Git Force Programming LLC.