1. 1. ν”„λ‘œμ νŠΈ κ°œμš” λ³Έ ν”„λ‘œμ νŠΈλŠ” **'단일 μ„œλ²„μ˜ ν•œκ³„ 돌파'**와 **'AIOps(AI 기반 운영) μ΅œμ ν™”'**λ₯Ό 주제둜 ν•©λ‹ˆλ‹€. μ΄ˆλ‹Ή 수천 건의 νŠΈλž˜ν”½μ„ μ²˜λ¦¬ν•˜λŠ” μ‹€μ‹œκ°„ μ±„νŒ…κ³Ό μ •μ‚° μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜λ©°, Claude Code와 Prometheus/Grafanaλ₯Ό μ—°λ™ν•˜μ—¬ μ‹œμŠ€ν…œμ΄ 슀슀둜 μ„±λŠ₯ μž„κ³„μΉ˜λ₯Ό νŒŒμ•…ν•˜κ³  μ΅œμ ν™”ν•˜λŠ” **'자율 νŠœλ‹ 인프라'**λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것이 λͺ©ν‘œμž…λ‹ˆλ‹€. 2. 핡심 기술 μŠ€νƒ 및 μ•„ν‚€ν…μ²˜ πŸ› οΈ Backend & Infrastructure β€’ Java 21 / Spring Boot 3.x: Virtual Threads(선택) λ˜λŠ” 비동기 처리λ₯Ό ν†΅ν•œ κ³ μ„±λŠ₯ μ„œλ²„. β€’ Redis (In-memory): Lua Script(결제 μ›μžμ„±), Pub/Sub(λ©”μ‹œμ§€ 전솑), Sliding Window(도배 λ°©μ§€). β€’ PostgreSQL: Daily Partitioning(λŒ€μš©λŸ‰ 둜그), JSONB(λΉ„μ •ν˜• 후원 데이터). β€’ Prometheus & Grafana: μ„œλ²„ λ©”νŠΈλ¦­ μˆ˜μ§‘ 및 μ‹€μ‹œκ°„ μ„±λŠ₯ λͺ¨λ‹ˆν„°λ§ μ‹œκ°ν™”. πŸ€– AI Agent 라인업 β€’ Gemini (λΉ„μ¦ˆλ‹ˆμŠ€ κ΄€μ œ): 3단 κΉ”λ•ŒκΈ°(Regex ➑️ Queue ➑️ Batch) 기반의 비동기 μ„€λ„μš°λ°΄ 처리. β€’ Claude Code (SRE μ—”μ§€λ‹ˆμ–΄): λͺ¨λ‹ˆν„°λ§ λ©”νŠΈλ¦­ 뢄석을 ν†΅ν•œ application.yml 및 OS νŒŒλΌλ―Έν„° 자율 νŠœλ‹. 3. 핡심 μ•„ν‚€ν…μ²˜: 'κ΄€μΈ‘μ„±(Observability) 기반 자율 νŠœλ‹' λ‹¨μˆœνžˆ AIκ°€ μ½”λ”©ν•˜λŠ” 것을 λ„˜μ–΄, **[μΈ‘μ • ➑️ 뢄석 ➑️ μˆ˜μ •]**의 μ„ μˆœν™˜ ꡬ쑰λ₯Ό λ§Œλ“­λ‹ˆλ‹€.
  2. μΈ‘μ • (Prometheus/Grafana): JMeter둜 3만 λͺ… λΆ€ν•˜λ₯Ό 쀄 λ•Œ, ν†°μΊ£ μŠ€λ ˆλ“œ 수, DB 컀λ„₯μ…˜ ν’€, JVM νž™ λ©”λͺ¨λ¦¬ μƒνƒœλ₯Ό μ‹€μ‹œκ°„ μˆ˜μ§‘.
  3. 뢄석 (Claude Code): μ„œλ²„κ°€ λ»—κΈ° μ§μ „μ˜ μž„κ³„μ μ—μ„œ Cla
  4. ude Codeκ°€ κ·ΈλΌνŒŒλ‚˜μ˜ 수치 데이터와 μ—λŸ¬ 둜그λ₯Ό 뢄석. β—¦ 예: "ν˜„μž¬ Active Threadκ°€ 200κ°œμ—μ„œ μ •μ²΄λ˜κ³  CPUκ°€ μ—¬μœ λ‘œμš΄ κ±Έ λ³΄λ‹ˆ, max-threads 섀정이 병λͺ©μ΄λ‹€."
  5. μˆ˜μ • (Automated Tuning): Claude Codeκ°€ 직접 μ„€μ • νŒŒμΌμ„ μˆ˜μ •ν•˜κ³  μ„œλ²„λ₯Ό μž¬μ‹œμž‘ν•˜μ—¬ λ‹€μ‹œ λΆ€ν•˜ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰. 4. πŸ’‘ 3단 μ„€λ„μš°λ°΄ νŒŒμ΄ν”„λΌμΈ (λΉ„μš© & μ„±λŠ₯ μ΅œμ ν™”)λ‹¨κ³„κΈ°μˆ μ—­ν• λΉ„μš©/속도1단 (차단)Redis + Regex도배 및 λͺ…λ°±ν•œ μš•μ„€ μ¦‰μ‹œ 제거0원 / 0.1ms2단 (선별)Message Queue'μ˜μ‹¬ 단어(λ³‘μƒˆλΌμ‹  λ“±)' 포함 μ‹œ 비동기 큐 적재0원 / 비동기3단 (μ‹¬νŒ)Gemini Batch10~20건을 λ¬Άμ–΄ 1회 API 호좜둜 λ¬Έλ§₯ 기반 νŒμ •λ¬΄λ£Œ ν‹°μ–΄ / 1s 5. DB 섀계 핡심 (PostgreSQL 고도화) β€’ Chat Logs: PARTITION BY RANGE (created_at)λ₯Ό μ μš©ν•˜μ—¬ 일별 ν…Œμ΄λΈ” μžλ™ 생성/μ‚­μ œ. β€’ Donations: meta_data μ»¬λŸΌμ„ JSONB둜 μ„€μ •ν•˜μ—¬ TTS, μ΄νŽ™νŠΈ λ“± κ°€λ³€ 데이터λ₯Ό μˆ˜μš©ν•˜κ³  GIN 인덱슀둜 검색 μ΅œμ ν™”. β€’ Sync 둜직: LISTEN/NOTIFY κΈ°λŠ₯을 ν™œμš©ν•˜μ—¬ AI λΈ”λž™λ¦¬μŠ€νŠΈ μ—…λ°μ΄νŠΈ μ‹œ λͺ¨λ“  μ„œλ²„ 인메λͺ¨λ¦¬ μΊμ‹œ μ¦‰μ‹œ 동기화. 6. μ΅œμ’… R&R (3인 μ‚Όκ°νŽΈλŒ€) β€’ λ°±μ—”λ“œ A (ν˜•): [Traffic & AI Ops] μ›Ήμ†ŒμΌ“ 고도화, Redis Lua 슀크립트, Claude Code νŠœλ‹ μžλ™ν™” 연동, OS νŠœλ‹. β€’ λ°±μ—”λ“œ B: [Data & Monitoring] PostgreSQL νŒŒν‹°μ…”λ‹, Spring Batch μ •μ‚°, ν”„λ‘œλ©”ν…Œμš°μŠ€/κ·ΈλΌνŒŒλ‚˜ λŒ€μ‹œλ³΄λ“œ ꡬ좕. β€’ ν”„λ‘ νŠΈ/AI: [UX & Agent] μ‹€μ‹œκ°„ μ±„νŒ… UI, Gemini Batch API 연동, Python 기반 λŒ€μš©λŸ‰ 더미 데이터(30k) 생성기.

users

컬럼λͺ… 데이터 νƒ€μž… μ œμ•½μ‘°κ±΄ μ„€λͺ…
user_id BIGINT PRIMARY KEY μ‚¬μš©μž 고유 μ‹λ³„μž
email VARCHAR(100) UNIQUE, NOT NULL 둜그인 ID용 이메일
password VARCHAR(255) NOT NULL μ•”ν˜Έν™”λœ λΉ„λ°€λ²ˆν˜Έ (Bcrypt λ“±)
nickname VARCHAR(50) NOT NULL μ„œλΉ„μŠ€ λ‚΄ ν‘œμ‹œλ  λ‹‰λ„€μž„
phone_number VARCHAR(20) - μ‚¬μš©μž μ „ν™”λ²ˆν˜Έ (선택 사항)
role VARCHAR(20) DEFAULT 'USER' κΆŒν•œ (USER, ADMIN)
status VARCHAR(20) DEFAULT 'ACTIVE' 계정 μƒνƒœ (ACTIVE, SUSPENDED, DELETED)
last_login_at TIMESTAMPTZ - λ§ˆμ§€λ§‰ 둜그인 μΌμ‹œ (운영 κ΄€μ œμš©)
created_at TIMESTAMPTZ DEFAULT NOW() κ°€μž… μΌμ‹œ
updated_at TIMESTAMPTZ DEFAULT NOW() 정보 μˆ˜μ • μΌμ‹œ
deleted_at TIMESTAMPTZ - νšŒμ› νƒˆν‡΄ μΌμ‹œ (Soft Delete용)

streams

컬럼λͺ… 데이터 νƒ€μž… μ œμ•½μ‘°κ±΄ μ„€λͺ…
stream_id BIGSERIAL PRIMARY KEY 방솑 고유 μ‹λ³„μž
streamer_id BIGINT NOT NULL 슀트리머 ID (users.user_id FK)
title VARCHAR(255) NOT NULL 방솑 λ°© 제λͺ©
category VARCHAR(50) - 방솑 μΉ΄ν…Œκ³ λ¦¬ (예: κ²Œμž„, λ¨Ήλ°©, μ†Œν†΅)
max_viewer_count INTEGER DEFAULT 0 졜고 λ™μ‹œ μ‹œμ²­μž 수 (방솑 μ’…λ£Œ μ‹œ Redisμ—μ„œ 동기화)
status VARCHAR(20) DEFAULT 'READY' 방솑 μƒνƒœ (READY, LIVE, ENDED)
started_at TIMESTAMPTZ - 방솑 μ‹€μ œ μ†‘μΆœ μ‹œμž‘ μΌμ‹œ
ended_at TIMESTAMPTZ - 방솑 μ’…λ£Œ μΌμ‹œ
created_at TIMESTAMPTZ DEFAULT NOW() λ°© 생성 μΌμ‹œ
updated_at TIMESTAMPTZ DEFAULT NOW() 정보 μˆ˜μ • μΌμ‹œ

chat_logs

컬럼λͺ… 데이터 νƒ€μž… μ œμ•½μ‘°κ±΄ μ„€λͺ…
chat_id BIGSERIAL PK (1/2) μ±„νŒ… 둜그 고유 μ‹λ³„μž
stream_id BIGINT NOT NULL μ–΄λ–€ λ°©μ†‘μ˜ μ±„νŒ…μΈμ§€ (인덱슀 ν•„μˆ˜)
user_id BIGINT NOT NULL μ±„νŒ… 친 μ‚¬μš©μž ID (인덱슀 ν•„μˆ˜)
sender_nickname VARCHAR(50) NOT NULL μ±„νŒ… λ‹Ήμ‹œμ˜ λ‹‰λ„€μž„ (λ°˜μ •κ·œν™”)
message TEXT NOT NULL μ‹€μ œ μ±„νŒ… λ‚΄μš©
is_blocked BOOLEAN DEFAULT FALSE AI 차단 μ—¬λΆ€
block_reason VARCHAR(100) - AI 차단 μ‚¬μœ  (PROFANITY, SPAM λ“±)
created_at TIMESTAMPTZ PK (2/2), νŒŒν‹°μ…˜ ν‚€ μ±„νŒ… λ°œμƒ μΌμ‹œ (월별 λ²”μœ„ νŒŒν‹°μ…˜ κΈ°μ€€)

donations

컬럼λͺ… 데이터 νƒ€μž… μ œμ•½μ‘°κ±΄ μ„€λͺ…
donation_id BIGSERIAL PRIMARY KEY 후원 이벀트 고유 μ‹λ³„μž
stream_id BIGINT NOT NULL 후원이 ν„°μ§„ 방솑 ID (인덱슀 ν•„μˆ˜)
sender_id BIGINT NOT NULL λˆμ„ 쏜 μ‹œμ²­μž ID (인덱슀 ν•„μˆ˜)
receiver_id BIGINT NOT NULL λˆμ„ 받은 슀트리머 ID
amount BIGINT NOT NULL 후원 κΈˆμ•‘
message TEXT - 후원과 ν•¨κ»˜ 보낸 λ©”μ‹œμ§€
is_blocked BOOLEAN DEFAULT FALSE [AI 차단 μ—¬λΆ€] AIκ°€ μš•μ„€ λ“±μœΌλ‘œ νŒλ… μ‹œ true
is_refunded BOOLEAN DEFAULT FALSE [ν™˜λΆˆ μ—¬λΆ€] 결제 μ·¨μ†Œ μ‹œ true
status VARCHAR(20) NOT NULL COMPLETED
created_at TIMESTAMPTZ DEFAULT NOW() 후원 λ°œμƒ μΌμ‹œ

blacklist

컬럼λͺ… 데이터 νƒ€μž… μ œμ•½μ‘°κ±΄ μ„€λͺ…
blacklist_id BIGSERIAL PRIMARY KEY λΈ”λž™λ¦¬μŠ€νŠΈ 고유 μ‹λ³„μž (PK)
user_id BIGINT NOT NULL μ°¨λ‹¨λ‹Ήν•œ μ•…μ„± μœ μ € ID (인덱슀 ν•„μˆ˜)
reason VARCHAR(100) NOT NULL 차단 μ‚¬μœ  (예: AI_PROFANITY_STRIKE_OUT)
unblock_at TIMESTAMPTZ NOT NULL 차단 ν•΄μ œ μΌμ‹œ (예: 7일 μ •μ§€λ©΄ 7일 λ’€ μ‹œκ°„)
created_at TIMESTAMPTZ DEFAULT NOW() 차단 λ°œμƒ μΌμ‹œ (DEFAULT NOW())

wallets

컬럼λͺ… 데이터 νƒ€μž… μ œμ•½μ‘°κ±΄ μ„€λͺ…
wallet_id BIGSERIAL PRIMARY KEY μ§€κ°‘ μ‹λ³„μž
user_id BIGINT UNIQUE, NOT NULL μ†Œμœ μž ID (인덱슀)
balance BIGINT DEFAULT 0 ν˜„μž¬ μž”μ•‘
created_at TIMESTAMPTZ DEFAULT NOW() 생성 μΌμ‹œ
updated_at TIMESTAMPTZ DEFAULT NOW() λ§ˆμ§€λ§‰ 변동 μΌμ‹œ

point_histories

컬럼λͺ… 데이터 νƒ€μž… μ œμ•½μ‘°κ±΄ μ„€λͺ…
history_id BIGSERIAL PRIMARY KEY 원μž₯ μ‹λ³„μž
wallet_id BIGINT NOT NULL 변동이 λ°œμƒν•œ μ§€κ°‘ ID (FK μ œμ•½ μ—†μŒ, 인덱슀)
user_id BIGINT NOT NULL λŒ€μƒ μœ μ € ID (인덱슀)
type VARCHAR(20) NOT NULL μœ ν˜• (CHARGE, DONATE, REFUND)
amount BIGINT NOT NULL 변동 κΈˆμ•‘
balance_snapshot BIGINT NOT NULL [핡심] 변동 ν›„ μž”μ•‘ (κ°μ‚¬μš©)
created_at TIMESTAMPTZ DEFAULT NOW() λ°œμƒ μΌμ‹œ

payments

컬럼λͺ… 데이터 νƒ€μž… μ œμ•½μ‘°κ±΄ μ„€λͺ…
payment_id BIGSERIAL PRIMARY KEY 결제 μ‹λ³„μž
user_id BIGINT NOT NULL 결제 μœ μ € ID
amount BIGINT NOT NULL 결제 κΈˆμ•‘ (KRW)
status VARCHAR(20) NOT NULL μƒνƒœ (PENDING, SUCCESS, FAIL)
method VARCHAR(20) - 결제 μˆ˜λ‹¨ (CARD, PAY λ“±)
external_tid VARCHAR(255) UNIQUE PG사 거래 번호 (ν™˜λΆˆ/λŒ€μ‚¬ ν•„μˆ˜)
fail_reason TEXT - μ‹€νŒ¨ μ‚¬μœ 
created_at TIMESTAMPTZ DEFAULT NOW() μš”μ²­ μΌμ‹œ

settlements