Skip to content

Latest commit

 

History

History
64 lines (54 loc) · 6.79 KB

TASK2.md

File metadata and controls

64 lines (54 loc) · 6.79 KB

Задание 2

Необходимо реализовать бизнес-приложение с использованием Persistent Storage Unit из задания 1. Приложение имитирует телефонную книгу в бумажном варианте: дает возможность вносить записи контактов, вычеркивать их и получать их по начальной литере. Для приложения необходим HTTP API. Заказчиком принято решение проводить разработку приложения и выпуск его на рынок в два этапа:

  • Phone Book v1.0:
    • реализует операции записи в телефонную книгу, вычеркивания контакта из телефонной книги и получения списка контактов по литере.
    • записи представляют из себя Имя, Фамилию и один телефон.
    • литера в телефонной книге, по которой размещается запись - первая буква Фамилии.
  • Phone Book v1.1, в дополнение к предыдущей версии:
    • телефонов у контакта может быть более одного.
    • у контакта появляется Никнейм, по первой букве которого также можно найти его в телефонной книге. Обе версии приложения работают с одним и тем же Persistent Storage Unit одновременно (хранилище не меняется после выпуска новой версии приложения), обновление до версии 1.1 происходит постепенно на нескольких серверах. Корректно поддерживаются случаи:
  • приложение v1.1 корректно читает данные, записанные приложением v1.0 (обратная совместимость)
  • приложение v1.0 корректно читает данные, записанные приложением v1.1 (прямая совместимость)
  • приложение v1.1 может вычеркивать данные, записанные приложением v1.0 (обратная совместимость) Требуется реализовать обе версии приложения, тесты для каждой из версий отдельно и эволюционные тесты, показывающие что совместимость операций в случаях выше не нарушается. Для задачи поставляются:
  • интерфейс PhoneBookApi, описывающий операции с телефонной книгой
  • интерфейс Record, описывающий запись в телефонной книге

Требуется:

  • синхронизировать {your-awesome-team-fork-repo} c upstream для получения обновленных файлов https://help.github.com/articles/syncing-a-fork/, устранить конфликты в результате merge
  • выбрать формат кодирования записей, описать схему если таковая необходима. Важно, что операция вычеркивания может быть реализована разными способами: удалением записи в хранилище или помечанием записи удаленной без явного стирания.
  • реализовать модель, функциональность, HTTP API и контейнер для Phone Book v1.0
  • реализовать клиент к HTTP API телефонной книги. Он нам пригодится в тестах.
  • реализовать интеграционные тесты приложения с поднятием контейнеров Phone Book v1.0 и Persistent Storage Unit. В случае недоступности хранилища приложение не падает, а отвечает внятной ошибкой. Не приводят к потере данных перезапуски ни приложения, ни хранилища. Тесты должны охватывать случаи
    • создания нового контакта,
    • изменения существующего контакта,
    • вычеркивания контакта,
    • повторной записи контакта,
    • получения списка контактов по литере,
    • операций выше при недоступности хранилища
  • реализовать модель, функциональность, HTTP API и контейнер для Phone Book v1.1
  • реализовать интеграционные тесты приложения с участием контейнеров Phone Book v1.1 и Persistent Storage Unit. Требования к отказоустойчивости и полноте тестов аналогичны v1.0.
  • реализовать тесты, проверяющие обратную и прямую совместимость операций чтения и обратную для операции вычеркивания
  • описать в INSTALL_TASK2.md специфику сборки приложений и запуска интеграционных тестов
  • описать в README_TASK2.md что было реализовано, описание проблем, не решенных в коде и требующих дальнейшего рассмотрения, неявных моментов. Обязательно добавить название и список участников команды.
  • прислать PR {your-awesome-team-fork-repo}/csc-bdse-task2 => {your-awesome-team-fork-repo}/master (добавить alesavin, dormidon, semkagtn, 747mmHg в ревьюеры)
  • добавить ссылку на PR в топик задания 2 курса на https://compscicenter.ru

Дополнительно:

  • поддержка компрессии записей на уровне приложения: записи в телефонной книге могут сжиматься перед сохранением и разжиматься после чтения из Persistent Storage Unit. Предполагается, что компрессия вводится в Phone Book v1.1, поэтому возможность считывать несжатые записи должна сохраниться.