
안녕하세요!
이번 포스트에서는 사이드 프로젝트로 진행 중인 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와 유기적으로 연결됩니다.이 프로젝트는 단순한 기능 구현에 그치지 않고,
실제 운영 가능한 백엔드 서비스 구조를 목표로 하고 있습니다.
앞으로 아래와 같은 주제들에 대해 기술 블로그를 연재할 예정입니다
📌 기술적인 시행착오, 고민, 그리고 해결 과정을 기록하며 복기하는 것을 목표로 하고 있습니다.
꾸준히 정리해나가며 성장하는 과정을 담아보려 합니다.
읽어주셔서 감사합니다! 🙌