프로젝트/webflux 채팅서버
시퀀스 다이어그램 기반, 클래스 다이어그램 작성해보기
개발하는 민우
2025. 2. 17. 00:54
개요
피드백을 받은대로 시퀀스 다이어그램 작성이 완료되었다.
시퀀스 다이어그램을 기반으로 PlantUML을 사용하여 클래스 다이어그램도 그려보자!
코드
@startuml
'class에 대한 주요 요소들을 정의'
class Client {
- accessToken: String
- chatRoomPK: String
- content: String
+ sendChatRequest(): void
}
class ChatServer {
- database: Database
- pushServer: PushServer
- accessToken: String
- userPK: String
- chatRoomPK: String
- content: String
+ validateAccessToken(): boolean
+ processChatRequest(): void
+ storeChatData(): void
+ sendPushNotification(): void
+ logRequest(): void
+ logError(): void
}
class PushServer {
- deviceId: String
+ sendPushNotification(): void
}
class Database {
+ saveChatRecord(): Chat
+ queryUserChatRoom(): boolean
+ getUserDeviceList(): List<String>
}
class serverLog {
+ logRequest(): void
+ logError(): void
}
class errorLog {
+ logError(): void
}
class Chat {
- chatPK: String
- chatRoomFK: String
- userFK: String
- chatData: String
}
class User {
- userPK: String
- accessToken: String
- deviceId: String
}
ChatServer "1" *-- "1" Database : interacts with >
ChatServer "1" *-- "1" PushServer : interacts with >
ChatServer "1" *-- "1" serverLog : logs to >
ChatServer "1" *-- "1" errorLog : logs errors to >
Client "1" *-- "1" ChatServer : sends requests to >
PushServer "1" *-- "1" Database : accesses device list from >
Database "1" *-- "*" Chat : stores chat records >
@enduml
완성된 클래스 다이어그램
느낀 점
정말 설계의 중요성을 알게 되었다. 설계 후, 클래스 다이어그램까지 그리면 코드는 단순히 구현이 쉽다는 것을 알게 되었다.