Это шаблон для решения проектной работы. Структура этого файла повторяет структуру заданий. Заполняйте его по мере работы над решением.
Чтобы составить документ с описанием текущей архитектуры приложения, можно часть информации взять из описания компании и условия задания. Это нормально.
1. Описание функциональности монолитного приложенияУправление отоплением:
- Пользователи могут…
- Система поддерживает…
- …
Мониторинг температуры:
- Пользователи могут…
- Система поддерживает…
- …
Перечислите здесь основные особенности текущего приложения: какой язык программирования используется, какая база данных, как организовано взаимодействие между компонентами и так далее.
Опишите здесь домены, которые вы выделили.
- …
- …
- …
Если вы считаете, что текущее решение не вызывает проблем, аргументируйте свою позицию.
Добавьте сюда диаграмму контекста в модели C4.
Чтобы добавить ссылку в файл Readme.md, нужно использовать синтаксис Markdown. Это делают так:
[Текст ссылки](URL)
Замените Текст ссылки
текстом, который хотите использовать для ссылки. Вместо URL
вставьте адрес, на который должна вести ссылка. Например:
[Посетите Яндекс](https://ya.ru/)
В этом задании вам нужно предоставить только диаграммы в модели C4. Мы не просим вас отдельно описывать получившиеся микросервисы и то, как вы определили взаимодействия между компонентами To-Be системы. Если вы правильно подготовите диаграммы C4, они и так это покажут.
Диаграмма контейнеров (Containers)
Добавьте диаграмму.
Диаграмма компонентов (Components)
Добавьте диаграмму для каждого из выделенных микросервисов.
Диаграмма кода (Code)
Добавьте одну диаграмму или несколько.
Добавьте сюда ER-диаграмму. Она должна отражать ключевые сущности системы, их атрибуты и тип связей между ними.
Укажите, какой тип API вы будете использовать для взаимодействия микросервисов. Объясните своё решение.
Здесь приложите ссылки на документацию API для микросервисов, которые вы спроектировали в первой части проектной работы. Для документирования используйте Swagger/OpenAPI или AsyncAPI.
Перейдите в apps.
Там находится приложение-монолит для работы с датчиками температуры. В README.md описано как запустить решение.
Вам нужно:
- сделать простое приложение temperature-api на любом удобном для вас языке программирования, которое при запросе /temperature?location= будет отдавать рандомное значение температуры.
Locations - название комнаты, sensorId - идентификатор названия комнаты
// If no location is provided, use a default based on sensor ID
if location == "" {
switch sensorID {
case "1":
location = "Living Room"
case "2":
location = "Bedroom"
case "3":
location = "Kitchen"
default:
location = "Unknown"
}
}
// If no sensor ID is provided, generate one based on location
if sensorID == "" {
switch location {
case "Living Room":
sensorID = "1"
case "Bedroom":
sensorID = "2"
case "Kitchen":
sensorID = "3"
default:
sensorID = "0"
}
}
-
Приложение следует упаковать в Docker и добавить в docker-compose. Порт по умолчанию должен быть 8081
-
Кроме того для smart_home приложения требуется база данных - добавьте в docker-compose файл настройки для запуска postgres с указанием скрипта инициализации ./smart_home/init.sql
Для проверки можно использовать Postman коллекцию smarthome-api.postman_collection.json и вызвать:
- Create Sensor
- Get All Sensors
Должно при каждом вызове отображаться разное значение температуры
Ревьюер будет проверять точно так же.
Необходимо создать новые микросервисы и обеспечить их интеграции с существующим монолитом для плавного перехода к микросервисной архитектуре.
- Создайте новые микросервисы для управления телеметрией и устройствами (с простейшей логикой), которые будут интегрированы с существующим монолитным приложением. Каждый микросервис на своем ООП языке.
- Обеспечьте взаимодействие между микросервисами и монолитом (при желании с помощью брокера сообщений), чтобы постепенно перенести функциональность из монолита в микросервисы.
В результате у вас должны быть созданы Dockerfiles и docker-compose для запуска микросервисов.