Post

미니 SNS 스파클링 백엔드 1주차

미니 SNS 스파클링 백엔드 1주차

미니 SNS 프로젝트, 스파클링을 시작하며

1. 간단한 소개

Sparkling ✨ 은 소셜 네트워크 서비스(SNS)의 핵심 기능만 담은 미니 백엔드 프로젝트입니다.

거창한 서비스를 만들려는 게 아닙니다. 회원가입부터 게시글, 댓글, 좋아요까지 SNS의 뼈대가 되는 기능을 직접 설계하고 구현하면서, “왜 이렇게 만드는가”를 매주 기록으로 남기는 것이 목표입니다.

기술 스택은 다음과 같습니다.

구분기술
LanguageJava 21
FrameworkSpring Boot 4.1.0
SecuritySpring Security, JWT
ORMSpring Data JPA
DatabaseMySQL
BuildGradle

2. 구현 기능

필수 / 선택 / 제외 세 단계로 나눠 정의했습니다.

필수 기능

No기능설명
1회원가입신규 사용자 계정 생성
2로그인사용자 인증 및 로그인
3내 정보 조회로그인한 사용자의 프로필 조회
4게시글 CRUD게시글 작성 / 목록 / 상세 / 수정 / 삭제
5댓글댓글 작성 / 삭제
6좋아요좋아요 추가 / 취소
7내 게시글 조회로그인한 사용자가 작성한 게시글 목록 조회
8페이지네이션목록 조회 시 페이지 단위 응답

선택 기능

필수 기능이 끝난 뒤에 여유가 있으면 도전합니다.

  • 검색 (게시글 / 사용자)
  • 해시태그
  • DM (1:1 채팅 메시지)

제외 기능

알림, 인기글, 대댓글은 이번 범위에서 의도적으로 제외했습니다.

  • 알림: 비동기 + 팬아웃. 거의 모든 기능(좋아요/댓글/팔로우)에 훅이 박혀야 하고, 실시간이면 웹소켓/FCM까지 필요합니다.
  • 인기글: 집계/랭킹. 실시간 카운트냐 배치냐 결정이 필요하고 스케줄러 + 집계 테이블 + 캐시가 따라옵니다.
  • 대댓글: 재귀/트리 구조. 댓글이 트리가 되면서 조회/정렬/깊이 제한 로직이 통째로 바뀝니다.

기능 하나를 넣었을 뿐인데 코드와 인프라가 몇 배로 커지는 기능들이 있습니다. 1주차 조사에서 그 공통 특징(비동기/실시간성, 팬아웃, 별도 저장소 요구, 집계/랭킹, 재귀 구조)을 정리했고, 여기에 해당하는 기능은 과감히 잘라냈습니다.

3. 프로젝트 원칙

이 프로젝트를 진행하면서 지키려는 원칙은 세 가지입니다.

원칙 1. 코드는 직접 작성한다

이 프로젝트의 코드는 AI에 맡기지 않고 직접 작성합니다. 12주차 이후에는 같은 프로젝트를 AI로 다시 만들어 볼 예정이라, 직접 만든 결과물과 비교하는 기준점이 되기 때문입니다.

원칙 2. 결정에는 이유를 남긴다

기술 선택이든 범위 결정이든, “그냥 남들이 쓰니까”가 아니라 선택지 → 내가 고른 방식 → 이유 → 아직 확신 없는 점 순서로 기록합니다. 매주 조사 문서(week research)를 이 템플릿으로 작성합니다.

원칙 3. 매주 결과물을 만든다

일주일 단위로 조사 + 구현 + 기록을 한 사이클로 돌립니다. 완벽한 코드보다 매주 돌아가는 결과물과 그 과정의 기록을 우선합니다.

4. 무엇을 올리려고 하는지

이 블로그에는 주차별로 다음 내용을 올릴 예정입니다.

  • 주차별 진행 기록: 그 주에 구현한 기능과 부딪힌 문제, 해결 과정
  • 조사 내용 정리: 매주 정한 조사 주제와 그 결과
  • 설계 결정 회고: 왜 이렇게 설계했는지, 나중에 돌아봤을 때 어땠는지

1주차에 한 것

  • 프로젝트 셋업 (Spring Boot 4.1.0 + Gradle)
  • 기능 명세(scope.md) 작성 — 필수 / 선택 / 제외 기준 정리
  • Spring Security 뼈대 작성 — CSRF/폼로그인/HTTP Basic 비활성화, 세션 STATELESS 설정 (JWT 준비)
  • 헬스체크 컨트롤러 작성 (JSON 응답)
  • Week-01 조사: MVP란 무엇인가, 작은 서비스에서 범위를 자르는 기준, 넣으면 프로젝트가 급격히 커지는 기능
This post is licensed under CC BY 4.0 by the author.