djeon e1d411e989 외부 시퀀스 설계 가이드 및 설계서 추가
- 외부 시퀀스 설계 가이드 다운로드 (claude/sequence-outer-design.md)
- 외부 시퀀스 설계 디렉토리 생성 (design/backend/sequence/)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 13:23:50 +09:00

13 KiB

외부 시퀀스 설계서 (Outer Sequence Design)

개요

본 문서는 회의록 작성 및 공유 개선 서비스의 외부 시퀀스 다이어그램을 설명합니다. 외부 시퀀스는 마이크로서비스 간의 통신 흐름을 나타내며, 주요 사용자 플로우별로 서비스 간 상호작용을 정의합니다.

문서 정보

  • 작성일: 2025-10-22
  • 작성자: 홍길동 (Architect)
  • 버전: 2.0
  • 설계 원칙: 공통설계원칙 및 외부시퀀스설계가이드 준용

병렬 처리 전략 적용

  • Group A (순차): 회의 생애주기 플로우 (플로우 10-13)
  • Group B (독립): Todo 관리 플로우 (플로우 14)
  • Group C (독립): 회의록 조회/수정 플로우 (플로우 15)
  • 3개 서브 에이전트가 병렬로 작업하여 전체 작업 시간 약 60% 단축

외부 시퀀스 목록

1. 사용자 인증 및 대시보드 조회

  • 파일: 01-사용자인증및대시보드조회.puml
  • 관련 유저스토리: AFR-USER-010, AFR-USER-020
  • 참여 서비스:
    • Web App
    • API Gateway
    • User Service
    • Meeting Service
    • Todo Service
    • Redis (Cache)
    • PostgreSQL (User DB, Meeting DB, Todo DB)

주요 흐름:

  1. 사용자 인증:

    • 사용자가 사번과 비밀번호로 로그인
    • User Service가 LDAP 연동하여 인증
    • JWT 토큰 생성 및 사용자 프로필 Redis 캐싱 (TTL: 30분)
    • 인증 성공 시 토큰 반환
  2. 대시보드 데이터 조회:

    • 예정된 회의 조회 (Meeting Service)
      • Redis 캐시 확인 → Cache Miss → DB 조회 → 캐싱 (TTL: 10분)
    • 진행 중 Todo 조회 (Todo Service)
      • Redis 캐시 확인 → Cache Hit → 캐시에서 직접 반환
    • 최근 회의록 조회 (Meeting Service)
      • Redis 캐시 확인 → Cache Miss → DB 조회 → 캐싱 (TTL: 10분)
    • Todo 통계 조회 (Todo Service)
      • Redis 캐시 확인 → Cache Hit → 캐시에서 직접 반환

적용 패턴:

  • Cache-Aside Pattern: 캐시 우선 조회로 DB 부하 감소
  • JWT 인증: API Gateway에서 일괄 토큰 검증
  • LDAP 연동: 기업 사용자 인증

성능 목표:

  • API 응답 시간 (P95): < 500ms
  • Cache Hit Rate: > 70%

2. 회의 예약 및 초대

  • 파일: 02-회의예약및초대.puml
  • 관련 유저스토리: UFR-MEET-010
  • 참여 서비스:
    • Web App
    • API Gateway
    • Meeting Service
    • User Service
    • Notification Service
    • RabbitMQ (Message Broker)
    • Redis (Cache)
    • PostgreSQL (Meeting DB, User DB, Notification DB)

주요 흐름:

  1. 회의 예약:

    • 사용자가 회의 정보 입력 (제목, 날짜/시간, 장소, 참석자)
    • 입력 유효성 검증 (필수 필드, 날짜 형식, 이메일 형식)
    • Meeting Service가 회의 생성 및 DB 저장
    • 회의 정보 Redis 캐싱 (TTL: 10분)
  2. 이벤트 발행:

    • Meeting Service가 MeetingCreated 이벤트를 RabbitMQ에 발행
      • Exchange: meeting.events
      • Routing Key: meeting.created
    • Notification Service가 이벤트 구독
  3. 초대 알림 발송:

    • Notification Service가 MeetingCreated 이벤트 수신
    • User Service에서 참석자 정보 조회 (캐시 우선)
    • 알림 메시지 생성 및 DB 저장
    • 각 참석자에게 이메일 초대 발송
    • 알림 상태 업데이트 (PENDING → SENT)
    • 리마인더 일정 생성 (회의 시작 30분 전)
  4. 결과 확인:

    • 사용자가 대시보드에서 새로 예약한 회의 확인
    • 캐시 무효화 후 DB 재조회 및 재캐싱

적용 패턴:

  • Publisher-Subscriber Pattern: 이벤트 기반 느슨한 결합
  • Queue-Based Load Leveling: 대량 알림 발송 시 부하 분산
  • Cache-Aside Pattern: 사용자 정보 캐싱으로 성능 향상
  • Asynchronous Processing: 알림 발송은 비동기로 처리

이벤트 스키마:

{
  "eventType": "MeetingCreated",
  "payload": {
    "meetingId": "uuid",
    "title": "프로젝트 킥오프 회의",
    "dateTime": "2025-02-01T14:00:00",
    "location": "회의실 A",
    "creatorId": "userId",
    "participants": ["user1@company.com", "user2@company.com"]
  }
}

성능 목표:

  • 회의 생성 응답 시간: < 300ms
  • 알림 발송 지연 시간: < 5초

설계 원칙

1. 통신 패턴

동기 통신 (REST API)

  • 적용 대상: 즉시 응답이 필요한 단순 조회
  • 특징:
    • API Gateway를 통한 일관된 인증/인가
    • 캐시 우선 전략으로 직접 의존성 최소화

비동기 통신 (Message Queue)

  • 적용 대상: 이벤트 기반 통신, 느슨한 결합
  • 특징:
    • RabbitMQ Topic Exchange를 통한 Pub/Sub 패턴
    • 이벤트 발행자와 구독자 간 느슨한 결합
    • 대량 작업 시 Queue-Based Load Leveling

2. 캐싱 전략 (Cache-Aside)

데이터 유형 TTL 캐시 키 패턴 무효화 시점
사용자 프로필 30분 user:profile:{userId} 프로필 수정 시
사용자 권한 1시간 user:auth:{userId} 권한 변경 시
회의 정보 10분 meeting:info:{meetingId} 회의 수정 시
회의 참여자 10분 meeting:participants:{meetingId} 참여자 변경 시
Todo 목록 5분 todo:user:{userId} Todo 상태 변경 시
Todo 통계 5분 todo:stats:{userId} Todo 완료 시

캐시 처리 플로우:

  1. 조회 요청 → Redis 캐시 확인
  2. Cache Hit → 캐시 데이터 반환
  3. Cache Miss → DB 조회 → Redis 저장 (TTL 설정) → 데이터 반환
  4. 데이터 수정 시 → DB 업데이트 → Redis 캐시 무효화

3. 이벤트 기반 아키텍처

RabbitMQ Exchange/Queue 구성

  • Topic Exchange: meeting.events, transcript.events, todo.events
  • Queue 네이밍: {service}.{event-category}.queue
  • Routing Key 패턴: {event}.{action} (예: meeting.created, todo.completed)

주요 이벤트

이벤트 발행자 구독자 목적
MeetingCreated Meeting Service Notification Service
AI Service
참석자 알림 발송
회의 분석 준비
MeetingEnded Meeting Service STT Service
AI Service
Todo Service
Notification Service
회의록 생성
AI 분석 시작
Todo 추출
종료 알림
TodoCreated Todo Service Notification Service 담당자 알림 발송

다이어그램 렌더링 방법

PlantUML 렌더링

1. Visual Studio Code 플러그인 사용

  1. PlantUML 확장 설치: jebbs.plantuml
  2. .puml 파일 열기
  3. Alt + D (미리보기) 또는 우클릭 → Preview Current Diagram

2. 온라인 렌더링

3. 로컬 PlantUML 서버

# Docker로 PlantUML 서버 실행
docker run -d --name plantuml -p 38080:8080 plantuml/plantuml-server:latest

# 브라우저에서 접근
http://localhost:38080

다음 단계

1. 내부 시퀀스 설계

각 서비스 내부의 상세 처리 흐름을 설계합니다:

  • User Service 내부 시퀀스 (인증 처리, 프로필 관리)
  • Meeting Service 내부 시퀀스 (회의 생성, 회의록 관리)
  • Notification Service 내부 시퀀스 (알림 발송, 리마인더 관리)

2. API 명세 작성

각 서비스별 REST API 명세를 OpenAPI 3.0 형식으로 작성합니다.

3. 클래스 설계

엔티티, DTO, 서비스 클래스 설계를 진행합니다.

4. 데이터 설계

각 서비스별 데이터베이스 스키마 설계를 진행합니다.


참고 자료



신규 플로우 (v2.0)

10. 회의 예약 및 초대

  • 파일: 회의예약및초대.puml
  • 관련 유저스토리: UFR-MEET-010
  • 참여 서비스: Frontend, API Gateway, Meeting Service, User Service, Redis, RabbitMQ, Notification Service, Meeting DB
  • 주요 특징:
    • Cache-Aside 패턴으로 참석자 정보 조회 (Redis 캐시 우선)
    • 회의 정보 저장 및 캐싱 (TTL: 10분)
    • MeetingCreated 이벤트 비동기 발행
    • Notification Service가 참석자 전원에게 초대 이메일 발송

11. 회의 시작 및 회의록 작성

  • 파일: 회의시작및회의록작성.puml
  • 관련 유저스토리: UFR-MEET-030, UFR-STT-010/020, UFR-AI-010, UFR-RAG-010/020, UFR-COLLAB-010
  • 참여 서비스: Frontend, API Gateway, Meeting Service, STT Service, AI Service, RAG Service, Collaboration Service, Redis, RabbitMQ, Azure Speech, LLM Server, 각 서비스 DB
  • 주요 특징:
    • 실시간 음성 인식 (Azure Speech, 5초 간격)
    • AI 기반 회의록 자동 작성 (LLM)
    • WebSocket 실시간 동기화 (델타만 전송)
    • RAG 기반 전문용어 감지 및 맥락 설명 제공
    • 가장 복잡한 플로우 (동기+비동기+실시간 혼합)

12. 회의 종료 및 Todo 추출

  • 파일: 회의종료및Todo추출.puml
  • 관련 유저스토리: UFR-MEET-040/050, UFR-AI-020, UFR-TODO-010
  • 참여 서비스: Frontend, API Gateway, Meeting Service, AI Service, Todo Service, Notification Service, Redis, RabbitMQ, LLM Server, 각 서비스 DB
  • 주요 특징:
    • 회의 통계 자동 생성 (duration, 참석자 수, 발언 수)
    • AI Todo 자동 추출 (액션 아이템 식별, 담당자 자동 지정)
    • 이벤트 체인: MeetingEnded → TodoExtracted → TodoCreated
    • Todo 목록 캐싱 (TTL: 5분)
    • 담당자에게 자동 알림 발송

13. 회의록 확정 및 공유

  • 파일: 회의록확정및공유.puml
  • 관련 유저스토리: UFR-MEET-060
  • 참여 서비스: Frontend, API Gateway, Meeting Service, Notification Service, Redis, RabbitMQ, Meeting DB
  • 주요 특징:
    • 필수 항목 자동 검사 (제목, 참석자, 논의 내용, 결정 사항)
    • 고유 공유 링크 생성 (UUID 기반)
    • 공유 보안 설정 (비밀번호, 유효기간)
    • TranscriptShared 이벤트 발행
    • 다음 회의 일정 자동 캘린더 등록 (선택)

14. Todo 완료 및 회의록 반영

  • 파일: Todo완료및회의록반영.puml
  • 관련 유저스토리: UFR-TODO-030
  • 참여 서비스: Frontend, API Gateway, Todo Service, Meeting Service, Notification Service, Redis, RabbitMQ, 각 서비스 DB
  • 주요 특징 (차별화 포인트):
    • Todo 완료가 회의록에 실시간 반영되는 양방향 연동
    • 완료 시간 및 완료자 정보 자동 기록
    • TodoCompleted 이벤트 → Meeting Service가 회의록 자동 업데이트
    • 모든 Todo 완료 시 전체 완료 알림 자동 발송
    • Cache-Aside 패턴으로 회의록 조회 최적화

15. 회의록 조회 및 수정

  • 파일: 회의록조회및수정.puml
  • 관련 유저스토리: UFR-MEET-046/047/055, UFR-COLLAB-010
  • 참여 서비스: Frontend, API Gateway, Meeting Service, Collaboration Service, Redis, Meeting DB
  • 주요 특징:
    • Cache-Aside 패턴으로 목록/상세 조회 (TTL: 10분)
    • 권한 검증 (본인 작성 회의록만 수정 가능)
    • 수정 이력 자동 기록 (수정자, 수정 시간, 변경 내용)
    • WebSocket 실시간 동기화 (델타만 전송)
    • 버전 관리 (새 버전 생성, 이전 버전 보관)
    • 확정완료 → 작성중 자동 상태 변경

설계 원칙 적용

PlantUML 문법 검사

모든 파일 검증 통과 (Docker 기반 PlantUML 검사 완료)

  • !theme mono 적용
  • 동기: 실선 (→), 비동기: 점선 (->>) 명확 구분
  • ..> 사용 금지 (sequence diagram 원칙 준수)

논리 아키텍처 일치성

  • 참여자: 논리 아키텍처의 서비스, DB, 메시지 큐 구조 일치
  • 통신 방식: 동기(REST), 비동기(RabbitMQ), 실시간(WebSocket) 일치
  • 캐시 전략: Cache-Aside 패턴, TTL 설정 일치

유저스토리 커버리지

  • 신규 6개 플로우가 11개 유저스토리 완전 커버
  • 기존 9개 플로우와 통합하여 전체 시스템 커버

문서 이력

버전 작성일 작성자 변경 내용
1.0 2025-01-22 길동 (Architect) 초안 작성 (Flow 1-9)
2.0 2025-10-22 길동 (Architect) 신규 6개 플로우 추가 (Flow 10-15), 병렬 처리 전략 적용