DevTI
STRUCTURE

구조 · DB

누가 어떤 화면을 보는지(사이트맵)와, 데이터를 담는 표들의 구조(DB). 어디에 무엇이 있는지의 지도.

01 - SITEMAP

권한 등급별 라우트 구조
  • 구성·(public) · (member) · /admin - 3개 라우트 그룹
  • 규칙·라우트 그룹 = 접근 권한 등급
  • 경계·프론트 라우트 = 백엔드 Spring Security 경로 잠금
쉽게 말하면

이 서비스에 화면이 몇 개나 있고, 각 화면을 누가 볼 수 있는지를 한 장에 모은 지도예요. 로그인 없이 보는 공개 화면, 로그인해야 쓰는 회원 화면, 관리자만 들어가는 화면 - 이렇게 셋으로 나뉩니다.

아래 그림은 그 세 등급에 어떤 페이지들이 속하는지를 색으로 구분해 보여줍니다.

공개 (permitAll)회원 (authenticated)관리자 (hasRole ADMIN)
라우트 그룹 = 레이아웃 + 권한의 묶음
(member) 그룹은 공통 가드를 공유하고, /admin 은 별도 AdminGuard 로 감싸 ROLE_ADMIN만 통과. 새 페이지는 “어느 그룹에 넣을지”만 정하면 보안 정책이 따라오는 구조.

02 - DATABASE

카드 애그리거트와 연관 테이블
  • 루트·dev_card - 애그리거트 루트
  • 묶음·능력치 · 설문 · 스킬 - cascade · orphanRemoval 로 함께 저장·삭제
  • 연관·회원 · 캐릭터 · 댓글 · 좋아요 - 외래키
쉽게 말하면

서비스의 데이터를 어떤 표(table)들에 나눠 담고, 그 표들이 서로 어떻게 연결되는지를 그린 설계도예요. 핵심은 가운데 개발자 카드를 중심에 두고, 회원·MBTI·능력치·댓글·좋아요 같은 정보가 그 카드에 매달리는 구조라는 점입니다.

아래 그림에서 가운데 카드가 중심이고, 주변 표들이 선으로 연결된 게 그 관계예요.

애그리거트(aggregate)= ‘중심이 되는 표(루트) + 거기 딸린 표들’을 한 덩어리로 묶어 함께 저장·삭제하는 단위예요. 여기선 카드가 루트이고, 능력치·설문·스킬이 딸린 식구입니다. (제목·표의 ‘애그리거트 루트’가 이 뜻)

카드 (애그리거트 루트)분석 입력·산출회원상호작용
비정규화 카운터
조회·좋아요·댓글 수는 dev_card 에 직접 컬럼으로 보관(매번 COUNT 대신). 서비스 레이어에서 원자적으로 가감해 정합성 유지.
공통 BaseEntity
모든 테이블이 created_at · updated_at 을 상속 매핑으로 공통화. 감사(audit)와 정렬(latest)의 기준.