Skip to content

sventserg/architecture-warmhouse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Project_template

Это шаблон для решения проектной работы. Структура этого файла повторяет структуру заданий. Заполняйте его по мере работы над решением.

Задание 1. Анализ и планирование

Чтобы составить документ с описанием текущей архитектуры приложения, можно часть информации взять из описания компании и условия задания. Это нормально.

1. Описание функциональности монолитного приложения

Управление отоплением:

  • Пользователи могут удалённо включать/выключать отопление в своих домах
  • Система поддерживает управление отоплением через web-интерфейс
  • Подключение к системе происходит с помощью выезда специалиста
  • Самостоятельное подключение к системе пользователям не доступно

Мониторинг температуры:

  • Пользователи могут просмартивать текущую температуру в своих домах через web-интерфейс
  • Система поддерживает синхронную передачу данных
  • Система получает данные о температуре с датчиков, установленных в домах
  • Подключение датчиков происходит с помощью выезда специалиста
  • Самостоятельное подключение датчиков к системе пользователям не доступно

2. Анализ архитектуры монолитного приложения

  • Язык программирования: Go
  • База данных: PostgreSQL
  • Архитектура: Монолитная, все компоненты системы (обработка запросов, бизнес-логика, работа с данными) находятся в рамках одного приложения.
  • Взаимодействие: Синхронное, запросы обрабатываются последовательно.
  • Масштабируемость: Ограничена, так как монолит сложно масштабировать по частям.
  • Развертывание: Требует остановки всего приложения.

3. Определение доменов и границы контекстов

  • Домен "Управление устройствами", контекст "Включение/выключение системы отопления"
  • Домен "Мониторинг температуры", контекст "Просмотр данных о температуре"
  • Домен "Подключение устройств", контекст "Подключение нового устройства к системе"

4. Проблемы монолитного решения

  • Масштабируемость ограничена
  • Развертывание требует остановки всего приложения
  • Разработка замедлена
  • Высокий риск ошибок

5. Визуализация контекста системы — диаграмма С4

Диаграмма контекста

Задание 2. Проектирование микросервисной архитектуры

В этом задании вам нужно предоставить только диаграммы в модели C4. Мы не просим вас отдельно описывать получившиеся микросервисы и то, как вы определили взаимодействия между компонентами To-Be системы. Если вы правильно подготовите диаграммы C4, они и так это покажут.

Диаграмма контейнеров (Containers)

Диаграмма контейнеров

Диаграмма компонентов (Components)

Диаграмма кода (Code)

User Controller

Задание 3. Разработка ER-диаграммы

ER Диаграмма

Задание 4. Создание и документирование API

1. Тип API

Async API имеет следующие преимущества:

  • уменьшение нагрузки на сервер
  • хорошая масштабируемость
  • лучше подходит для работы с умными устройствами

2. Документация API

Документация API

Задание 5. Работа с docker и docker-compose

Перейдите в apps.

Там находится приложение-монолит для работы с датчиками температуры. В README.md описано как запустить решение.

Вам нужно:

  1. сделать простое приложение 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"
		}
	}
  1. Приложение следует упаковать в Docker и добавить в docker-compose. Порт по умолчанию должен быть 8081

  2. Кроме того для smart_home приложения требуется база данных - добавьте в docker-compose файл настройки для запуска postgres с указанием скрипта инициализации ./smart_home/init.sql

Для проверки можно использовать Postman коллекцию smarthome-api.postman_collection.json и вызвать:

  • Create Sensor
  • Get All Sensors

Должно при каждом вызове отображаться разное значение температуры

Ревьюер будет проверять точно так же.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published