No ano passado, nossa equipe teve a sorte de participar do desenvolvimento de software para um projeto socialmente significativo - um sistema para inserir dados de arquivo dos comissariados militares do Território de Khabarovsk durante a Grande Guerra Patriótica. Em resumo, quando ele foi chamado, para onde ele foi e outras informações relacionadas - para digitalizar e dar a qualquer pessoa a oportunidade de pesquisar esses dados. Em 2018, o Extremo Oriente para Tecnologias Sociais, com o apoio do Presidential Grants Fund, implementou o projeto “Remember Everyone”. E desenvolvemos um aplicativo em nosso produto de código aberto IONDV. Enquadramento O aplicativo final está agora disponível sob a licença GPLv3.
Compartilhamos nossa decisão e experiência no projeto.

Spoiler, alguns detalhes técnicos.
IONDV. EnquadramentoIONDV. Estrutura - estrutura de código aberto no node.js para criar aplicativos da Web baseados em metadados de alto nível, que não exigem habilidades de programação sérias.
A base da funcionalidade do aplicativo é o registro de dados - o módulo Register. Este é um módulo-chave projetado especificamente para trabalhar com dados baseados em estruturas de metadados - incluindo aqueles para gerenciar projetos, programas, eventos etc. O projeto também usa um módulo de portal para exibir modelos de dados arbitrários - implementa a frente do registro de arquivos compactados.
O MongoDb é usado para o DBMS - ele também armazena configurações de aplicativos, metadados e os próprios dados.
Durante o desenvolvimento, criamos um aplicativo da Web, com o nome corporativo de arquivo War, para armazenar, agrupar e demonstrar documentos de arquivo sobre a Grande Guerra Patriótica. Trabalhamos ativamente de janeiro a março de 2018 e, no processo, corrigimos os erros da estrutura - pois tivemos a primeira experiência com tantas verificações.
O resultado do projeto “Remember Everyone” foi um registro de dados com 25k registros (agora 35k). Em abril deste ano, o Far Eastern Center for Social Technologies publicou o código-fonte do aplicativo sob a licença GPLv3 no
GitHub . No repositório, você encontrará metadados, modelos de design e utilitários especiais - tudo o que forma a base do aplicativo para o IONDV. Enquadramento A estrutura em si é distribuída sob a licença Apache 2.0 e também está disponível no
GitHub , juntamente com módulos prontos.
Aplicativo de demonstração também implantado. Solicitação de teste para procurar "Ivanov Ivan". Você pode ver o backoffice
aqui . Login - demo, senha - ion-demo. A propósito, você pode obter uma
imagem de janela de encaixe pronta.
Detalhes do Projeto
O objetivo do projeto “Remember Everyone” é preservar a memória das pessoas desde a Segunda Guerra Mundial, fornecendo acesso gratuito aos documentos daqueles anos. Maria Stepko, diretora do Centro de Tecnologias Sociais do Extremo Oriente, disse certa vez: "A preservação e análise de dados do passado é uma tarefa necessária para modelar o futuro".
Os voluntários do projeto digitalizaram 10 mil páginas de documentos e inseriram dados no registro de países do Extremo Oriente, participantes da Grande Guerra Patriótica. No banco de dados, você pode encontrar informações sobre a classificação dos chamados, sobre a parte, data, causa da morte e o local do enterro. Além disso, uma fonte digitalizada de gravação está disponível, indicando o número de inventário, caso, folha, de acordo com a numeração do arquivo do estado. Um exemplo de digitalização de documento.

Somos muito gratos por esta oportunidade e pelo feedback sobre o nosso trabalho:
“A solução técnica criada pela empresa de desenvolvimento do Extremo Oriente IONDV entra em distribuição gratuita. O sistema é adequado para ONGs, cidadãos de iniciativa, museus, arquivos. Isso ajudará a economizar recursos e fazer uma boa ação para as pessoas. Programadores em nossa região sabem o que é "software livre". Juntos, tornaremos este software mais funcional.
Implantação e resultado do teste
Ontem terminamos de transferir o projeto para o Yandex. A nuvem foi disponibilizada no novo endereço
dvarchive.ru .
Ao mesmo tempo, realizamos testes de estresse, que também gostaríamos de compartilhar.
Os recursos do servidor são mínimos, pois são pagos pela empresa de captação de recursos: 2 CPUs com 20% de prioridade e 2Gb de memória.
Uma reação típica a uma carga pequena se parece com isso - 2% da carga da CPU e 36% da carga da memória.
Testamos solicitações de usuários sem arquivos estáticos, apenas solicitações de dados e gostamos do resultado.

Verificou-se que o aplicativo no contêiner do docker processa 400 solicitações por segundo (sem estática). E, ao mesmo tempo, carrega apenas um processador, o que é típico ao iniciar apenas uma instância do node.js. O segundo lida com o restante das tarefas (DBMS, nginx, monitoramento).
Nem precisa de cluster. Existe uma grande margem para a carga de trabalho usual de um projeto social, apesar dos recursos mínimos.
Sumário
Para nós, essa foi a primeira experiência de participar do trabalho de um projeto relacionado à memória da Grande Guerra Patriótica e do Extremo Oriente.
Além disso, estamos orgulhosos de que esse resultado, desenvolvido no Extremo Oriente, uma região pouco ativa no campo da TI, possa ser usado por qualquer pessoa envolvida em tais projetos, principalmente de acordo com o modelo de código aberto.