В прошлом году в одной лишь Канаде пропали 45 000 детей. Пугающая статистика. Для того, чтобы максимально увеличить процент найденных было разработано решение с использованием Xamarin и Azure, о котором мы расскажем под катом.



Цикл статей «Microsoft Technical Case Studies»


1. Power BI Embedded, IoT и машинное обучение для обработки термограмм мозга.
2. Как в Канаде ищут пропавших детей.
3. Интернет вещей в археологии.
4. Loading…

Введение


Современные дети на «ты» с высокими технологиями, они используют их для игр, общения и учебы. Но с большими возможностями приходит большая ответственность как со стороны родителей, так и со стороны самих детей. Необходимо постоянно контролировать, с кем дети общаются и обмениваются информацией в Интернете, иначе может случиться беда. Директор Общества по поиску пропавших детей Канады (MCSC) Аманда Пик (Amanda Pick) и её команда без устали работают, чтобы предотвратить несчастья. Они обращают особое внимание на онлайн-ресурсы, поскольку злоумышленники всё чаще используют их для реализации своих планов.

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

MCSC тесно сотрудничает не только с муниципалитетом и полицией Калгари, но и с корпорацией Microsoft. Недавно прошел совместный семинар, который помог участникам понять, как функции Azure, Xamarin и передовые методики DevOps помогут быстрее и эффективнее собирать и предоставлять полиции информацию о детях, которые числятся пропавшими без вести.

Результатом работы семинара стало приложение, созданное на основе следующих служб и методик:

  • функции Azure;
  • службы хранилища Azure;
  • непрерывной интеграции;
  • методологии «инфраструктура как код»;
  • Visual Studio Team Services;
  • инструментов Xamarin.

Целью четырехдневного семинара было начало использования Azure в MCSC для получения сведений о последнем известном местонахождении ребенка, его контактах и общении в социальных сетях (например, Twitter и Facebook).

Постановка задачи


В ходе встречи с Амандой и командой MCSC мы изучили проблемы, связанные со сбором информации о пропавшем ребёнке. Достаточно просто узнать, например, во что ребенок был одет и где его видели в последний раз, но вот на получение других подробных сведений иногда уходило несколько дней или даже недель.

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



Первая половина дня ушла на составление схемы текущего процесса передачи в полицию сведений о пропавшем ребенке.



Вот в чем она заключалась:

  1. Предоставить родителям и (или) детям возможность регистрировать свои учётные записи из социальных сетей в базе данных MCSC.
  2. Если зарегистрированный ребёнок пропадает без вести, он сам или его родитель может воспользоваться решением Child Finder (через функции Azure), чтобы увидеть последнее известное местонахождение ребёнка, с кем он контактировал и о чём беседовал. Для этого в ленте социальной сети необходимо воспользоваться хэштегом #hfm (help find me – «помочь найти меня»).
  3. Решение Child Finder получит всю необходимую информацию непосредственно через интерфейс API социальных медиа.
  4. Функция Azure будет отправлять собранную информацию непосредственно в правоохранительные органы, уведомляя их о пропаже ребенка в соответствующем районе и предоставляя дополнительные сведения, собранные с помощью социальных медиа.
  5. Для входа в приложение представители правоохранительных органов будут использовать Azure Active Directory Authentication. Это гарантирует, что все собранные данные будут доступны только тем, у кого есть соответствующие права и полномочия.
  6. В приложении будут доступны отчеты и дополнительная информация о пропавших детях.

Хэштегом #hfm могут воспользоваться только те, у кого есть доступ (имя пользователя и пароль) к учётной записи. Такое ограничение гарантирует неприкосновенность частной жизни ребёнка, поскольку только сам ребёнок или люди, которым он доверяет (например, его родители), могут активировать функцию Azure для контроля его учётной записи в социальных сетях.

Представителям MSCS и полиции Калгари было предложено упражнение: составить схему потока создания ценности. Это помогло им осознать необходимость оптимизации и ускорения существующих подходов к поиску информации. Такой подход подтвердил свою эффективность, даже с учётом того, что в решении реализован абсолютно новый процесс. На основе схемы была сформирована карта ресурсов для специалистов.



Затем команда подготовила схему потоков данных для предлагаемого проекта. Одной из главных задач было обеспечение безопасности и предоставление инструментов для самостоятельной работы, что обусловлено конфиденциальностью собираемой и отправляемой информации. Была реализована поддержка Twitter OAuth, чтобы ребёнок и (или) его родители могли активировать мониторинг учётной записи. Сбор данных об учётной записи активируется с помощью хэштега #hfm. Также был реализован экран входа для представителей правоохранительных органов.

Цели проекта


Проект, реализованный для MCSC, основан на следующих технологиях.

Веб-приложение Azure


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

Мобильное приложение Xamarin


  • Разработаны правила проверки подлинности, чтобы доступ мог получить только персонал с соответствующими полномочиями.
  • Представители правоохранительных органов получают уведомления о новых отчётах и могут использовать приложения для просмотра соответствующих метаданных и результатов анализа сообщений.
  • Представители MCSC также будут проинформированы с помощью этого же приложения и смогут оказать содействие в работе правоохранительных органов.

DevOps


  • Упражнение с описанием потока создания ценности помогло сформировать схему процесса, а также схему сбора и распространения информации из базы данных через веб-приложение Azure и мобильное приложение Xamarin.
  • Хранилища GitHub для инфраструктуры (функции Azure), проверка подлинности (веб-портал Azure) и клиент (Xamarin) использовались на протяжении всего проекта.
  • Чтобы ускорить разработку и развёртывание, были созданы потоки непрерывной интеграции.
  • Для развёртывания среды и компонентов в целях обеспечения целостности использовалась методология «инфраструктура как код».

Решения, шаги и результаты


Процесс


Ребёнок (или его родитель) регистрирует учётную запись социальной сети на сайте MCSC, подтверждая свое согласие на мониторинг. Этот функционал реализован в виде приложения Node.js под названием authorization, которое в настоящее время подключено к Twitter.



Кроме того, для перехвата сообщений с хэштегом #hfm используется приложение Azure Logic. Такие сообщения приложение добавляет в очередь служебной шины.

Когда в этой очереди появляется сообщение, функция Azure анализирует его и сверяется с репозиторием информации об авторизации в DocumentDB. Если автор сообщения зарегистрирован в базе данных, то сообщение добавляется в следующую очередь, а в противном случае — просто игнорируется.

Из следующей очереди другая функция Azure извлекает сообщение и дополняет данные. В настоящее время процесс добавляет сведения о местонахождении, полученные от устройства, с которого был отправлен твит, или определенные на основе IP-адреса этого устройства. Дополненное сообщение добавляется в третью очередь.

На заключительном этапе функция Azure сохраняет сообщение в соответствующем формате в DocumentDB.

По завершении выполняемых функциями Azure операций дополненные данные будут доступны клиенту через REST API. API предоставляет доступ к информации из учётной записи пользователя и собранным данным из социальных сетей. Этот API реализован в файле Node.js, запускаемом в экземпляре веб-приложения Azure. Этот же API также отвечает за проверку подлинности в клиентском приложении.

Мобильное приложение Xamarin, которым пользуются поисковые отряды и полицейские, подключается к REST API, позволяя визуализировать данные и даже отслеживать местоположение (при наличии соответствующей информации). Воспользоваться этим приложением можно только после авторизации. В следующем выпуске отчёты обо всех пропавших детях будут публиковаться на централизованной информационной панели, которая перенаправляет информацию в правоохранительные органы в пределах указанного района.

Методы решения поставленных задач


В данной работе применялись следующие инструменты.

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

Службы Visual Studio Team Services помогли обеспечить поддержку сборок непрерывной интеграции и процесса развёртывания. Члены команды проекта находились в Торонто и Калгари. Благодаря VSTS они могли обмениваться кодом и участвовать в совместной работе.

Платформа Azure предоставила самые простые, экономичные и масштабируемые службы. Учитывая текущий набор требований к процессам и системам хранения данных, решение должно обрабатывать огромные объёмы данных с минимальными задержками.

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

Процесс приёма данных позволяет быстро найти контент, самостоятельно зарегистрированный пользователем. В текущей версии мы решили использовать приложение логики (Logic App), поскольку затраты на него намного меньше, чем на длительно выполняемую функцию Azure. Приложение логики обращается к Twitter каждые 30 секунд. При обнаружении твита с искомым хэштегом приложение добавляет этот твит в очередь обработки.

Последующий процесс построен на базе надёжных функций и очередей Azure, обеспечивающих надлежащую обработку даже в случае возникновения ошибок. Функции Azure также обеспечивают высокую масштабируемость и позволяют свести затраты к минимуму. У каждого этапа процесса своя задача: для начала, необходимо определить, зарегистрирован ли автор твита. Если такой пользователь не зарегистрирован, сообщение просто игнорируется без создания копий, что гарантирует конфиденциальность. Далее необходимо запросить дополнительную информацию. В текущей версии мы сосредоточились на добавлении геопространственных данных, однако можно включать и другую информацию. Наконец, элемент извлекается из последней очереди и помещается в базу DocumentDB, доступ к которой осуществляется через REST API с помощью клиента Xamarin.

Формы Xamarin.Forms помогли обеспечить поддержку развертываний в ОС Android, iOS и Windows, гарантируя при этом единообразное представление для пользователей на всех доступных устройствах и оптимизированный процесс развертывания. Клиентское приложение предоставляет данные в удобном формате. Благодаря полной поддержке REST в Xamarin мы подключаемся к REST API, импортируем данные и отображаем их в виде списка. Клиентское приложение позволяет просматривать данные (или «дела») и сортировать их по состояниям: «открыто», «в архиве» и «просмотрено». Если в выбранном деле присутствуют геолокационные данные, то приложение покажет на карте последнее известное местонахождение пользователя социальных сетей. Кроме того, приложение использует шаблон MVVM — стандартную архитектуру, которую RedBit применяет в своих мобильных приложениях. Команда разработчиков RedBit помогла интегрировать некоторые компоненты исходного кода MVVM Light.



Дальнейшие шаги


Приложение Facebook/Instagram. Система поддерживает несколько каналов различных социальных сетей. Данные из этих сетей будут встроены в один процесс со своими характеристиками.

Приложение Twitter. В настоящее время в качестве точки взаимодействия приложение логики использует учётную запись JefKingTweets. В дальнейшем приложение будет перенесено на учётную запись MCSC.

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

Функция Azure для дополнения данных. В системе может собираться дополнительная контекстуальная информация, которая будет полезна поисковым отрядам. Например, можно выгрузить историю твитов пользователя, чтобы узнать, кто его друзья и где он любил бывать. Можно в течение следующих 48 часов отслеживать новые твиты и пытаться определить местоположение. Можно также контролировать другие геолокационные метки, которые помогут определить местонахождение ребёнка.

Автоматическая настройка функции Azure. В ходе реализации проекта функция Azure настраивалась вручную. В дальнейшем в целях упрощения управления и повышения безопасности будет реализована автоматическая настройка с помощью служб Visual Studio Team Services.

Методика DevOps


Ниже речь пойдёт о методиках DevOps, которые применялись в процессе реализации проекта.

Value stream mapping


Это упражнение обычно выполняется в отношении существующего набора процессов и действий, связанных с разработкой конкретного решения. В данном случае мы изучили существующий процесс и выслушали предложения по его совершенствованию от представителей MCSC, полиции и муниципалитета Калгари. Как уже говорилось ранее, команда проекта составила схемы и тщательно изучила функции Azure и клиентское приложение. Удалось не только определить возможности для оптимизации, но и реализовать их, чтобы ускорить разработку решения и достичь высокого уровня автоматизации. В результате Value stream mapping в этот проект добавлены следующие функции:

  1. Проверка подлинности в мобильном приложении. С её помощью представители правоохранительных органов получают защищенный доступ к данным о пропавших детях, которые функция Azure передает из учетной записи в Twitter.
  2. Изображение из профиля в Twitter. Изображение добавлено в отчет, поскольку оно также может помочь в поисках пропавшего ребёнка.

Репозиторий на GitHub


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



В итоге были созданы репозитории:

  • authorization: авторизация клиента в социальной сети;
  • client: разработка приложения Xamarin;
  • client-api: интерфейс API для клиентских устройств;
  • client-registration: регистрация push-уведомлений;
  • infrastructure: инфраструктура Azure;
  • messaging: передача и обработка серверных сообщений.

Непрерывная интеграция


Чтобы ускорить сборку и развёртывание мы создали четыре потока непрерывной интеграции в службах Visual Studio Team Services:

  • client-api-ci;
  • messaging-ci;
  • authorization-ci;
  • Infra-DEV-CI.



Каждое из них включает в себя задачи для создания правильной сборки, в том числе npm, gulp, Grunt и другие (в зависимости от языка и типа сборки). Клиентские приложения Xamarin развёрнуты с помощью решения HockeyApp в службах Visual Studio Team Services.

Непрерывное развёртывание


Созданы четыре очереди управления релизами, чтобы команда могла создавать программное обеспечение в рамках коротких циклов. Такой подход обеспечивает возможность выпуска релиза в любой момент. Платформа HockeyApp обеспечила дополнительную гибкость, поскольку приложения доставляются непосредственно на устройства, размещать клиентское приложение в магазине нет необходимости. Такой подход ускоряет все процессы и снижает затраты и риски, связанные с развёртыванием изменений, позволяя устанавливать добавочные обновления для приложений в производственной среде.



Инфраструктура как код


Инфраструктура для решения создана с помощью набора шаблонов JSON, которые используются для развёртывания среды и других компонентов, которые требуются решению. Шаблоны JSON загружаются в репозиторий infrastructure в GitHub, на них распространяется тот же процесс управления сборками и релизами, что и на остальной исходный код. Этот процесс гарантирует согласованное развёртывание для группы ресурсов в среде разработки, тестовой и производственной средах.



Заключение


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

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



Кроме того, в ходе работы команда проекта успешно получила GPS-данные от Twitter и Facebook и представила эти данные в приложении Xamarin.

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

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

Напоминаем, что бесплатно попробовать Microsoft Azure можно здесь.

Если вы увидели неточность перевода, сообщите, пожалуйста, об этом в личные сообщения.
Поделиться с друзьями
-->

Комментарии (18)


  1. Charg
    13.03.2017 14:47
    +4

    пропали 45 000 детей. Пугающая статистика.


    Статистика? Это просто число.


    1. Juma
      13.03.2017 15:53

      Да, действительно, как «врет статистика».
      45000 детей это скорее всего количество зарегистрированных заявлений о пропаже.

      Первая нагугленная статья как раз и говорит об этом и данные похожи, 46718 детей. Там же говориться, что «63 процента исчезнувших детей нашлись в течение суток». Хотя эти данные за 2011 год, вряд ли там сильно что-то изменилось.

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


      1. bagdik
        13.03.2017 17:37
        +1

        in 2015 — 45288 children were missing
        see http://www.canadasmissing.ca/pubs/2015/index-eng.htm


        1. tangro
          14.03.2017 12:25

          Оттуда же:
          «76% of missing children/youth reports (male and female) are runaways.»

          Вот и всё, если человек сбежал сам — вряд ли вы его найдёте по мониторингу телефона.


      1. maxzhurkin
        14.03.2017 20:07

        Если средняя продолжительность нахождения ребёнка в розыске составляет примерно год, то количество детей, одновременно находящихся в розыске и количество детей, пропавших за год, будут достаточно близкими, чтобы, ну вы поняли


  1. Ivan-P
    13.03.2017 15:42
    -4

    Нужно чаще пороть


    1. defaultvoice
      13.03.2017 16:57
      +3

      Это вас нужно было чаще пороть, чтобы думали перед тем, как что-то сказать.


  1. teecat
    13.03.2017 16:50
    +1

    Отслеживание публикаций в соцсетях c превентивной подпиской на данное действие в целях поиска пропавших это хорошо. Интересно, а сколько от пропавших было найдено с помощью данного приложения?


    1. kozzztik
      13.03.2017 17:20
      +4

      Да, вот тоже интересно. А то больше похоже на красивую рекламную демонстрацию Azure, а был ли с этого какой-то реальный выхлоп — не ясно.


      1. teecat
        13.03.2017 17:32
        +1

        При этом пропажа детей это конечно плохо, но сколько из них теряется по причине загулял или обиделся на маму? Реальная проблема — старики и больные с различными расстройствами. Блогов они не ведут, в соцсетях не значатся. Зачастую одиноко живут в деревнях и дачах, местонахождение их не отслеживается. Повесить на них датчик — сорвут/снимут и забудут надеть.


      1. anmipo
        14.03.2017 01:13
        +1

        Как водится, в процессе решения забыли о конечной цели, и сделали вещь в себе.

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


  1. TimsTims
    13.03.2017 17:41
    +5

    Мда. Ожидал увидеть что-то вроде «Azure настолько мощный, что получает данные с онлайн-камер по всей стране, даже с камер на полицейских машинах, опознаёт лица детей и сообщает о замеченном ребенке.»

    А тут «всего лишь» анализ facebook и twitter, и сигнализация о том «ваш ребенок только-что выложил котика». Одна эта информация, что ребенок жив и здоров, и что-то там пишет в Facebook — уже успокаивает более-менее, и можно ему написать «когда придешь, мы тебя потеряли?». Я уже молчу, что помимо этих соц.сетей, есть еще куча других. Я уже молчу про мессенжеры.

    >> успешно получила GPS-данные от Twitter и Facebook
    Вот этот самый-самый главный вопрос, вокруг которого столько воды налито в статье — facebook принудительно к каждому комментарию сохраняет GPS-локацию, или только когда пользователь отправляет фотки с геопозицией?

    Вот блин столько воды! столько воды! миллион раз повторились, как это всё работает, данные идут в одну программу, робот подхватывает в другой, потом это обрабатывается в третьей итд… а самую суть не раскрыли…

    Вообще, мне одному кажется, что если ты уж решил заранее зарегистрироваться в этой программе через внешний сервис поиска детей, то уж проще поставить программу вроде Android-admin или FindMyPhone, чтобы смотреть перемещения телефона(и владельца)?


  1. WondeRu
    13.03.2017 19:44
    +3

    "Давайте построим мост. Хорошо! Берем Azure для сохранения данных и Xamarin для инженера технадзора..." — канва однако.
    Вообще, эта статья смотрелась бы интересенее без лейблов.
    Как по мне, собрались гики, придумали задачу, а про выхлоп даже не задумались.


    Вот если бы они анализировали переписку на поведенческие факторы, связанные с суицидом или депрессией, то это было бы интереснее


  1. robert_ayrapetyan
    13.03.2017 20:23

    Основной кейс пропажи ребенка (99.999%) — бывший/бывшая выкрали ребенка и увезли к себе. Остальное — дети из тяжелых семей, сами уходят, причем много раз подряд. Остальные случаи пропаж, как следствие общения с маньяком в сети — их доля исчезающие мала.


    1. Pilat
      14.03.2017 01:21
      +1

      Откуда статистика?


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


      1. robert_ayrapetyan
        14.03.2017 03:22

        https://www.amberalert.gov/pdfs/2015AMBERAlertReport.pdf
        Статистика по США за 2015 год. На третьем графике, в причинах краж, FA (Family Abduction) — 66%. Но это сообщенные случаи, мои 99.999% (предположение) относятся ко всем случаям краж, ведь вы же не всегда станете сообщать в полицию, если знаете, что ребенка из школы сегодня увезла бывшая?


        1. Pilat
          14.03.2017 04:01

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


  1. vba
    14.03.2017 15:18

    Интересно, а сколько Microsoft заработало или заработает на этом проекте? Ведь Azure не бесплатно предоставили наверное.