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