카테고리 API 흐름도
설명
카테고리컨트롤러는 카테고리의 생성, 수정, 삭제 기능을 담당합니다.
- 카테고리 생성 (POST /categories): 새로운 카테고리를 생성합니다.
- 카테고리 수정 (PATCH /categories/{카테고리ID}): 기존 카테고리의 정보를 수정합니다.
- 카테고리 삭제 (DELETE /categories/{카테고리ID}): 특정 카테고리를 삭제합니다.
POST API 흐름도
설명
게시글컨트롤러는 게시글의 작성, 수정, 삭제 기능을 담당합니다.
- 게시글 작성 (POST /posts): 새로운 게시글을 작성하고, 관련된 태그도 함께 저장합니다.
- 게시글 수정 (PATCH /posts/{게시글ID}): 기존 게시글의 내용을 수정합니다.
- 게시글 삭제 (DELETE /posts/{게시글ID}): 게시글을 삭제하며, 관련된 태그와 댓글도 함께 삭제합니다.
유저 API 흐름도
사용자컨트롤러는 사용자 관리와 관련된 기능을 담당합니다.
- 회원가입 (POST /users/sign-up): 새로운 사용자를 등록합니다.
- 로그인 (POST /users/sign-in): 사용자 인증을 수행하고 세션을 생성합니다.
- 내 정보 조회 (GET /users/my-info): 로그인한 사용자의 정보를 조회합니다.
- 로그아웃 (PUT /users/logout): 사용자 세션을 종료합니다.
게시판 검색 API 흐름도
게시글검색컨트롤러는 게시글 검색 기능을 담당합니다.
- 게시글 검색 (POST /search): 다양한 조건으로 게시글을 검색합니다.
- 태그로 게시글 검색 (GET /search?tagName=태그명): 특정 태그가 포함된 게시글을 검색합니다.
SNS API 흐름도
- SNS 토픽 생성 (GET /sns/create-topic?name=토픽명):
- 새로운 SNS 토픽을 생성합니다.
- SNS 서비스를 통해 AWS SNS와 통신하여 토픽을 생성하고 토픽 ARN을 반환받습니다.
- SNS 구독 (POST /sns/subscribe):
- 특정 토픽에 대한 구독을 생성합니다.
- 프로토콜(예: HTTP, HTTPS, Email 등), 토픽 ARN, 엔드포인트를 지정하여 구독을 설정합니다.
- SNS 메시지 발행 (POST /sns/publish):
- 지정된 토픽에 메시지를 발행합니다.
- 토픽 ARN, 제목, 메시지 내용을 포함하여 AWS SNS에 메시지를 전송합니다.
- Slack 메시지 전송 (GET /sns/slack?message=메시지&channel=채널):
- Slack 채널에 메시지를 전송합니다.
- 슬랙서비스를 통해 지정된 채널에 메시지를 보냅니다.
이 컨트롤러는 SNS 서비스와 슬랙 서비스를 활용하여 알림 및 메시징 기능을 구현합니다. AWS SNS를 사용하여 다양한 구독자에게 메시지를 전달하고, Slack 통합을 통해 팀 커뮤니케이션을 지원합니다.
ERD 흐름도
이 ERD는 게시판 서버 프로젝트의 데이터베이스 구조를 나타냅니다. 각 엔티티와 그들 간의 관계를 설명하겠습니다:
- USER (사용자)
- 주요 속성: id(PK), userId, password, nickname, isAdmin, status 등
- 사용자 정보를 저장하는 테이블입니다.
- 한 명의 사용자는 여러 개의 게시글을 작성할 수 있습니다 (1:N 관계).
- CATEGORY (카테고리)
- 주요 속성: id(PK), name
- 게시글 카테고리 정보를 저장합니다.
- 하나의 카테고리는 여러 개의 게시글을 포함할 수 있습니다 (1:N 관계).
- POST (게시글)
- 주요 속성: id(PK), name, contents, views, categoryId(FK), userId(FK) 등
- 게시글 정보를 저장합니다.
- USER와 CATEGORY 테이블과 관계가 있으며, COMMENT, FILE, POSTTAG 테이블과도 관계가 있습니다.
- COMMENT (댓글)
- 주요 속성: id(PK), postId(FK), contents, subCommentId
- 게시글에 대한 댓글 정보를 저장합니다.
- 하나의 게시글은 여러 개의 댓글을 가질 수 있습니다 (1:N 관계).
- subCommentId를 통해 대댓글 구조를 지원합니다.
- FILE (파일)
- 주요 속성: id(PK), path, name, extension, postId(FK)
- 게시글에 첨부된 파일 정보를 저장합니다.
- 하나의 게시글은 여러 개의 파일을 가질 수 있습니다 (1:N 관계).
- TAG (태그)
- 주요 속성: id(PK), name, url
- 태그 정보를 저장합니다.
- POSTTAG 테이블을 통해 POST와 다대다(N:M) 관계를 가집니다.
- POSTTAG (게시글-태그 연결)
- 주요 속성: id(PK), postId(FK), tagId(FK)
- POST와 TAG 간의 다대다 관계를 연결하는 중간 테이블입니다.
주요 관계:
- USER - POST: 1:N (한 사용자가 여러 게시글을 작성)
- CATEGORY - POST: 1:N (한 카테고리에 여러 게시글이 속함)
- POST - COMMENT: 1:N (한 게시글에 여러 댓글이 달림)
- POST - FILE: 1:N (한 게시글에 여러 파일이 첨부됨)
- POST - TAG: N:M (게시글과 태그는 다대다 관계, POSTTAG 테이블로 연결)
이 ERD는 게시판 시스템의 핵심 기능을 지원하는 데이터 구조를 보여줍니다. 사용자, 게시글, 댓글, 카테고리, 파일 첨부, 태그 기능 등을 구현할 수 있는 구조로 설계되어 있습니다. 또한, 사용자 관리(admin 권한, 탈퇴 상태 등)와 게시글 관리(조회수, 생성/수정 시간 등)를 위한 속성들도 포함되어 있습니다.
'프레임워크 > 자바 스프링' 카테고리의 다른 글
대규모 트래픽 게시판 구축 시리즈 #4: 프로젝트 초기 셋업 (3) | 2024.09.05 |
---|---|
대규모 트래픽 게시판 구축 시리즈 #3: 도커를 이용한 데이터베이스 구축 (5) | 2024.09.05 |
대규모 트래픽 게시판 구축 시리즈 #1: 프로젝트 기획 및 요구 사항 (0) | 2024.09.05 |
[spring cloud][ecommerce] 개요 & 구성 (0) | 2024.08.12 |
콘서트 예매 서비스에서 발생할 수 있는 동시성 이슈와 처리 (0) | 2024.07.20 |