Skip to content

Commit

Permalink
task #1
Browse files Browse the repository at this point in the history
  • Loading branch information
EnKaspransky committed Oct 10, 2024
1 parent 7e437cc commit 63c1581
Show file tree
Hide file tree
Showing 13 changed files with 783 additions and 0 deletions.
43 changes: 43 additions & 0 deletions smart-home-monolith/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,46 @@
# AsIs

## Текущая функциональтность:
- удалённое включение/отключение отопления
- установка желаемой температуры
- просмотр текущей температуры
- просмотр текущего состояние

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

## Структура:

/docs
/AsIs // каталог с описанием текущего состояния
c4_container.puml // c4 диаграмма контейнеров
c4_context.puml // c4 диаграмма конекста

# ToBe

## Структура:

/docs
/ToBe // каталог с планируемым состоянием
/component // каталог с c4 диаграммами компонентов
c4_component_api_gateway.puml
c4_component_auth_service.puml
c4_component_command_service.puml
c4_component_device_manager_service.puml
c4_component_telemetry_service.puml
c4_component_telemetry_shovel_service.puml
api.yaml // описание API
c4_container.puml // c4 диаграмма контейнеров
c4_context.puml // c4 диаграмма конекста
ER.puml // ER-диаграмма



# Smart Home Monolith

## Описание
Expand Down
26 changes: 26 additions & 0 deletions smart-home-monolith/docs/AsIs/c4_container.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
@startuml
!include <C4/C4_Container>

title Smart home hearting system. AsIs C4 container diagram

AddRelTag("external_flow", $lineStyle = DashedLine()")

Person(user, "User", $sprite="person", "Пользователь системы отопления")
System_Boundary(c1, Smart Home App) {
Container(client, "Web Client", "На аутсорсе", "Веб интерфейс")
Container(server, "Web server", "java", "Back-end")
ContainerDb(database, "DB", "Postgresql", "База данных")
}

System_Ext(hearting_system, "Hearting system", "Система управления отоплением")
System_Ext(temperature_sensor, "Temperature sensor", "Датчик температуры")


Rel(user, client, "Uses", "HTTPS")
Rel(client, server, "Uses", "HTTPS")
Rel(server, database, "Uses", "TCP/IP")
Rel(server, hearting_system, "Uses", "HTTPS", $tags="external_flow")
Rel(server, temperature_sensor, "Uses", "HTTPS", $tags="external_flow")

SHOW_LEGEND()
@enduml
18 changes: 18 additions & 0 deletions smart-home-monolith/docs/AsIs/c4_context.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
@startuml
!include <C4/C4_Context>

title Smart home hearting system. AsIs C4 context diagram

Person(user, "User", $sprite="person", "Пользователь системы отопления")

System(smart_home_app, "Smart Home App", "Управление системой отопленя и мониторинг температуры")

System_Ext(hearting_system, "Hearting system", "Система управления отоплением")
System_Ext(temperature_sensor, "Temperature sensor", "Датчик температуры")

Rel(user, smart_home_app, "Uses", "Управление системой отопления, мониторинг температуры")
Rel(smart_home_app, hearting_system, "Uses", "Управление системой отопления")
Rel(smart_home_app, temperature_sensor, "Uses", "Получение температуры с датчика")

SHOW_LEGEND()
@enduml
44 changes: 44 additions & 0 deletions smart-home-monolith/docs/ToBe/ER.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
@startuml
entity "User" as user {
* id : UUID
* username : String
* first_name : String
* last_name : String
* email : String
* password : String
}

entity "House" as house {
* id : UUID
* address : String
* description : String
* user_id : UUID
}

entity "Device" as device {
* id : UUID
* houseId : UUID
* name : String
* type : String
* description : String
* serial_number : String
}

entity "DeviceType" as deviceType {
* id : UUID
* type_name : String
* description : String
}

entity "TelemetryData" as telemetryData {
* id : UUID
* device_id : UUID
* created_on : DateTime
* data : JSON
}

user --o{ house : owns
house --o{ device : contains
device --o{ telemetryData : generates
device --o{ deviceType : type_is
@enduml
Loading

0 comments on commit 63c1581

Please sign in to comment.