프로젝트

블로그 게시글 카테고리 구성 방법

2026년 3월 6일

블로그 게시글 카테고리 구성 방법

1. 카테고리 설계 원칙

  • 상호 배타성: 하나의 글이 두 카테고리에 동시에 속하지 않도록 경계를 명확히 한다
  • 포괄성: 앞으로 쓸 글 대부분이 기존 카테고리 안에 자연스럽게 들어올 수 있어야 한다
  • 독자 시점: 운영자가 아닌 독자가 "이 블로그에서 무엇을 찾을 수 있는가"를 직관적으로 알 수 있는 이름을 쓴다
  • 성장 여지: 초기에는 5개 이하로 유지하고, 글이 쌓이면서 분기한다

2. 분류 체계 방식 비교

방식 A — 주제 기반 (Topic-based)

글의 내용 영역으로 분류. 가장 일반적.

code
개발 (Development)
├── 백엔드
├── 프론트엔드
└── 인프라 / DevOps

일상 (Life)
독서 / 학습 (Learning)
회고 (Retrospective)
  • 장점: 독자가 관심 분야를 빠르게 탐색 가능
  • 단점: 카테고리 경계가 모호해지기 쉬움 (예: "풀스택 프로젝트"는 어디?)

방식 B — 콘텐츠 유형 기반 (Content-type-based)

글의 형식과 목적으로 분류.

유형설명예시
튜토리얼따라할 수 있는 단계별 가이드"Next.js 배포 가이드"
개념 정리특정 기술/개념 설명"JWT vs Session 차이"
프로젝트만든 것을 소개하고 과정 기록"블로그 직접 만들기"
회고경험 기반 반성과 인사이트"2025 개발자 회고"
에세이의견·생각 중심의 글"코드 리뷰 문화에 대해"
  • 장점: 독자가 원하는 읽기 방식을 선택할 수 있음
  • 단점: 주제로 탐색하기 어려움 → 태그 보완 필수

방식 C — 하이브리드 (주제 + 유형 조합)

실제 운영에서 가장 효과적. 1차 분류는 주제, 2차 분류는 태그로 유형 보완.

code
카테고리 (주제)       태그 (유형 + 세부 주제)
─────────────────    ───────────────────────
개발                  #tutorial, #nextjs, #fastapi
회고                  #연간회고, #월간회고
독서                  #비문학, #기술서
일상                  #생산성, #도구

3. 권장 카테고리 구조 (개인 개발 블로그 기준)

code
개발 (Dev)
  - 직접 만든 것, 기술 글, 트러블슈팅 기록
  - 태그: #backend, #frontend, #infra, #tutorial, #troubleshooting

프로젝트 (Project)
  - 완성하거나 진행 중인 사이드 프로젝트 소개 및 개발 일지
  - 태그: #개발일지, #사이드프로젝트

학습 (Learning)
  - 책, 강의, 아티클 읽고 정리한 글
  - 태그: #독서, #강의, #요약

회고 (Retrospective)
  - 주간/월간/연간 회고, 프로젝트 마무리 회고
  - 태그: #월간회고, #연간회고, #프로젝트회고

생각 (Essay)
  - 개발 문화, 커리어, 생산성에 대한 의견 글
  - 태그: #커리어, #생산성, #개발문화

4. URL 슬러그 규칙

카테고리는 URL 경로에도 반영됨. 한글 슬러그는 SEO에 불리하므로 영문 소문자 사용.

카테고리URL 슬러그
개발/dev
프로젝트/project
학습/learning
회고/retrospective
생각/essay

포스트 URL 패턴: /{category}/{slug} 예시: /dev/nextjs-deployment-guide


5. DB 스키마 설계 (FastAPI + PostgreSQL 기준)

sql
-- 카테고리 테이블
CREATE TABLE categories (
    id        SERIAL PRIMARY KEY,
    name      VARCHAR(50) NOT NULL,       -- 표시 이름 (한글 가능)
    slug      VARCHAR(50) UNIQUE NOT NULL, -- URL용 영문 슬러그
    created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 태그 테이블
CREATE TABLE tags (
    id   SERIAL PRIMARY KEY,
    name VARCHAR(50) UNIQUE NOT NULL
);

-- 게시글 테이블 (카테고리는 1:1)
CREATE TABLE posts (
    id          SERIAL PRIMARY KEY,
    category_id INTEGER REFERENCES categories(id),
    title       VARCHAR(200) NOT NULL,
    slug        VARCHAR(200) UNIQUE NOT NULL,
    content     TEXT,
    published   BOOLEAN DEFAULT FALSE,
    created_at  TIMESTAMPTZ DEFAULT NOW()
);

-- 게시글-태그 다대다
CREATE TABLE post_tags (
    post_id INTEGER REFERENCES posts(id) ON DELETE CASCADE,
    tag_id  INTEGER REFERENCES tags(id) ON DELETE CASCADE,
    PRIMARY KEY (post_id, tag_id)
);

카테고리는 글당 1개만 허용 (상호 배타성 유지). 복수 분류가 필요하면 태그로 처리.


6. 운영 지침

  • 새 글 작성 전: 기존 카테고리에 맞지 않으면 바로 신설하지 말고, 가장 가까운 카테고리에 임시 배치 후 글이 3개 이상 쌓이면 분기 검토
  • 카테고리 변경 시: URL 변경을 수반하므로 301 리다이렉트 처리 필수
  • 태그 관리: 유사 태그 중복 방지를 위해 태그 목록을 주기적으로 정리 (예: nextjs / next.js 통일)
  • 미분류(Uncategorized)는 지양: 발행 전 반드시 카테고리를 지정하도록 관리자 UI에서 필수값으로 설정