Skip to content

anonimpopov/final-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Итоговый проект 2023

Задание

Разработать систему заказа такси. Сервисы должны удовлетворять контрактам из репозитория. Разработать схемы для хранения данных, написать миграции и заполнить базы данных тестовыми данными.

Обеспечить наблюдаемость работы сервисов:

  • сервисы должны писать структурированный логи в stdout,stderr
  • писать метрики в prometheus
  • обеспечивать возможности сквозной трассировки (обрабатывать данные трассировки в заголовках запросов/сообщениях kafka, писать данные о трассировке в jaeger).

Обеспечить возможность развертывания сервисов и их зависимостей в docker с использованием docker compose.

  • баз данных
  • kafka
  • jaeger
  • prometheus
  • grafana (опционально)

Разработать тесты

Покрыть сервисы unit и интеграционными тестами.

Студенты ВШЭ реализуют сервисы

  • Driver
  • Location

Студенты МФТИ реализуют сервисы

  • Client
  • Offering
  • Trip

Требования

  • команда работает в монорепозитории (все разрабатываемые сервисы должны находиться в одном репозитории)
  • для тестирования сервисов разрабатываемых другими командами необходимо разработать моки на основании контрактов
  • использовать подход чистая архитектура
  • использовать https://github.com/golang-standards/project-layout
  • все настраиваемые параметры должны передаваться через env, создать файл .env.dev с настройками для работы сервисов в окружении для разработки.

Система оценки

Реализация всех требований основного задания - 7 баллов

Покрытие тестами > 60% + 1 балл

Уведомление клиентов и водителей об изменении состояния поездки/предложении поездки через Websocket (масштабируемое решение с использованием pub/sub) + 1 балл

Предложить ментору улучшение системы и реализовать после согласования + 1 балл

Общая схема системы

schema

Client Service

Отвечает за управление заказом со стороны клиента (создание, отмена, получение обновлений). Реагирует на события об изменении состояния поездки.

Trip Service

Отвечает за управление состоянием поездки. Публикует события об изменении состояния поздки в отдельный топик. Реагирует на команды в специальном топике.

Driver Service

Отвечает за управление заказом со стороны водителя (принятие, отмена, завершение, получение заказов) Отвечает за поиск исполнителя заказа. Реагирует на события об изменении состояния поездки.

Location Service

Отвечает за хранение и предоставление данных о местонахождении водителей

Offering Service

Отвечает за создание предложения. Рассчитвает стоимость поездки (методика рассчета на усмотрение студента).

Состояния поздки

ON_POSITION не нужно реализовывать (он на будущее). в Trip svc переход из DRIVER_FOUND сразу в STARTED states

Процесс успешной поездки

process1

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published