안녕하세요!
이번 포스트에서는 사이드 프로젝트로 진행 중인 MyBoard의 전체적인 구조를 소개하려고 합니다.
MyBoard는 Spring Boot, JPA, Spring Security 등 핵심 백엔드 기술들을 직접 다뤄보고, 실무에 가까운 도메인 설계와 인증/인가 로직을 구현하기 위해 시작한 프로젝트입니다.
이전에 진행했던 프로젝트에서 Redis를 활용한 캐싱 구조를 처음 도입해보았는데, 조회 성능이 크게 개선되는 것을 경험하며 인상 깊었습니다.
이 경험을 계기로 Redis를 더 깊이 있게 이해하고 싶었고, 그 외에도 Kafka, Spring Cache, 테스트 자동화 등 다양한 기술들을 프로젝트에 직접 적용해보며 실전 감각을 기르고자 이 프로젝트를 시작하게 되었습니다.
단순한 CRUD를 넘어서, 도메인 중심 설계(DDD), ERD 작성, 바운디드 컨텍스트 분리 등 백엔드 전반을 실습하는 데 초점을 맞추고 있습니다.
Repository: github.com/fbehddn/myboard
📌 개발 환경:
Java 21
,Spring Boot 3.4.5
,MySQL 8
- 주요 기술 스택:
Spring Boot
,JPA
,Spring Security
,JWT
- 게시판 도메인 구성 (게시글, 댓글, 좋아요)
- JWT 기반 로그인/로그아웃 구현
- 도메인 모델 기반 설계 및 ERD 구성
- 바운디드 컨텍스트를 활용한 역할 분리
- 향후 Redis, Kafka 등 확장 가능한 구조로 설계 중
게시판의 전체 테이블 구조를 아래 ERD로 정리했습니다.
중복 방지를 위한 유니크 제약 조건까지 반영되어 있습니다.
테이블명 | 설명 |
---|---|
users | 사용자 계정 정보를 담는 테이블 (PK: id , 유니크: email ) |
articles | 게시글(title , content ), 작성자(user_id ), 좋아요 수(like_count ) |
comments | 댓글(content ), 작성자(user_id ), 대상 게시글(article_id ), 좋아요 수 |
article_likes | 게시글 좋아요 조인 테이블. (article_id, user_id) 유니크 제약 포함 |
comment_likes | 댓글 좋아요 조인 테이블. (comment_id, user_id) 유니크 제약 포함 |
도메인 주도 설계(DDD) 관점에서 기능을 나누고,
각 컨텍스트 안에서 책임이 명확한 애그리게이트 단위로 모델링했습니다.
User
, Article
, Comment
, ArticleLike
, CommentLike
와 같은 애그리게이트가 포함되어 있으며, 각각의 책임이 명확히 구분됩니다.User.id
를 기준으로 Board Context와 유기적으로 연결됩니다.이 프로젝트는 단순한 기능 구현에 그치지 않고,
실제 운영 가능한 백엔드 서비스 구조를 목표로 하고 있습니다.
앞으로 아래와 같은 주제들에 대해 기술 블로그를 연재할 예정입니다
📌 기술적인 시행착오, 고민, 그리고 해결 과정을 기록하며 복기하는 것을 목표로 하고 있습니다.
꾸준히 정리해나가며 성장하는 과정을 담아보려 합니다.
읽어주셔서 감사합니다! 🙌