기초부터 실전 Q&A까지 순서형 로드맵
백엔드 심화 학습
백엔드 개발자가 알아야 할 핵심 개념을 운영 시나리오와 학습 경로 중심으로 깊이 있게 정리합니다
모듈 소개를 제외한 실제 노트만 집계
Spring, Database, Kafka, DevOps 등으로 정리
백엔드 커리큘럼 심화: 식별자 정규화와 비교 정책, Unicode 입력이 권 …
🚀 백엔드 커리큘럼
1단계: 백엔드 기초 다지기 (언어/알고리즘/CS)
언어, 자료구조/알고리즘, 운영체제·네트워크 기본을 다지는 모듈
2단계: 스프링 핵심 공략 (Core/Boot/JPA/테스트)
스프링 코어, 부트 자동설정, JPA, 테스트 전략을 집중적으로 다지는 모듈
3단계: 데이터베이스 & 데이터 시스템
인덱스/트랜잭션/락/캐시/메시징으로 데이터 시스템의 성능·정합성·확장성을 다지는 모듈
4단계: 분산 시스템 & 아키텍처 (Distributed Systems)
분산 트랜잭션, 일관성 모델, 샤딩, 이벤트 드리븐 아키텍처를 다루는 모듈
5단계: 시스템 안정성 & 회복탄력성 (Resilience)
장애 전파 차단, 트래픽 제어, 고가용성 설계를 다루는 모듈
6단계: 클라우드 네이티브 & DevOps
Docker, K8s, CI/CD, 모니터링, 트레이싱까지 운영 스택을 갖추는 모듈
7단계: 복습(Q&A)
학습하며 남긴 Q&A를 한 번에 모아 복습하는 단계
8단계: 보안 (Security Specialist)
기능 구현을 넘어, 안전한 서비스를 만들기 위한 웹 보안, 인증·인가, 권한 운영, 비밀 관리, 감사 로그 기준을 다룹니다.
9단계: 컴퓨터 공학 심화 (Deep CS)
분산 시스템의 정합성 모델, DB 스토리지 엔진의 원리 등 시니어 레벨로 가기 위한 이론적 깊이를 다룹니다.
10단계: 현대적 백엔드 기술 (Modern Frontiers)
AI 시대의 백엔드(Vector Search), 차세대 웹 프로토콜(HTTP/3), 그리고 Serverless/MicroVM 등 최신 기술의 '내부 원리'를 다룹니다.
11단계: 아키텍처 마스터리 (Architecture Mastery)
대규모 분산 시스템에서 발생하는 데이터 정합성 문제와 무한 확장을 위한 샤딩, 그리고 복잡한 도메인을 다루는 DDD까지 아키텍트 레벨의 난제를 다룹니다.
보조 트랙: 백엔드 면접 실전 (Interview Readiness)
개념을 아는 것에서 끝나지 않고, 면접에서 짧고 정확하게 말하는 훈련 트랙
부록: 실습실 (Hands-on Labs)
이론으로 배운 내용을 가볍게 구현해보는 연습 문제 모음 (Optional)
🗺️ 학습 가이드
백엔드 개발의 핵심 개념을 심도 있게 다룹니다. JVM 내부 구조, GC 알고리즘, Spring AOP/Transaction/Security, JPA N+1 문제, Database 인덱싱, Redis 캐싱 전략처럼 기반 지식이 되는 주제부터, 배포 안정성·관측성·트래픽 전환·장애 대응처럼 운영에서 바로 쓰이는 주제까지 함께 정리합니다.
이 페이지는 단순 목록이 아니라 지금 어떤 문제를 풀고 있는지에 따라 바로 들어갈 수 있는 학습 허브로 쓰는 것을 목표로 합니다. 개념을 처음 잡을 때는 기초 설명을 먼저 보고, 이미 운영 이슈를 겪고 있다면 아래 추천 경로처럼 관련 글을 묶어서 읽어보세요.
상황별 빠른 선택
처음부터 모든 글을 순서대로 읽기보다, 지금 겪는 문제를 먼저 고르는 편이 훨씬 효율적입니다. 아래 표는 각 경로를 “어떤 운영 질문을 해결하는가” 기준으로 다시 묶은 것입니다.
| 지금 필요한 판단 | 먼저 볼 경로 | 바로 확인할 산출물 |
|---|---|---|
| 고객사 단위 정지, 삭제, export, 보존 정책을 정리해야 한다 | 멀티테넌트 운영 경로 | tenant 상태 전이표, offboarding manifest, purge 검증 체크리스트 |
| 검색 조건이 커지고 전체 다운로드가 timeout이나 비용 문제를 만든다 | 복잡한 조회와 Export 운영 경로 | GET/QUERY/export 분기 기준, export artifact metadata, signed URL TTL |
| 업로드 파일, 비공개 첨부, presigned URL 접근을 설명해야 한다 | 파일 접근 제어 운영 경로 | 파일 metadata schema, quarantine 상태 전이, 다운로드 감사 로그 |
| 권한 정책 변경이 실제 고객 접근 결과를 바꿀 수 있다 | 인가 정책 운영 경로 | shadow decision log, rollout gate, rollback flag |
| 관리자·지원 도구, export, 응답 계약처럼 되돌리기 어려운 변경을 리뷰해야 한다 | 고위험 접근과 API 계약 운영 경로 | risk matrix, contract diff, audit evidence, rollback gate |
| 개인정보, 토큰, 고위험 식별자가 DB·로그·백업에 퍼질 수 있다 | 민감 데이터 암호화 운영 경로 | field inventory, key_version, blind index, rotation backlog |
| 이벤트, CDC, read model, 검색 인덱스가 누락·중복·지연을 만든다 | 데이터 파이프라인 운영 경로 | event id, lag SLO, replay/backfill 기준 |
| 알림, webhook, 외부 부작용이 중복되거나 유실된다 | 사용자 접점·외부 통합 운영 경로 | notification id, delivery evidence, inbound inbox schema |
| 결제 승인·매입·환불 상태가 꼬이거나 정산 차이가 난다 | 결제 상태 머신 운영 경로 | payment attempt, ledger, reconciliation, manual correction gate |
| 새 기능을 안전하게 노출하고 문제가 나면 되돌려야 한다 | 안전한 릴리스와 운영 검증 경로 | feature flag owner, canary 지표, rollback window |
| p99 지연, DB pool wait, retry storm, 과금 비용을 줄여야 한다 | 성능·비용 보호 학습 경로 | API cost unit, admission control 기준, 429/503 분리 규칙 |
| 코드 구조가 도메인 규칙을 보호하지 못하고 자주 흔들린다 | DDD와 헥사고날 아키텍처 경로 | aggregate 경계, port/adapter 목록, 트랜잭션 경계 |
| 장애가 끝났는지 숫자와 역할로 닫기 어렵다 | 장애 대응 학습 경로 | severity 기준, IC/Comms 역할, reconciliation 종료 조건 |
실무 적용은 “글 1개 읽기"보다 “작은 산출물 1개 남기기"가 더 중요합니다. 예를 들어 rate limit 글을 읽었다면 endpoint별 QPS만 적는 데서 멈추지 말고, request class, tenant budget, 429/503 분리 기준까지 같이 남겨야 다음 장애 때 바로 쓸 수 있습니다. 반대로 구조 설계 글을 읽었다면 패턴 이름을 메모하는 대신 aggregate가 지켜야 할 invariant와 외부 어댑터가 실패했을 때의 보상 경로를 적는 편이 효과가 큽니다.
이미 운영 중인 서비스라면 다음 순서로 접근해 보세요.
- 최근 2주 동안 실제로 발생한 장애, 지연, 수동 복구, CS 문의를 하나 고릅니다.
- 위 표에서 가장 가까운 경로를 선택하고, 해당 경로의 첫 글보다 “읽으면서 남길 운영 산출물"을 먼저 봅니다.
- 글을 읽는 동안 현재 시스템에 없는 필드, 지표, 상태, 런북 항목을 체크합니다.
- 한 번에 전부 고치려 하지 말고 대시보드 필드 1개, 정책 표 1개, 재처리 기준 1개처럼 작은 변경으로 끝냅니다.
- 다음 장애 리뷰나 설계 리뷰에서 그 산출물이 실제 의사결정에 쓰였는지 확인합니다.
멀티테넌트 운영 경로: 생성보다 어려운 정지와 종료 설계
멀티테넌트 서비스는 처음에는 tenant_id를 붙이고 권한을 나누는 문제처럼 보입니다. 하지만 운영이 길어질수록 더 어려운 질문은 “이 고객사가 지금 어떤 상태인가”, “누가 어떤 이유로 정지했는가”, “데이터를 언제까지 복구할 수 있는가”, “삭제가 정말 끝났는가"로 바뀝니다. 특히 B2B SaaS에서는 계약 종료, 보안 사고 정지, 데이터 export, 법무 hold, 외부 SaaS 연동 정리가 모두 테넌트 생명주기에 묶입니다.
아래 순서로 읽으면 격리 모델에서 시작해 tenant context 전달, 상태 전이, 삭제·보존, 감사 증거까지 한 흐름으로 이어집니다.
- 멀티테넌시 전략
- Tenant Context Propagation 가드레일
- Operational State Machine 설계
- Tenant Lifecycle와 Offboarding 운영 설계
- 데이터 보존과 삭제 아키텍처
- 변조 방지 감사 로그 설계
이런 상황이면 이 경로부터 보세요
- 고객사 단위로 정지, 복구, 계약 종료, 데이터 export 요청을 처리해야 하는 경우
- 결제 연체, 보안 사고, abuse, 계약 종료 예정이 모두 같은
disabled값으로 섞여 있는 경우 - 테넌트 삭제 후 RDB는 정리했지만 검색 인덱스, 오브젝트 스토리지, 캐시, 외부 SaaS 잔여 데이터를 설명하기 어려운 경우
- 고객이 삭제 증명이나 export 이력을 요구했을 때 manifest와 감사 로그로 답하기 어려운 경우
- tenant context가 API 요청에는 있지만 비동기 작업, 로그, 검색 색인, webhook 처리에서 빠지는 경우
읽으면서 남길 운영 산출물
- 테넌트 상태 전이표:
provisioning,active,suspended,delete_requested,retained,purging,purged - 정지 reason code별 읽기, 쓰기, 관리자 접근, export 허용 정책
- 오프보딩 manifest: 요청자, 승인자, 사유, 법무 hold, export 만료, 보존 종료, purge 대상 리소스 수
- purge dry-run count와 실제 삭제 count 차이 허용 기준
- RDB, 검색 인덱스, 오브젝트 스토리지, 캐시, 외부 SaaS 잔여 검증 체크리스트
이 경로의 목표는 멀티테넌시를 데이터 격리 문제로만 보지 않는 것입니다. 생성은 빠르고, 정지는 일관적이며, 종료는 증명 가능해야 운영팀과 고객 모두가 예측 가능한 시스템이 됩니다.
복잡한 조회와 Export 운영 경로: QUERY에서 산출물 관리까지
검색 조건이 커지고 결과가 많아지면 “조회 API 하나"가 금방 운영 문제가 됩니다. URL에 담기 어려운 필터는 POST 검색 API로 밀려나고, 전체 다운로드는 긴 DB 쿼리와 대용량 파일 생성으로 번집니다. 이때 핵심은 GET, QUERY, export job을 유행처럼 고르는 것이 아니라 응답 시간, 결과 크기, 공유 필요성, 감사 필요성에 따라 경계를 나누는 것입니다.
아래 순서로 읽으면 복잡한 읽기 요청부터 대용량 파일 산출물까지 한 흐름으로 이어집니다.
- REST API 설계 원칙
- HTTP QUERY, 복잡한 읽기 API가 GET과 POST 사이의 빈칸을 메운다
- Cursor Pagination Consistency
- HTTP Caching과 ETag Revalidation
- 대용량 데이터 Export 파이프라인
- Object Storage와 파일 관리
이런 상황이면 이 경로부터 보세요
POST /search,POST /query가 많아졌지만 읽기 요청과 상태 변경 요청이 섞여 있는 경우- 관리자 검색 조건이 URL에 담기 어렵고, GET query string에 민감 값이 남는 것이 부담인 경우
- cursor pagination에서 중복/누락, 정렬 흔들림, snapshot 기준이 계속 문제 되는 경우
- 전체 다운로드가 타임아웃, replica lag, 반복 클릭, 중복 파일 생성으로 운영 부하가 되는 경우
- 생성된 파일의 row count, checksum, 만료, 다운로드 권한, 감사 로그가 따로 관리되지 않는 경우
읽으면서 남길 운영 산출물
- read-only POST inventory와 QUERY 후보 API 목록
GET,QUERY,POST /exports를 나누는 행 수, 응답 시간, 결과 크기 기준- query body canonicalization, cache key, 민감 필터 redaction 정책
- export artifact metadata:
filter_hash,snapshot_at,schema_version,row_count,checksum,expires_at - 다운로드 시점 권한 재검증, signed URL TTL, 파일 보관 기간, 민감 컬럼 마스킹 기준
이 경로의 목표는 “새 HTTP 메서드를 안다"가 아닙니다. 복잡한 읽기 요청을 안전하게 표현하고, 즉시 응답하기 어려운 조회는 운영 가능한 산출물 파이프라인으로 넘기는 판단 기준을 만드는 것입니다.
파일 접근 제어 운영 경로: 업로드부터 다운로드 URL까지
파일 기능은 처음에는 “업로드하고 내려받기"처럼 단순해 보입니다. 하지만 실제 서비스에서는 object key 추측, 업로드 직후 악성 파일 노출, 민감 파일의 CDN cache, 권한 변경 뒤 남아 있는 다운로드 URL, 감사 로그 누락처럼 작은 빈틈이 보안 사고로 이어질 수 있습니다. 그래서 파일 서빙은 저장소 선택보다 파일 메타데이터, 상태 전이, 권한 재검증, 임시 접근 권한, 감사 증거를 함께 설계하는 문제로 봐야 합니다.
아래 순서로 읽으면 파일 저장 구조에서 시작해 업로드 검역, 권한 모델, Presigned URL 발급 정책까지 한 흐름으로 이어집니다.
- Object Storage와 파일 관리
- 파일 업로드와 서빙 시스템 설계
- Object Upload Quarantine과 비동기 스캔
- Authorization 모델: RBAC, ABAC, ReBAC
- Presigned URL 접근 제어 운영 플레이북
- API Key Lifecycle과 권한 회전
이런 상황이면 이 경로부터 보세요
- 사용자가 넘긴
bucket과object_key를 서버가 그대로 서명하거나 다운로드시키는 경우 - 업로드 완료, 바이러스 스캔 완료, 공개 가능 상태가 하나의 boolean으로 섞여 있는 경우
- 권한이 삭제된 사용자가 이미 발급받은 URL로 몇 분 동안 더 접근할 수 있는지 설명하기 어려운 경우
- 비공개 파일과 공개 정적 파일이 같은 CDN/cache 정책을 공유하는 경우
- 다운로드 감사 로그가 “실제 object access"만 있고 “누가 어떤 권한 판단으로 URL을 발급받았는지"는 남지 않는 경우
읽으면서 남길 운영 산출물
- 파일 유형표: public asset, private attachment, sensitive report, settlement export
file_id,object_key,object_version,status,sensitivity,retention_until을 포함한 metadata schema- 업로드 상태 전이표: uploaded, quarantined, scanning, clean, rejected, published, deleted
- 파일 민감도별 URL TTL, CDN cache 허용 여부, audit 강도, rate limit 기준
- 다운로드 URL 발급 로그 필드: requester, tenant, file version, purpose, policy version, expires_at
이 경로의 목표는 Presigned URL을 막연히 위험하게 보자는 것이 아닙니다. 서버가 직접 파일을 흘리지 않더라도, 누가 어떤 파일에 언제까지 접근할 수 있는지를 데이터와 정책으로 설명할 수 있게 만드는 것입니다. 특히 계약서, 정산 파일, 개인정보 export처럼 되돌리기 어려운 파일은 짧은 TTL보다 먼저 metadata 기반 권한 재검증과 감사 증거를 고정하는 편이 안전합니다.
인가 정책 운영 경로: 권한 모델에서 Shadow Rollout까지
인가 기능은 처음에는 if user.role == admin 같은 조건문으로 시작하기 쉽지만, 서비스가 커질수록 정책 변경 자체가 운영 리스크가 됩니다. RBAC에서 ABAC로 조건을 옮기거나, 관리자 권한을 세분화하거나, 새 정책 엔진을 붙이는 순간 기존 사용자의 접근 결과가 달라집니다. 이때 필요한 것은 더 많은 테스트만이 아니라 기존 판정과 새 판정을 비교하고, 차이를 위험별로 분류한 뒤, 작은 범위부터 강제하는 절차입니다.
아래 순서로 읽으면 권한 모델 선택에서 시작해 정책 변경, 캐시 무효화, 권한 드리프트, 감사 증거까지 한 흐름으로 이어집니다.
- Authorization 모델: RBAC, ABAC, ReBAC
- Authorization Policy Shadow Rollout
- 권한 판정 캐시 무효화
- Permission Drift와 Access Review
- Tamper-Evident Audit Log
- Activity Timeline과 Event Feed
이런 상황이면 이 경로부터 보세요
- 관리자 권한, 결제, 개인정보 export처럼 잘못 허용하거나 잘못 거절했을 때 피해가 큰 action이 있는 경우
- RBAC 조건을 ABAC/ReBAC 또는 정책 엔진으로 옮기려는데 운영 데이터의 예외 권한을 확신하기 어려운 경우
- 테스트 fixture는 통과하지만 실제 테넌트, 파트너, 배치 계정, support override에서 어떤 차이가 생길지 모르는 경우
- 권한 판정 캐시가 길게 남아 정책 변경 뒤에도 stale allow가 유지될 수 있는 경우
- 권한 변경, 정책 버전 변경, access review 결과를 나중에 감사 로그로 설명하기 어려운 경우
- 고객·CS·운영자 화면에서 같은 권한 변경 사건을 서로 다른 visibility와 문구로 보여줘야 하는 경우
읽으면서 남길 운영 산출물
- action/resource/subject group별 risk class와 owner
- shadow decision log schema: current decision, shadow decision, diff type, reason code, policy version
allow_to_deny,deny_to_allow,eval_error,cache_stale_allow의 rollout gate 기준- canary enforcement flag, rollback flag, policy version별 release note
- 고위험 action의 audit event와 decision log를 연결하는 trace key
- public/support/operator/security visibility별 timeline projection 필드와 마스킹 기준
이 경로의 목표는 인가 정책을 더 복잡하게 만드는 것이 아닙니다. 권한 결과가 바뀌는 순간을 관측 가능하고 되돌릴 수 있게 만드는 것입니다. 특히 고객 데이터, 관리자 도구, 정산, 계정 정지처럼 한 번 잘못 열리면 되돌리기 어려운 기능은 정책 코드보다 rollout 절차가 먼저 준비되어야 합니다.
고위험 접근과 API 계약 운영 경로: 열기 전에 되돌릴 수 있는지 확인하기
관리자 도구, 고객 지원 화면, 데이터 export, 권한 변경, 공개 API 응답 변경은 모두 공통점이 있습니다. 한 번 잘못 열리면 단순 rollback만으로 피해를 지우기 어렵습니다. 잘못된 사용자가 파일을 내려받았거나, 오래된 모바일 앱이 새 enum 값에서 크래시했거나, 지원 담당자의 임시 권한이 만료되지 않았다면 코드를 되돌린 뒤에도 감사, 고객 안내, 데이터 보정이 남습니다.
그래서 이 경로는 “권한을 어떻게 구현할까"보다 변경 전에 어떤 증거를 모으고, 배포 중 어떤 숫자로 멈추며, 문제가 생겼을 때 어떤 순서로 닫을까에 초점을 둡니다. 아래 글을 함께 읽으면 객체 단위 인가, 권한 축소, 응답 계약, 에러 계약, 감사 로그를 하나의 리뷰 체크리스트로 묶을 수 있습니다.
- Object-Level Authorization: IDOR/BOLA 방어
- Token Exchange와 Downscoped Token
- API Response Compatibility Contract
- API Error Semantics와 Retryability Contract
- Permission Drift와 Access Review
- Tamper-Evident Audit Log
이런 상황이면 이 경로부터 보세요
- 고객 지원 담당자가 사용자 계정, 주문, 파일, 정산 내역에 대신 접근하는 기능을 만들고 있는 경우
- 관리자 export, bulk update, impersonation, break-glass처럼 강한 권한을 일시적으로 열어야 하는 경우
- 응답 필드 삭제, enum 추가, nullable 변경, 에러 코드 변경이 모바일 앱이나 파트너 연동을 깨뜨릴 수 있는 경우
- 권한 회수 뒤에도 cache, presigned URL, downscoped token, 배치 worker가 예전 권한을 들고 있을 수 있는 경우
- 장애나 보안 리뷰 때 “누가 어떤 근거로 허용했고, 어떤 데이터가 나갔는가"를 audit log로 설명하기 어려운 경우
읽으면서 남길 운영 산출물
- 고위험 action inventory:
export,delete,impersonate,refund,permission.change,file.download - action별 risk class, owner, approval 필요 여부, break-glass 만료 시간
- actor와 subject를 분리한 접근 로그: 실제 수행자, 대리 대상, ticket/reason, policy version
- API contract diff gate: response schema diff, error code diff, consumer usage, deprecation window
- rollback gate: flag off, token revoke, URL invalidate, cache purge, partner notice 중 우선순위
- 사후 증거: affected resource count, denied/allowed decision sample, audit chain hash, customer-facing incident note 필요 여부
실무에서는 기능별 PR 템플릿에 아래 질문을 붙이는 것만으로도 사고 가능성이 꽤 줄어듭니다.
| 질문 | 확인할 기준 |
|---|---|
| 이 변경은 누군가의 데이터 접근 범위를 넓히는가? | 새 action, 새 role, 새 relation, 새 token scope가 생기면 보안 리뷰 대상으로 둔다 |
| 실패했을 때 사용자가 이미 본 데이터나 받은 파일을 회수할 수 있는가? | 회수가 어렵다면 배포 전 audit와 승인 gate를 강화한다 |
| 오래된 클라이언트가 새 응답·에러·enum을 안전하게 무시하는가? | consumer contract test와 production usage telemetry를 확인한다 |
| 권한 회수 후 stale allow가 남을 수 있는가? | cache TTL, token TTL, presigned URL TTL, worker queue age를 함께 본다 |
| 운영자가 나중에 이유를 설명할 수 있는가? | reason code, approval id, request id, policy version을 같은 trace로 묶는다 |
이 경로의 목표는 보안 검토를 느리게 만드는 것이 아닙니다. 위험한 접근과 계약 변경일수록 허용 조건, 관측 지표, 중단 기준, 사후 증거를 작게라도 먼저 고정해 두자는 것입니다. 그래야 빠르게 배포하더라도 문제가 생겼을 때 “일단 막고, 범위를 계산하고, 사용자에게 설명하는” 순서가 흔들리지 않습니다.
민감 데이터 암호화 운영 경로: 평문이 되는 순간을 줄이기
개인정보, 외부 provider token, 계좌 식별자, 고객지원 원문처럼 유출 피해가 큰 데이터는 “DB가 암호화되어 있다"는 말만으로 충분하지 않습니다. 애플리케이션 계정이 정상 조회하면 원문이 나오고, 백업·로그·검색 인덱스·분석 이벤트로 값이 복제될 수 있기 때문입니다. 그래서 이 경로는 저장소 보안이 아니라 어떤 필드가 언제 평문이 되고, 누가 왜 복호화했으며, 키를 어떻게 회전·폐기할지를 운영 계약으로 정리하는 데 초점을 둡니다.
아래 순서로 읽으면 비밀 관리에서 시작해 필드 암호화, 원문 조회 권한, 감사 증거, 삭제·보존까지 한 흐름으로 이어집니다.
- 비밀 관리: Vault/Secrets Manager와 Spring 연동
- Envelope Encryption과 PII Field Crypto 운영 플레이북
- Object-Level Authorization: IDOR/BOLA 방어
- API Key Lifecycle과 권한 회전
- Tamper-Evident Audit Log
- 데이터 보존과 삭제 아키텍처
이런 상황이면 이 경로부터 보세요
- 이메일, 전화번호, 계좌번호, 주민번호, OAuth token이 일반 read replica나 분석 계정에서 평문으로 보이는 경우
- 고객지원 화면이 원문 PII를 기본 표시하고, 마스킹 조회와 원문 조회 권한이 분리되어 있지 않은 경우
- 로그, trace, error report, 검색 인덱스, 데이터 웨어하우스에 원문 민감 값이 섞일 가능성이 있는 경우
- key_version, nonce, algorithm, authentication tag 없이 암호문만 저장해 회전과 알고리즘 교체가 어려운 경우
- “키 유출 의심” 상황에서 15분 안에 신규 write를 막고 영향 범위를 산정하는 절차가 없는 경우
읽으면서 남길 운영 산출물
- 민감 필드 inventory: field, sensitivity, owner, retention, search requirement, plaintext surface
- 암호문 schema:
alg,key_version,dek_ref,nonce,ciphertext,tag - 정확 검색용 blind index 설계와 pepper rotation 기준
- 원문 복호화 capability, reason code, ticket id, audit event schema
- key rotation 상태 전이와 dual-read/backfill/lazy rotation 중단 기준
- 로그·검색·분석 이벤트에서 원문 유출을 막는 테스트 체크리스트
이 경로의 목표는 모든 컬럼을 무리하게 암호화하는 것이 아닙니다. 유출 피해가 큰 필드부터 원문 노출 경로를 줄이고, 키를 잃거나 회전해야 하는 날에도 서비스와 감사 설명이 무너지지 않게 만드는 것입니다. 암호화는 마지막 방어선이 아니라 데이터 수명주기와 접근 권한을 다시 설계하게 만드는 계기입니다.
데이터 파이프라인 운영 경로: Outbox에서 CDC 복구까지
데이터 변경을 이벤트, 검색 인덱스, read model, 웨어하우스로 흘려보내는 시스템은 처음에는 “비동기 처리"처럼 보이지만, 운영에 들어가면 누락·중복·지연·재처리를 다루는 복구 시스템이 됩니다. 특히 CDC를 붙이는 순간 애플리케이션 코드는 단순해질 수 있어도, 원본 DB 로그 보존, 커넥터 offset, schema compatibility, sink 멱등성이라는 새 책임이 생깁니다.
아래 순서로 읽으면 이벤트 발행 설계에서 CDC lag 대응까지 한 흐름으로 연결됩니다.
- Transactional Outbox + CDC, 이중 쓰기 없이 이벤트를 안전하게 내보내는 법
- Kafka 기본: 토픽, 파티션, Consumer Group
- Kafka Consumer Lag: 밀림을 해석하고 줄이는 법
- PostgreSQL WAL, Checkpoint, Replication Lag
- 백엔드 커리큘럼 심화: CDC Connector Lag와 Snapshot 복구 운영 플레이북
- Projection Lag와 Read Model Rebuild
- Reconciliation Ledger Pipeline
이런 상황이면 이 경로부터 보세요
- DB 저장과 메시지 발행을 한 요청 안에서 처리하다가 유실/중복 복구 기준이 불명확한 경우
- Kafka consumer lag는 보이지만 사용자 기능이 실제로 얼마나 늦는지 설명하기 어려운 경우
- 초기 snapshot이나 backfill이 운영 DB, replica, sink worker를 흔드는 경우
- CDC connector 재시작, offset reset, replication slot 삭제를 장애 중에 즉흥적으로 판단하고 있는 경우
- 검색 인덱스나 read model은 맞지만 정산, 포인트, 권한 같은 부작용 시스템은 더 엄격한 재처리 기준이 필요한 경우
읽으면서 남길 운영 산출물
단순히 글을 읽고 끝내지 않으려면 아래 5가지를 문서나 런북에 숫자로 남기는 편이 좋습니다.
- 이벤트 발행 경로별
event_id, aggregate key, ordering key, dedup 보존 기간 - outbox backlog age, CDC source lag, connector lag, sink apply lag, business lag의 warning/critical 기준
- snapshot chunk size, pause 조건, read replica 사용 여부, 재시작 checkpoint 기준
- schema 변경 시 additive rollout, consumer fixture, breaking change 제거 시점
- replay 가능 경로와 불가능 경로, full snapshot 대신 targeted backfill을 선택할 기준
이 경로의 목표는 CDC나 Kafka를 “쓸 줄 아는 것"이 아니라, 장애가 났을 때 어디까지 처리됐고, 무엇을 다시 돌려도 안전하며, 어떤 데이터는 사람 승인 없이 건드리면 안 되는지를 설명할 수 있게 만드는 것입니다.
사용자 접점 운영 경로: 알림을 보내기 전에 신뢰를 설계하기
알림은 기능 목록에서는 작게 보이지만, 실제 서비스에서는 사용자의 신뢰와 피로도를 동시에 건드립니다. 결제 실패, 보안 경고, 배송 변경처럼 놓치면 안 되는 알림도 있고, 추천·마케팅처럼 너무 많이 보내면 사용자가 채널 자체를 꺼버리는 알림도 있습니다. 그래서 알림 설계는 “메일 발송 코드"가 아니라 업무 이벤트, 사용자 선호, 큐 재시도, 중복 제거, 증거 로그를 함께 보는 운영 문제입니다.
아래 순서로 읽으면 업무 이벤트를 외부 효과로 바꾸는 경로를 안전하게 나눌 수 있습니다.
- Transactional Outbox + CDC, 이중 쓰기 없이 이벤트를 안전하게 내보내는 법
- Queue Visibility Timeout과 Ack/Nack
- Notification Preference와 Delivery Pipeline
- 멱등성 설계
- 구조화 로깅
- Webhook Delivery Reliability 플레이북
이런 상황이면 이 경로부터 보세요
- 주문, 결제, 보안, 구독 변경 알림을 API 트랜잭션 안에서 바로 보내고 있는 경우
- 큐 재시도 때문에 같은 메일·푸시·문자가 두 번 이상 가는 사고가 있었던 경우
- 사용자가 수신 거부했는데 이미 쌓인 큐 작업을 어떻게 처리할지 기준이 없는 경우
- provider dashboard에는 성공으로 보이지만 실제 bounce, invalid token, complaint가 suppression에 반영되지 않는 경우
- “왜 이 알림이 갔는가"를 CS나 보안 담당자가 template, policy, source event 기준으로 추적하기 어려운 경우
읽으면서 남길 운영 산출물
- 알림 유형표: security, transactional, operational, digest, marketing
- 유형별 지연 SLO, 수신 거부 가능 여부, quiet hours 예외 기준
event_id,notification_id,dedup_key,delivery_attempt_id,provider_message_id의 의미와 보존 기간- preference snapshot과 발송 시점 최신 preference 재조회 중 어떤 방식을 쓸지에 대한 기준
- delivery evidence schema: template key, policy version, source event, provider response, final status
이 경로의 목표는 알림을 더 많이 보내는 것이 아닙니다. 중요한 알림은 잃지 않고, 중요하지 않은 알림은 사용자의 집중과 신뢰를 해치지 않게 줄이는 것입니다. 알림은 한 번 보내면 되돌리기 어렵기 때문에, 중복 방지와 감사 증거를 코드보다 먼저 설계하는 편이 안전합니다.
외부 통합 운영 경로: Webhook을 보내고 받는 양쪽 설계
Webhook은 단순한 HTTP callback처럼 보이지만, 실제 운영에서는 외부 시스템과 내부 상태를 맞추는 계약입니다. 우리가 이벤트를 보내는 쪽이면 재시도, 서명, delivery log, 수신자 장애 대응이 중요하고, 받는 쪽이면 raw body 서명 검증, replay 방지, inbox 저장, 상태 전이, quarantine이 중요합니다. 한쪽만 설계하면 장애 때 “상대가 다시 보내겠지” 또는 “우리가 이미 처리했겠지” 같은 추측에 기대게 됩니다.
아래 순서로 읽으면 실시간 통신 선택 기준에서 webhook 발신/수신 안정성까지 이어집니다.
- 실시간 통신: WebSocket vs SSE vs Webhook
- Webhook Delivery Reliability 플레이북
- Inbound Webhook Receiver 플레이북
- 멱등성 설계
- Transactional Inbox와 멱등 Consumer
- Operational State Machine 설계
이런 상황이면 이 경로부터 보세요
- 결제사, 인증 SaaS, 마켓플레이스, 파트너 API와 webhook으로 상태를 맞추고 있는 경우
- 같은 이벤트가 중복 도착하거나, 늦게 도착한 이벤트가 현재 상태를 되돌리는 경우
- 서명 검증은 있지만 raw body, timestamp 허용 오차, key rotation 기준이 문서화되어 있지 않은 경우
- provider에게 2xx를 돌려주는 시점과 내부 비즈니스 처리가 완료되는 시점을 구분하지 못하는 경우
- delivery success, accepted, processed, replayed, quarantined 지표가 한 대시보드에 섞여 있는 경우
읽으면서 남길 운영 산출물
- provider별 endpoint, account mapping key, secret version, rotation window
- event id, payload hash, replay window, dedup 보존 기간
- 발신 측 delivery log와 수신 측 inbox schema
- 상태 전이표: 정상 전이, stale event, manual review, quarantine 기준
- 지표 분리:
delivered,accepted,processed,replayed,rejected,quarantined
이 경로의 목표는 webhook을 “비동기 알림"으로만 보는 관점에서 벗어나, 외부 이벤트를 검증 가능한 ingestion pipeline으로 운영하는 것입니다. 특히 결제·권한·구독·정산처럼 되돌리기 어려운 도메인은 빠른 처리보다 위조 차단, 유실 방지, 중복 효과 방지, 상태 전이 정확성이 먼저입니다.
결제 상태 머신 운영 경로: 돈이 빠져나간 상태를 설명할 수 있게 만들기
결제 기능은 성공률만 높인다고 안전해지지 않습니다. 승인(authorize)은 됐지만 매입(capture)은 안 된 주문, provider 호출은 timeout이 났는데 카드사에는 승인된 결제, 웹훅은 늦게 왔지만 내부 주문은 이미 취소된 상태처럼 돈과 주문 상태가 서로 다른 시점에 움직이는 문제가 계속 생깁니다. 이때 PAID, FAILED, CANCELED 같은 단순 상태만 있으면 운영자는 장애 때 추측으로 복구하게 됩니다.
아래 순서로 읽으면 결제 상태 전이에서 시작해 멱등 키, 외부 webhook, 원장 대사, 수동 보정까지 한 흐름으로 이어집니다.
- 백엔드 커리큘럼 심화: 결제 승인·캡처 상태 머신, 중복 차감과 유령 주문을 막는 법
- Operational State Machine 설계
- 멱등성 설계
- Inbound Webhook Receiver 플레이북
- Reconciliation Ledger Pipeline
- Correction Job과 Audit Guardrail
이런 상황이면 이 경로부터 보세요
- 결제 API timeout을
FAILED로 닫고 사용자가 다시 결제하게 만드는 흐름이 있는 경우 - 주문은 성공으로 보이는데 provider settlement에는 매입이 없거나, provider에는 captured인데 내부 주문은 미확정인 경우
- 같은 결제 버튼을 여러 번 눌렀을 때 authorize, capture, refund의 멱등 키가 모두
order_id하나로 묶여 있는 경우 - 웹훅이 늦게 도착했을 때 현재 상태를 되돌리거나, 금액·통화·merchant account 검증 없이 상태를 덮어쓰는 경우
- 운영자가 결제 상태나 환불 상태를 수동으로 바꿀 수 있지만 승인자, reason code, correction event, 대사 결과가 남지 않는 경우
읽으면서 남길 운영 산출물
- 결제 상태 전이표:
INITIATED,AUTHORIZING,AUTHORIZED,CAPTURING,CAPTURED,CANCELING,CANCELED,REFUNDING,REFUNDED,UNKNOWN_REQUIRES_RECONCILIATION - 액션별 멱등 키 표: authorize, capture, cancel, refund, webhook ingest를 서로 다른 중복 방지 단위로 분리
payment_attempt와payment_ledger의 역할 구분: 현재 상태 조회와 불변 사실 기록을 분리- provider write timeout 처리 기준: 즉시 실패가 아니라 조회 예약, 사용자 중복 결제 차단, 확인 중 UX
- reconciliation 대상 쿼리: 장시간
AUTHORIZED, 장시간CAPTURING, 내부/provider 금액 차이, 환불 잔액 불일치 - 수동 보정 gate: 2인 승인, step-up authorization, correction event, 사후 대사, affected order count
이 경로의 목표는 결제 코드를 복잡하게 만드는 것이 아닙니다. 이미 복잡한 금전 상태를 상태 머신과 원장으로 드러내서, 장애가 났을 때 사용자에게 무엇을 보여줄지, 무엇을 자동으로 재시도할지, 어떤 건은 사람 승인 없이는 건드리면 안 되는지를 결정할 수 있게 만드는 것입니다.
오늘 추천 학습 경로: 안전한 릴리스와 운영 검증
최근 백엔드 시스템은 기능을 “한 번에 배포하고 끝"내기보다, 작은 단위로 노출하고 관측한 뒤 점진적으로 확대하는 방향으로 움직입니다. 배포 자체보다 중요한 것은 새 경로가 실제 트래픽을 만났을 때 어떤 비용·지연·정합성 리스크를 만들지 미리 확인하는 것입니다. 그래서 오늘은 기능 플래그, 트래픽 전환, Shadow Traffic, Drain-aware 배포, 분산 트레이싱을 하나의 릴리스 검증 흐름으로 묶었습니다.
- Feature Flag: 배포와 릴리스를 분리하는 운영 패턴
- Feature Flag Lifecycle Cleanup: 오래된 플래그가 운영 부채가 되지 않게 하는 법
- Traffic Cutover & Migration: 트래픽 전환을 안전하게 설계하는 법
- 백엔드 커리큘럼 심화: Shadow Traffic과 Dark Launch 운영 플레이북
- Drain-aware Deployment: 연결을 끊지 않는 배포 전략
- 분산 트레이싱 도입 플레이북
이런 분에게 특히 추천
- 새 기능을 배포할 때마다 “문제 생기면 바로 롤백” 말고 더 구체적인 사전 검증 절차가 필요한 경우
- 카나리, blue/green, feature flag, shadow traffic의 차이가 머릿속에서 섞이는 경우
- p95/p99 지연, 에러율, diff rate, queue lag처럼 릴리스 중단 기준을 숫자로 잡고 싶은 경우
- 배포 중 커넥션 드레인, 캐시 워밍, downstream 부하, 추적 ID 전파가 자주 빠지는 경우
읽는 순서 팁
- 릴리스 제어가 약하면 Feature Flag부터 읽고, 배포와 기능 노출을 분리하는 기준을 먼저 잡습니다.
- 플래그가 오래 남는다면 Feature Flag Lifecycle Cleanup 글에서 owner, 만료일, cleanup trigger를 먼저 고정합니다.
- 트래픽을 옮겨야 한다면 Traffic Cutover 글에서 전환 단위, rollback window, 성공 기준을 확인합니다.
- 사용자 영향 없이 검증하고 싶다면 Shadow Traffic 글로 넘어가 복제 금지 요청, PII 마스킹, diff checker 기준을 정합니다.
- 배포 중 연결 끊김이 문제라면 Drain-aware Deployment로 readiness, preStop, connection draining 순서를 점검합니다.
- 원인 추적이 어렵다면 분산 트레이싱 글을 마지막에 붙여 trace/span/log correlation을 보강합니다.
실무 적용 체크리스트
아래 항목을 릴리스 리뷰 템플릿에 붙여두면 글을 읽고 끝나는 것을 줄일 수 있습니다.
- 기능 플래그 이름, owner, 기본값, 만료 예정일이 정해져 있는가?
- 새 경로로 보낼 트래픽 비율과 증가 간격이 문서화되어 있는가?
- shadow 대상에서 결제·주문·포인트·알림처럼 부작용이 있는 요청을 차단했는가?
- 신규/기존 응답 diff에서 정확히 일치해야 하는 필드와 허용 오차가 있는 필드를 나눴는가?
- p95/p99, error rate, timeout, queue lag, downstream QPS의 중단 기준이 숫자로 적혀 있는가?
- 배포 종료 전 readiness false, connection drain, background worker stop 순서가 검증되었는가?
- 문제가 생겼을 때 flag off, traffic shift back, rollback deploy 중 무엇을 먼저 할지 정했는가?
- 장애 분석을 위해 trace id, request id, feature flag variant, shadow run id가 로그에 남는가?
이 경로를 다 읽고 나면 특정 배포 기법 이름을 아는 수준을 넘어, 릴리스 전 검증 → 제한 노출 → 관측 → 중단/확대 판단 → 롤백까지 하나의 운영 루프로 설계할 수 있습니다. 블로그에 흩어진 심화 글도 이 흐름 안에서 다시 연결되므로, 최신 글을 읽은 뒤 관련 개념으로 자연스럽게 이동하기 좋아집니다.
성능·비용 보호 학습 경로: 요청 하나의 리소스 예산 잡기
장애는 항상 전체 트래픽이 폭증할 때만 오지 않습니다. QPS는 낮지만 DB aggregation, 외부 API fan-out, 큰 응답 payload, 재시도가 붙은 요청 하나가 pool을 오래 잡고 있으면 평범한 조회까지 같이 느려집니다. 그래서 성능 튜닝을 평균 latency 개선으로만 보면 부족하고, 요청 하나가 어떤 리소스를 얼마나 쓰는지를 먼저 드러내야 합니다.
아래 순서로 읽으면 capacity planning에서 시작해 admission control, API별 resource budget, tail latency, graceful degradation까지 한 흐름으로 이어집니다.
- Capacity Planning과 Little’s Law
- Admission Control과 Concurrency Limits
- API Resource Budgeting, 요청 하나의 CPU·DB·외부 호출 비용을 설계하는 법
- API 레이트 리밋과 백프레셔
- Tail Latency 엔지니어링 플레이북
- Graceful Degradation과 Brownout
이런 상황이면 이 경로부터 보세요
- 트래픽은 많지 않은데 특정 리포트, 검색, export API가 DB pool wait을 키우는 경우
- rate limit은 있지만 가벼운 요청과 무거운 요청을 같은 1건으로 취급하는 경우
- tenant 한 곳의 batch나 관리자 조회가 interactive API의 p95/p99를 흔드는 경우
- timeout, retry, pagination, cache fallback 기준이 API마다 제각각인 경우
- 429와 503을 섞어 쓰고 있어 클라이언트 재시도 정책이 서버 부하를 더 키우는 경우
읽으면서 남길 운영 산출물
- 핵심 API 10개의 p95 latency, DB query count, external call count, response size, retry count
- endpoint별 request cost unit과 interactive/admin/batch request class 구분
- tenant budget, system-wide admission control, degraded path의 적용 순서
- budget 초과 시 429, 시스템 포화 시 503, 큰 payload 제한 시 413/422를 나누는 응답 기준
- budget decision 로그 필드: endpoint, request class, tenant hash, budget units, used units, decision
이 경로의 목표는 서버를 무조건 아끼는 것이 아닙니다. 사용자가 바로 기다리는 요청, 데이터 정합성이 중요한 요청, 나중에 처리해도 되는 batch를 구분해서 바쁠 때 무엇을 먼저 살릴지 결정하는 기준을 만드는 것입니다. 평균 지표가 멀쩡한데 p99와 비용만 계속 튀는 서비스라면 이 경로가 특히 잘 맞습니다.
기존 설계 학습 경로: DDD와 헥사고날 아키텍처
구조 설계 주제가 필요하다면 아래 경로를 이어서 보면 좋습니다. 운영 안정화가 “릴리스 후 시스템을 지키는 기술"이라면, DDD와 헥사고날 아키텍처는 “변경이 잦아도 도메인 규칙을 잃지 않는 구조"에 가깝습니다.
- DDD 전술적 설계: Entity, VO, 그리고 Aggregate
- 육각형 아키텍처 (Hexagonal): 도메인을 프레임워크로부터 격리하라
- DDD 심화: Aggregate Root와 트랜잭션 경계
개념이 약하면 DDD 전술적 설계부터 시작하고, 현재 구조 개선이 급하면 육각형 아키텍처를 먼저 읽은 뒤, 운영 관점의 경계 설정이 궁금하면 Aggregate Root와 트랜잭션 경계까지 이어서 보세요. 이 경로를 다 읽고 나면 단순히 패턴 이름을 아는 수준이 아니라, 도메인 규칙을 어디에 두고 어떤 경계로 보호할지를 더 분명하게 판단할 수 있습니다.
장애 대응 학습 경로: 감지에서 종료까지
운영 글을 읽을 때는 “문제가 생기면 알람이 울린다"에서 멈추지 말고, 누가 지휘하고, 어떤 숫자로 심각도를 정하고, 언제 닫을지까지 이어서 봐야 합니다. 아래 경로는 알람 감지부터 인시던트 커맨드, 데이터 보정, 회고 액션까지 하나의 흐름으로 묶습니다.
- 알람 전략: 에러율/레이턴시/자원지표 설계
- SLO/SLI/Error Budget
- 인시던트 커맨드와 Severity 운영 플레이북
- Reconciliation Ledger Pipeline
- Poison Message Quarantine
처음에는 알람과 SLO로 “언제 깨울지"를 잡고, 그다음 인시던트 커맨드 글에서 IC/Tech Lead/Comms Owner 역할과 15분 업데이트 리듬을 정리하세요. 결제, 포인트, 권한, 메시지 발송처럼 부작용이 남는 시스템이라면 마지막 두 글까지 이어서 읽어야 합니다. API가 다시 200을 반환해도 데이터 보정과 재처리 기준이 없으면 장애는 실제로 끝난 것이 아닙니다.
📂 학습 주제
AI Agent Operations
학습 노트 모음
Algorithm
학습 노트 모음
API
URL, Header, Query 기반 버전 관리와 Breaking Change 전략
API Design
학습 노트 모음
Architecture
학습 노트 모음
Audit Log
학습 노트 모음
Authorization
학습 노트 모음
Backend
학습 노트 모음
Backend API Design
학습 노트 모음
Backend API Operations
학습 노트 모음
Backend Architecture
학습 노트 모음
Backend Caching
학습 노트 모음
Backend Concurrency
학습 노트 모음
Backend Consistency
학습 노트 모음
Backend Data Access
학습 노트 모음
Backend Data Modeling
학습 노트 모음
Backend Data Pipeline
학습 노트 모음
Backend Data Pipeline Operations
학습 노트 모음
Backend Data Quality
학습 노트 모음
Backend Deep Dive
학습 노트 모음
Backend Domain Modeling
학습 노트 모음
Backend Integration
학습 노트 모음
Backend Messaging
학습 노트 모음
Backend Messaging Reliability
학습 노트 모음
Backend Operational Timeline
학습 노트 모음
Backend Operations
학습 노트 모음
Backend Performance
학습 노트 모음
Backend Reliability
학습 노트 모음
Backend Resilience
학습 노트 모음
Backend Security
학습 노트 모음
Backend Security & Operations
학습 노트 모음
Build
학습 노트 모음
Caching
학습 노트 모음
Cloud
S3 개념, Presigned URL, 대용량 업로드, 비용 최적화
Code Quality
네이밍, 함수 설계, 주석, 리팩토링 원칙
CS
학습 노트 모음
Data Architecture
학습 노트 모음
Data Engineering
학습 노트 모음
Data Export
학습 노트 모음
Data Platform
학습 노트 모음
Database
학습 노트 모음
Database Internals
학습 노트 모음
Database Reliability
학습 노트 모음
Design Patterns
학습 노트 모음
DevOps
학습 노트 모음
Distributed
Kafka, RabbitMQ, Redis Pub/Sub 비교와 선택 기준
Distributed Coordination
학습 노트 모음
Distributed Systems
학습 노트 모음
Event Driven Architecture
학습 노트 모음
File Upload
학습 노트 모음
Frontend
React 성능 최적화, Virtual DOM, memo, useCallback 관련 핵심 개념과 실전 예제 정리
Git
학습 노트 모음
Incident Management
학습 노트 모음
Java
학습 노트 모음
Java/Spring Operations
학습 노트 모음
JPA
Lazy/Eager 로딩, Batch Size, QueryDSL, Hibernate 통계
JSONB Schema Governance
학습 노트 모음
JVM
학습 노트 모음
Kafka
학습 노트 모음
Load Balancing
학습 노트 모음
Messaging
학습 노트 모음
Modern Tech
학습 노트 모음
Network
학습 노트 모음
Networking
학습 노트 모음
Object Storage Security
학습 노트 모음
Observability
학습 노트 모음
OOP
학습 노트 모음
Operations
학습 노트 모음
Ops
학습 노트 모음
OS
학습 노트 모음
Performance
학습 노트 모음
Practical Project
학습 노트 모음
Q&A
학습 노트 모음
React
React 라이브러리 학습 노트
Reactive
Reactive Programming, Publisher/Subscriber, Backpressure 관련 핵심 개념과 실전 예제 정리
Realtime Operations
학습 노트 모음
Redis
학습 노트 모음
Release Engineering
학습 노트 모음
Resilience
학습 노트 모음
Search Architecture
학습 노트 모음
Security
학습 노트 모음
Spring
ApplicationEvent, @EventListener, 비동기 이벤트, 트랜잭션 바인딩
Spring Data JPA
학습 노트 모음
System Design
학습 노트 모음
Testing
테스트 피라미드, Mock vs Stub, 통합 테스트 격리 전략
Testing Strategy
학습 노트 모음
최근 학습 노트
백엔드 커리큘럼 심화: 식별자 정규화와 비교 정책, Unicode 입력이 권한 우회가 되지 않게 설계하는 법
이메일·사용자명·도메인·외부 리소스 ID를 표시 문자열과 보안 식별자로 분리하고, 허용 문자·정규화·중복·감사 기준을 설계하는 실무 플레이북입니다.
백엔드 커리큘럼 심화: Authorization-Aware Search, 검색 결과에서 권한 누출을 막는 플레이북
검색 인덱스가 원본 권한보다 늦게 바뀌는 환경에서 문서 제목·스니펫·집계·RAG 인용까지 포함한 권한 누출을 막기 위해, query-time filter·권한 전파 SLO·재검증· …
백엔드 커리큘럼 심화: SCIM 프로비저닝·비활성화, IdP-애플리케이션 계정 수명주기 운영 플레이북
SCIM으로 사용자와 그룹을 연동할 때 계정 생성보다 어려운 비활성화, 그룹 동기화, 재시도, 권한 캐시 무효화, 정합성 점검을 운영 기준과 함께 정리합니다.
백엔드 커리큘럼 심화: DB 자격증명 회전과 커넥션 풀 무중단 전환 플레이북
DB 비밀번호·토큰을 교체할 때 애플리케이션 커넥션 풀을 끊지 않고 전환하는 방법과, 이중 자격증명·롤백·검증 기준을 숫자 중심으로 정리합니다.
백엔드 커리큘럼 심화: 금액·통화·반올림 경계, Money 값을 정산 사고 없이 다루는 법
금액을 부동소수점이나 단순 DECIMAL 컬럼으로만 다루지 않고, 통화 단위·반올림 시점·배분 규칙·원본 산식·정산 검증을 하나의 Money 계약으로 설계하는 실무 플레이북입니다.
백엔드 커리큘럼 심화: PostgreSQL SKIP LOCKED 작업 큐, Claim·Lease·재처리를 안전하게 설계하는 법
PostgreSQL SELECT FOR UPDATE SKIP LOCKED로 작업 큐를 만들 때 claim 트랜잭션, lease 만료, fencing token, 재시도, …
백엔드 커리큘럼 심화: PostgreSQL Generic Plan과 Custom Plan, 파라미터 편향으로 생기는 성능 급락을 진단하는 법
PostgreSQL prepared statement가 generic plan과 custom plan을 고르는 원리부터 파라미터 편향 진단, JDBC·커넥션 풀 관측, 안전한 완화 …
백엔드 커리큘럼 심화: Restore Drill과 PITR, 백업을 실제 복구 능력으로 검증하는 법
백업 파일 보관을 넘어 PITR, 복구 드릴, 데이터 무결성 검증, RTO/RPO 측정을 운영 루틴으로 만드는 실무 플레이북입니다.
백엔드 커리큘럼 심화: 결제 승인·캡처 상태 머신, 중복 차감과 유령 주문을 막는 법
결제 authorize/capture/cancel/refund 흐름을 상태 머신, 원장, 멱등 키, reconciliation 기준으로 설계하는 실무 플레이북입니다.
백엔드 커리큘럼 심화: Envelope Encryption과 PII Field Crypto 운영 플레이북
DB 전체 암호화만으로 부족한 개인정보·토큰·고위험 필드를 KMS, DEK, 키 버전, 검색용 blind index, 회전 런북으로 안전하게 운영하는 기준을 정리합니다.
백엔드 커리큘럼 심화: Bitemporal Effective-Dated Records, 가격·권한·계약 이력을 현재처럼 조회하는 법
가격, 권한, 약관, 플랜처럼 과거 기준 조회와 정정 이력이 필요한 데이터를 bitemporal/effective-dated record로 설계하는 기준을 정리합니다.
백엔드 커리큘럼 심화: Step-Up Authorization, 고위험 액션 전에 다시 확인하는 서버 권한 계약
이미 로그인한 사용자가 결제, 권한 변경, 데이터 export, 삭제 같은 고위험 액션을 실행하기 전에 재인증과 승인 토큰을 어떤 서버 계약으로 설계할지 정리합니다.