Реализация проекта микросервисного бекенда.
- Реализация межсервисной коммуникации,
- Изучение работы с брокерами сообщений,
- Изучение архитектурных паттернов,
- Изучение работы со средствами оркестрации на примере .NET Aspire,
- Повторение основ работы с системами контроля версий,
- Интеграционное тестирование.
1. «Кэширование» - Реализация сервиса генерации контрактов, кэширование его ответов
В рамках первой лабораторной работы необходимо:
- Реализовать сервис генерации контрактов на основе Bogus,
- Реализовать кеширование при помощи IDistributedCache и Redis,
- Реализовать структурное логирование сервиса генерации,
- Настроить оркестрацию Aspire.
2. «Балансировка нагрузки» - Реализация апи гейтвея, настройка его работы
В рамках второй лабораторной работы необходимо:
- Настроить оркестрацию на запуск нескольких реплик сервиса генерации,
- Реализовать апи гейтвей на основе Ocelot,
- Настроить балансировку нагрузки по заданному алгоритму.
3. «Интеграционное тестирование» - Реализация файлового сервиса и объектного хранилища, интеграционное тестирование бекенда
В рамках третьей лабораторной работы необходимо:
- Добавить в оркестрацию объектное хранилище,
- Реализовать файловый сервис, сериализующий сгенерированные данные в файлы и сохраняющий их в объектном хранилище,
- Реализовать отправку генерируемых данных в файловый сервис посредством брокера,
- Реализовать интеграционные тесты, проверяющие корректность работы всех сервисов бекенда вместе.
4. (Опционально) «Переход на облачную инфраструктуру» - Перенос бекенда в Yandex Cloud
В рамках четвертой лабораторной работы необходимо перенестиервисы на облако все ранее разработанные сервисы:
- Клиент - в хостинг через отдельный бакет Object Storage,
- Сервис генерации - в Cloud Function,
- Апи гейтвей - в Serverless Integration как API Gateway,
- Брокер сообщений - в Message Queue,
- Файловый сервис - в Cloud Function,
- Объектное хранилище - в отдельный бакет Object Storage,
Обязательно:
- Реализация серверной части на .NET 8.
- Оркестрация проектов при помощи .NET Aspire.
- Реализация сервиса генерации данных при помощи Bogus.
- Реализация тестов с использованием xUnit.
- Создание минимальной документации к проекту: страница на GitHub с информацией о задании, скриншоты приложения и прочая информация.
Факультативно:
- Реализация кастомного алгоритма балансировки нагрузки, не явялющегося аналогом доступного в Ocelot из коробки
- Перенос бекенда на облачную инфраструктуру Yandex Cloud
Внимательно прочитайте дискуссии о том, как работает автоматическое распределение на ревью. Сразу корректно называйте свои pr, чтобы они попали на ревью нужному преподавателю.
По итогу работы в семестре должна получиться следующая информационная система:
Номер варианта задания присваивается в начале семестра. Изменить его нельзя. Каждый вариант имеет уникальную комбинацию из предметной области, базы данных и технологии для общения сервиса генерации данных и сервера апи.
Список вариантов
Список предметных областей
На каждую из лабораторных работ необходимо сделать отдельный Pull Request (PR).
Общая схема:
- Сделать форк данного репозитория
- Выполнить задание
- Сделать PR в данный репозиторий
- Исправить замечания после code review
- Получить approve
Конкурентный принцип. Так как задания в первой лабораторной будут повторяться между студентами, то выделяются следующие показатели для оценки:
- Скорость разработки
- Качество разработки
- Полнота выполнения задания
Быстрее делаете PR - у вас преимущество. Быстрее получаете Approve - у вас преимущество. Выполните нечто немного выходящее за рамки проекта - у вас преимущество. Не укладываетесь в дедлайн - получаете минимально возможный балл.
- 3 балла за качество кода, из них:
- 2 балла - базовая оценка
- 1 балл (но не более) можно получить за выполнение любого из следующих пунктов:
- Реализация факультативного функционала
- Выполнение работы раньше других: первые 5 человек из каждой группы, которые сделали PR и получили approve, получают дополнительный балл
Чтобы задать вопрос по лабораторной, воспользуйтесь соответствующим разделом дискуссий или заведите ишью.
Если у вас появились идеи/пожелания/прочие полезные мысли по преподаваемой дисциплине, их можно оставить здесь.
