Проект на 2-3 человек
Задача - разработать прототип распределенного приложения для бронирования комнат (квартир, апартаментов, ...)
Ключевые сущности:
- клиент (id, имя)
- комната (id, адрес, описание, набор атрибутов)
- бронь (id комнаты, id клиента, даты бронирования, статус бронирования).
Сценарии:
- Бронирование комнаты. Клиент после выбора комнаты и дат бронирования, нажимает "бронировать", бронь сохраняется в MongoDB, комната блокируется в Hazelcast. После оплаты (символически), статус брони меняется на "оплачено", комната разблокируется в Hazelcast.
- Поиск свободных комнат (Elastic Search). Поиск по описанию, адресу и датам бронирования. Для удобства поиска по датам, при сохранении брони в MongoDB в ElasticSearch можно индексировать свободные даты.
План работы:
- Обсудить предметную область, детально описать модель хранимых данных.
- Разработка
- Заполнить тестовыми данными MongoDB (Клиент, комната)
- Разработать класс-сервис бронирования
- Расширить сервис бронирования индексированием данных в ElasticSearch
- Разработать веб-страницу для бронирования
- Разработать веб-страницу для поиска комнат
- Интеграция и тестирование
- Подготовить данные (порядка десятков тысяч клиентов, десятков тысяч комнат, миллионов броней)
- Комнаты можно взять отсюда http://insideairbnb.com/get-the-data.html. http://data.insideairbnb.com/united-kingdom/england/london/2017-03-04/data/listings.csv.gz содержит более 140 000 записей
- Клиентов - пользователей stackoverflow
- брони - сгенерировать
- Функциональное тестирование и исправление ошибок
- Протестировать поведение системы при отключении одного узла