개요
피드백을 받은대로 시퀀스 다이어그램 작성이 완료되었다.
시퀀스 다이어그램을 기반으로 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
완성된 클래스 다이어그램
느낀 점
정말 설계의 중요성을 알게 되었다. 설계 후, 클래스 다이어그램까지 그리면 코드는 단순히 구현이 쉽다는 것을 알게 되었다.
'프로젝트 > webflux 채팅서버' 카테고리의 다른 글
로깅, 푸시 알림 요청 비동기로 처리하기 (0) | 2025.02.14 |
---|---|
PlantUML을 이용하여 시퀀스 다이어그램 설계 (1) (0) | 2025.02.04 |