현제 구현한 1대1 채팅 기능이 어떻게 작동이 되는지 시퀸스 다이어그램을 통해 알려드리겠습니다.
왜 기능을 구현할때 시퀸스 다이어그램으로 정리하는 이유가 무엇인가요?
시퀀스 다이어그램을 그려야 하는 이유는 시스템 설계와 기능 구현 과정에서의 명확한 이해와 커뮤니케이션을 돕기 위해서입니다. 이를 구체적으로 살펴보면 다음과 같습니다:
1. 기능의 흐름을 시각화
- 시퀀스 다이어그램은 사용자와 시스템 간의 상호작용, 또는 시스템 내부의 컴포넌트 간 데이터 흐름을 시간 순서에 따라 시각적으로 표현합니다.
- 이를 통해 기능의 동작 방식을 한눈에 파악할 수 있어 설계 과정에서 누락된 부분이나 비효율적인 흐름을 사전에 발견할 수 있습니다.
2. 명확한 요구사항 분석
- 시퀀스 다이어그램은 요구사항을 기능적으로 상세히 표현하기에 적합합니다.
- 각 단계의 요청과 응답, 처리 결과를 명확히 나타내어 개발 중 요구사항의 오해나 잘못된 구현을 방지할 수 있습니다.
3. 효율적인 팀원 간 커뮤니케이션
- 여러 명이 협업하는 프로젝트에서, 시퀀스 다이어그램은 팀원 간의 의사소통 도구로 활용됩니다.
- 다이어그램을 통해 각자가 이해한 시스템 동작 방식을 공유하고, 잘못된 이해를 수정하며, 작업 분담을 명확히 할 수 있습니다.
4. 복잡한 로직의 단순화
- 복잡한 비즈니스 로직이나 다양한 컴포넌트 간 상호작용을 다룰 때, 시퀀스 다이어그램은 이를 단순화하여 체계적으로 정리하는 데 도움을 줍니다.
- 이를 통해 설계자나 개발자가 쉽게 이해하고, 디버깅 또는 개선 작업 시에도 유용한 기준점이 됩니다.
5. 테스트 설계 및 검증 지원
- 시퀀스 다이어그램은 테스트를 설계할 때에도 유용합니다.
- 각 단계에서 발생하는 입력, 출력, 예외 상황 등을 사전에 정의하여 테스트 케이스를 체계적으로 작성할 수 있습니다.
- 구현된 기능이 설계와 일치하는지 검증하는 데 기준이 됩니다.
6. 유지보수 및 확장성 확보
- 시간이 지난 후 코드를 읽는 것보다 시퀀스 다이어그램을 보는 것이 시스템 이해에 더 직관적입니다.
- 이를 통해 유지보수 작업이나 새로운 기능 추가 시, 기존 시스템과의 연관성을 쉽게 파악할 수 있어 개발 속도와 정확성을 높일 수 있습니다.
- 결론적으로, 시퀀스 다이어그램은 기능 구현 과정에서 효율적 설계, 명확한 커뮤니케이션, 시스템 최적화, 테스트 설계를 가능하게 하며, 장기적인 유지보수와 확장성까지 고려할 수 있는 중요한 도구입니다.
다이어그램 설명
1. 사용자 A가 메시지를 전송:
- 사용자 A가 WebSocket 연결을 통해 메시지를 보낸다.
- STOMP 프로토콜을 통해 서버로 메시지가 전달된다.
2. 서버에서 메시지 처리 및 RabbitMQ로 전달:
- 서버는 STOMP 메시지를 수신하고 RabbitMQ에 메시지를 큐잉하여 저장한다.
- RabbitMQ는 안정적인 메시지 전달을 위해 큐를 사용하며, 메시지를 대기열에 추가해 사용자 B에게 전달 준비를 한다.
3. RabbitMQ에서 메시지 전달:
- 사용자 B가 활성 상태(즉, 수신할 준비가 되어 있을 때) RabbitMQ 큐에서 메시지를 가져와 사용자 B의 WebSocket 연결을 통해 메시지를 전달한다.
4. MongoDB에 메시지 저장:
- 서버는 메시지를 MongoDB에 영구 저장하여 대화 내역을 보관한다.
- MongoDB는 각 채팅 방 ID를 기준으로 메시지를 기록해 대화 기록을 관리한다.
5. 사용자 B가 메시지 수신 및 확인 응답:
사용자 B가 WebSocket-STOMP를 통해 메시지를 수신하고 확인 응답을 서버로 보낸다.
확인 응답은 RabbitMQ를 통해 사용자 A에게 전달된다.
시퀸스 다이어그램 구성 요소
WebSocket Server: STOMP를 통해 사용자 간 메시지를 중계하고 RabbitMQ와 MongoDB 간 메시지 트래픽을 관리한다.
RabbitMQ: 메시지 큐로 메시지 전달의 안정성을 보장하고, 중간 저장소 역할을 한다.
MongoDB: 채팅 내역을 영구히 저장해 대화 기록을 관리한다.
'우리 지금 만나' 카테고리의 다른 글
인프라 설계 설명-(12)(우리 지금 만나) (5) | 2024.11.30 |
---|---|
1대1매칭 이후 1대1 채팅으로 이어지는 시퀸스 다이어 그램-(11)(우리 지금 만나) (0) | 2024.11.28 |
채팅 시스템 성능 개선-(9)(우리 지금 만나) (0) | 2024.11.17 |
1대1 채팅 서비스 구현 계획-(8)(우리 지금 만나) (0) | 2024.11.07 |
인프라 난항2-(7)(우리 지금 만나) (2) | 2024.11.03 |