Опыт вывода программной реализации социального проекта «Вспомнить каждого» в опенсорс

В прошлом году, нашей команде повезло принять участие в разработке программного обеспечения для социально значимого проекта – системы ввода архивных данных военных комиссариатов Хабаровского края времен Великой Отечественной войны. Кратко говоря, когда был призван, куда убыл и другую связанную с этим информацию – оцифровать и дать возможность искать эти данные кому угодно. Дальневосточный центр социальных технологий в 2018 году, при поддержке Фонда президентских грантов, реализовывал проект — «Вспомнить каждого». А мы, разработали приложение на нашем опенсорсном продукте IONDV. Framework. Итоговое приложение сейчас доступно под лицензией GPLv3.

Делимся нашим решением и опытом работы над проектом.

image

Спойлер, немного технических деталей.

IONDV. Framework
IONDV. Framework – опенсорс фреймворк на node.js по созданию высокоуровневых веб-приложений на основе метаданных, что не требует серьезных навыков программирования.

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

Для СУБД используется MongoDb — в ней хранятся и настройки приложения, метаданные и сами данные.

В ходе разработки мы создали веб-приложение, с корпоративным названием War archive — для хранения, группировки и демонстрации архивных документов о Великой Отечественной войне. Мы активно работали с января по март 2018 года и в процессе исправляли баги фреймворка – так как опыт работы с таким количеством сканов у нас был первый.

Результатом работы проекта «Вспомнить каждого» стал реестр данных с 25к записей (сейчас уже 35к). В апреле этого года Дальневосточный центр социальных технологий опубликовал исходный код приложения под лицензией GPLv3 на GitHub. В репозитории вы найдете метаданные, шаблоны оформления и специальные утилиты – всё то, что составляет основу приложения для IONDV. Framework. Сам фреймворк распространяется под лицензией Apache 2.0 и также доступен на GitHub, вместе с готовыми модулями.

Также развернуто демо приложения. Тестовый запрос для поиска «Иванов Иван». Можно посмотреть и бэкофис по ссылке. Логин – demo, пароль — ion-demo. Кстати можно получить и готовый докер образ.

Подробнее о проекте


Цель проекта «Вспомнить каждого» сохранить память о людях времен ВОВ, предоставив безвозмездный доступ к документам тех лет. Мария Степко, директор Дальневосточного центра социальных технологий как-то сказала: «Сохранение и анализ полученных данных о прошлом – это задача, необходимая для моделирования будущего».

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

image

Мы очень благодарны за эту возможность и за отзыв о нашей работе:
«Техническое решение, созданное дальневосточной компанией-разработчиком IONDV уходит в свободное распространение. Система подходит НКО, инициативным гражданам, музеям, архивам. Поможет сэкономить ресурсы и сделать доброе дело для людей. Программисты нашего региона знают, что такое «свободное ПО». Сообща, мы сделаем это ПО более функциональным.

Результат развертывания и тестирования


Вчера мы закончили перенос проекта на Яндекс. Облако и сделали доступным по новому адресу dvarchive.ru.

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

Ресурсы сервера минимальные, так как он оплачивается за счет фаундрайзинговой компании: 2 CPU с 20% приоритетом и 2Gb памяти.

Типовая реакция на небольшую нагрузку выглядит так – 2% загрузки CPU и 36% загрузки памяти.

Мы провели тестирование запросов пользователей без статичных файлов, только запросы на данные и результат нам понравился.

image

Получилось, что приложение в докер контейнере обрабатывает 400 запросов в секунду (без статики). И при этом нагружает только один процессор, что характерно при запуске только одной инстанции node.js. Второй обрабатывает остальные задачи (СУБД, nginx, мониторинг).

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

Итог


Для нас это был первый опыт участия в работе над проектом, связанным с памятью о Великой Отечественной войне, о дальневосточниках.

Тем более мы гордимся тем, что этим результатом, разработанным на Дальнем Востоке – регионе не очень активном в области ИТ, может воспользоваться любой, кто занимается подобными проектами, в особенности по модели опенсорс.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 7

    0
    У меня вопрос по поводу вашего фреймворка
    Почему бы не дистрибьютить зависимости через npm?
    А то ходить руками клонить все зависимости и чекаутить — ну такое себе
      +1

      Спасибо, отличный вопрос, на котором мы немало сломали копий.


      Сам фреймворк нацелен на разработчиков приложений, а не на упрощение первичного запуска приложения. Мы обсуждали модель использования npm для сборки приложения и она показалась нам слишком сложной, так как в корне тогда будет приложение, а ядро (сам фреймворк) или модули или другие связанные приложения — будут в папке node_modules.


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


      Второй вопрос — приложение и модули собираются gulp, в т.ч. ставятся дополнительные зависимости для фронта — и они не прописаны в package.json самих модулей и приложений, а отдельно прописываются для групп шаблонов — например для war-archive — здесь. Сейчас — они иерархичные и сборка их проходит быстро. Альтернатива — все хранить в репозитории, в том числе минифицированные файлы и т.п.


      Третье при запуске ядро подключает модули — т.е. мы ориентируемся на структуру хранения их файловой системе в виде жесткой иерархии, это упрощает разработку и позволяет работать/дорабатывать все приложения, модули раздельно и в раздельных репозиториях.


      Само приложение мы собираем автоматически в docker контейнер, т.е. это проходит сборщик приложения в devops, есть подобный для ПК, но недоделанный по причине небольшой нужности.


      Но вы натолкнули меня на мысли, или это и имели ввиду, что можно хранить сам фреймворк, модули компоненты в npmjs.org и по той же модели их ставить, т.е. вместо git clone ставить npm install — это сделаем быстро, при выпуске версии. Спасибо.

      –1
      ваша работа никому не нужна. малюсенький кусочек из более 30 млн. погибших, да ещё на своём «коленочном» фремворке. Скан-добровольцы не обучены работать с архивными бумагами, значит после их скана многое придёт в негодность. Да и сам проект, как «бесмертный» полк — один всплеск на 9 мая, а 10 про него уже и не говорят.
        +1

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


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


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

        0

        у https://obd-memorial.ru 4 млн записей
        35к записей как-то не серьезно

          0
          Не все документы, что есть в военкоматах страны по этому периоду оцифрованы и выложены или будут выложены в ближайшие лет 10 на том же ОБД «Мемориал».
          Поэтому наша позиция — это взять и изменить ситуацию. Что получилось? Доки отсканированы, создана база, работа с ней продолжается, люди находят вехи истории своих родных.
          Отзыв техдиректора ресурсов «ОБД-Мемориал», «Память народа», «Подвиг народа», одного из ключевых консультантов нашего проекта по ссылке. Частью миссии проекта была как раз передача цифровых копий в Минобороны.
          Вообще в выполнении рутины, как правило, успешны не общественные движения, а упертые инициативные группы или одиночки. Вот это свободное по — оно в том числе и для них.
          А про количество. Гора, конечно, не должна рождать мышь, но эффект от этой работы — это истории тех, кто находит своих. Или позже найдет.
          Единицы, десятки, тысячи кусочков истории, появляющиеся из военкоматов, личных, иностранных архивов — это шансы определить судьбу без вести пропавшего или веху истории людей, которых уже нет рядом.
          И тут нужны технологии. например, распознавания текстов — иначе эта работа и будет двигаться очень и очень медленно.
          Есть еще задачи, когда поисковики подняли останки бойца, архивисты или энтузиасты опубликовали новые документы — а ныне живущих родных найти крайне трудно — современные законы и обилие неупорядоченной информации.
          +1

          Мы все же делали проект на основе данных военкоматов хабаровского края — это действительно лишь один фрагмент. Мемориал — это федеральная система и там больше 20 млн. записей. Но несколько фамилий из случайной выборки не нашел — вот с этого листа например https://dvarchive.ru/files/cjnjoma7a00e705ms1sqn4f0u — лист 25об из книги учета призванных граждан в Красную Армию, составленной Советско-Гаванским городским военным комиссариатом: Ивлев Григорий Федорович или Иконников Иван Никитович. Я знаю, что эта информация во многих региональных архивах до сих пор не оцифрована и подобные проекты есть в других регионах. Не могу ничего сказать, насчет переговоров по передаче этих дел в базу Мемориал. Все таки мы занимались именно программным обеспечением, чтобы эти дела можно было перевести в электронный вид — структурировать данные, обеспечить частичную или полную публикацию сведений, распределить уровни доступа среди занимающихся обработкой волонтеров, сделать внешний поисковый инструмент.


          В любом другом проекте — это можно использовать, доработать или переработать, если нужно — код открыт, лицензия открытого ПО — причем доработка самой системы правок кода не требует — в основном описание структур метаданных. Ресурсов система требует совсем не много — ведь кроме создать, ещё надо хранить и предоставлять доступ — текущая конфигурация проекта — это 600-800 рублей в месяц в Яндекс. облаке.


          А централизация данных — это все таки чуть другая задача.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое