Как спроектировать канбан-доску

Как спроектировать канбан-доску

18 февраля 2023 г.

Вот некоторые из популярных реализаций доски Канбан:

  • Трелло
  • Доска JIRA
  • Планировщик Microsoft
  • Доска асан

Требования

  • Пользователь может создавать списки и назначать задачи на доске Канбан.
  • Пользователь может видеть изменения на канбан-доске почти в реальном времени.
  • Пользователь может вносить изменения на канбан-доске в автономном режиме.
  • Канбан-доска распространяется

Хранение данных

Схема базы данных

Kanban board; Database schema

* Основными объектами являются доски, списки и таблицы задач. * Связь между досками и таблицами списков 1-ко-многим * Связь между таблицами списков и задач 1 ко многим * Создана дополнительная таблица для отслеживания версий платы

Тип хранилища данных

* Хранилище документов, такое как MongoDB, сохраняет метаданные задач для улучшенной поддержки денормализации (возможность запрашивать и индексировать подполя документа) * Временные данные (уровень активности платы) хранятся на кэш-сервере, таком как Redis. * Очередь загрузки для активности форума реализована с использованием очереди сообщений, такой как Apache Kafka

Дизайн высокого уровня

  • Изменения на канбан-доске синхронизируются в режиме реального времени через соединение WebSocket.
  • Автономный клиент синхронизирует дельту изменений при повторном подключении.

Рабочий процесс

Kanban board; Architecture

  1. Клиент-A создает WebSocket соединение с балансировщиком нагрузки, чтобы передавать изменения в режиме реального времени.
  2. Балансировщик нагрузки (HAProxy) использует циклический алгоритм для делегирования клиентского подключения серверу веб-сокетов со свободной емкостью< /li>
  3. Изменения на канбан-доске сохраняются в хранилище документов.
  4. Последовательное хеширование (ключ = идентификатор доски) используется для делегирования подключения WebSocket соответствующей публикации-подписки ( pub-sub) сервер
  5. Сервер публикации и подписки (Apache Kafka) делегирует подключение через веб-сокет подписанным серверам веб-сокетов.
  6. Сервер веб-сокетов получает изменения в хранилище документов
  7. Соединение WebSocket может устанавливать дуплексную связь с другими слушающими клиентами через балансировщик нагрузки.
  8. Клиент-Б получает изменения на доске Канбан.
  9. Кэш-сервер хранит временные метаданные, такие как уровень активности сеанса или временный ключ аутентификации.
  10. Очередь загрузки для воспроизведения изменений в последовательном порядке реализована с использованием очереди сообщений.
  11. Изменения асинхронно распространяются на подписчики (реплики) хранилища документов для обеспечения согласованности в конечном итоге.
  12. CDN предоставляет клиенту одностраничное динамическое приложение для уменьшения задержки.
  13. Одностраничное приложение кешируется в браузере, чтобы уменьшить задержку последующих запросов.
  14. Архитектура, управляемая событиями, может быть хорошим выбором для мгновенного распространения обновлений.
  15. Клиент вызывает логику сервера через тонкую оболочку через соединение WebSocket.
  16. Политика LRU используется для исключения серверов кеша
  17. Хранилище документов позволяет относительно просто запускать разные версии канбан-доски в одной и той же базе данных без значительных миграций схемы БД.
  18. Хранилище документов реплицируется с использованием топологии ведущий-ведомый.
  19. Онлайн-клиенты получают изменения из главного хранилища документов.
  20. Автономные клиенты получают изменения от подписчиков хранилища документов.
  21. Офлайн-клиенты локально сохраняют набор изменений с отметкой времени и отправляют дельту набора изменений при повторном подключении.
  22. Набор изменений воспроизводится в последовательном порядке, чтобы предотвратить сбои иерархии данных.
  23. Клиент синхронизирует только недавно просмотренные и отмеченные звездочкой доски для повышения производительности.
  24. Новый TCP WebSocket должен быть установлен при сбое сервера
  25. Для разрешения конфликтов на доске используется политика «последняя запись — победа».
  26. Для повышения отказоустойчивости в службе синхронизации должна быть реализована экспоненциальная отсрочка.

Ссылки


Также опубликовано здесь.

Избранное изображение источник.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE