Продолжаем нашу серию материалов о работе ДИТ Москвы по дальнейшей цифровизации столицы в период повышенной готовности.
Одно из самых спорных нововведений ДИТ — это приложение «Социальный мониторинг», призванное контролировать местонахождение людей, отправленных на карантин (т.е. инфицированных либо имеющих подозрение на инфицирование коронавирусом). Это мобильное приложение, которое определяет местоположение по 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. Законность назначаемых «Социальным мониторингом» штрафов — отдельный вопрос, и краткий ответ на него: они незаконны. Нарушены как минимум три положения: во-первых, федеральным КоАП допускается автоматическая приборная фиксация только нарушений в сфере транспорта и благоустройства; во-вторых, такая фиксация может осуществляться только метрологически поверенным оборудованием, каковым смартфон не является (и, более того, заведомо не даёт достаточной для данного использования точности позиционирования); в-третьих, Главное контрольное управление Москвы, выписывающее эти штрафы, не обладает полномочиями по штрафованию физлиц.
В свете этого, если вы попали под штрафы «Социального мониторинга», мы рекомендуем не обжаловать их через электронную приёмную Правительства Москвы, как рекомендует глава Главконтроля г-н Данчиков, а делать это только через суд. В противном случае большую часть сора удастся замести под ковёр — незаконно выписываемые штрафы будут тихо отменены в неофициальном порядке.
Автор: AnalogBytes