Макет приложения на MongoDB

Цена договорная • наличный расчёт, безналичный расчёт, электронные деньги
22 декабря 2016, 16:37 • 3 отклика • 54 просмотра
Задача: Требуется создать приложение-прототип для оценки быстродействия NoSQL базы данных в проекте

Общее описание: У нас есть готовое приложение - прикладной специализированный маршрутизатор данных (сообщений и файлов), которое развивается много лет и построено целиком на языке высокого уровня. Сейчас в приложении используется достаточно нетривиальный код, что вызывает проблемы с поддержкой и развитием. Хотелось упростить прикладной код используя современные возможности баз данных - есть обоснованное предположение, что если построить архитектуру приложения "вокруг" базы, то сильно все упростится.

Во вложении видение новой архитектуры:
На основном комплексе (сервере) группа отдельных приложений-интерфейсов обеспечивает взаимодействие со смежными системами и принятые данные (файлы и/или сообщения) валит в общую кучу в базу данных. Периодически включается отдельное приложение-коммутатор, которое выбирает из кучи новые записи и, на основании ключевой информации и таблицы маршрутизации, раскидывает по очередям ссылки на записи кучи. Приложения-интерфейсы периодически подключаются к своим очередям и выбирают записи на передачу, получают данные из базы и передают во внешние системы.
Все приложения хранят свои настройки, состояния и статистику в той же базе данных, которая реплицируется на резервный комплекс.
В случае аварии на основном комплексе, аналогичные приложения запускаются на резервном комплексе и работа продолжается с точки возникновения аварии (в идеале).
Интерфейс администратора/пользователя обеспечивается через веб-сервер с доступом к той же базе.

Требуется:
1. Создать и настроить базу данных MongoDB
2. Написать Приложение-коммутатор
3. Написать эмуляторы Приложений-интерфейсов (генерируют данные, записывают в кучу базы данных, подключаются к "своим" очередям, считывают данные на передачу, эмулируют успешную и неуспешную передачу данных и т.д.)
4. Написать приложение-лаунчер для запуска всех необходимых модулей/программ
5. Написать веб-интерфейс приложения (опционально)
6. Перенести все на две виртуальные машины и настроить репликацию, проверить переключение на резерв и обратно.
7. Оценить быстродействие на типовом современном компьютере: i5-i7, RAM 8-16 Gb

Требования по нагрузочной способности:
1. Количество записей в сутки: до 1 миллиона
2. Пиковая нагрузка: 1-5 тысяч записей в секунду
3. Размер сообщений: от 10 байт до 512 кбайт (обычно не больше 64 кбайт)
4. Средний размер сообщения: 2-4 Кбайт
5. Размер файла: от 10 кбайт до 4 ГБайт (обычно не больше 10 МБайт)
6. Средний размер файла: 100-300 Кбайт
7. Срок хранения записей: 1 месяц (т.е. количество записей не больше 30 млн)

База данных: MongoDB.
Язык программирования: Python (предпочтительно)
Операционная система: 64 бит

Будет подробное ТЗ.

Файлы