블로그 회고 포스트 — 백준이 사라졌다?
주요 결정
category는 `challenge`로 분류
blog/src/lib/posts.ts:16의 Category union type이 'journey' | 'challenge' 2분류로 고정. 사용자 요청 retrospective는 스키마에 없어 tags로 이동. 글 성격이 "외부 충격에 대한 기술적 대응"이므로 challenge가 의미상도 적절
order 7 배정
기존 포스트가 1~6을 점유 중 (agent-orchestration-solo-dev 1, system-architecture-overview 2, orchestration-structure 3, cicd-ai-guardrails 4, sprint-journey 5, session-policy-sync 6). 최신 포스트가 목록 상단에 오도록 7 배정
MDX 컴포넌트 0건, 코드 블록 0건
블로그 공통 규칙 "MDX 최소 사용" + 성찰 중심 글 성격을 따라 순수 텍스트로 작성. 인라인 코드(sourcePlatform 등)만 허용
기존 BOJ 데이터 공존 서사 유지
블로그 글에서 "이식"이 아닌 "공존"을 강조해, Sprint 95~97의 "기존 BOJ 레코드 보존, 마이그레이션 0" 설계 결정을 회고 맥락에 녹임
글 중심 메시지 = 태도
기술 스택/결정 나열이 아니라 "영원한 외부 플랫폼은 없다"는 태도를 무게중심으로 배치. 성찰 파트가 글의 1/3 이상 차지하도록 구성
배경
BOJ(백준) 서비스 종료 공지에 대응해 Sprint 95~97에서 프로그래머스로 문제 제공처를 이식한 3-스프린트 로드맵이 완료되었고, Sprint 99에서는 그 후폭풍으로 PM QA 5라운드가 이어졌다. 이 일련의 경험을 외부 플랫폼 의존 서비스의 태도라는 프레임으로 재해석한 회고 블로그 포스트를 KR/EN으로 작성한다.
목표
- BOJ → 프로그래머스 이식 경험을 외부 의존 서비스의 설계 태도로 재해석한 블로그 글 1편 추가
- KR/EN 동등 번역
- 기존 블로그 공통 규칙(경험담 톤, 시리즈 footer 제거, MDX 컴포넌트 최소) 준수
- 빌드/CI 통과 후 main에 머지
작업 요약
| 커밋 | 담당 | 내용 |
|---|---|---|
e96f8d7 (PR #96) | Oracle + scribe 지침 | blog/content/posts/baekjoon-gone.mdx + blog/content/posts-en/baekjoon-gone.mdx 신규 작성 (+198 lines) |
수정 내용
블로그 포스트
blog/content/posts/baekjoon-gone.mdx(KR) — 제목 "백준이 사라졌다?", categorychallenge, order 7, tags["retrospective", "external-api", "platform-migration"]blog/content/posts-en/baekjoon-gone.mdx(EN) — 제목 "Baekjoon Is Gone?", KR 동등 번역
글 구조
- 도입 — "알고리즘 문제는 백준이죠"가 깨진 날
- 의존은 알고 있었습니다 —
sourcePlatform컬럼, 외부 모듈 분리, enum/토큰 플랫폼 독립성 - 영원한 건 없다 — 무의식의 가정 "설마 백준이?"가 깨진 순간
- 이식의 3 스프린트 — Sprint 95(백엔드 인프라) → 96(프런트 UX) → 97(파이프라인 마감)
- 성과 — 373건 이식, 2,445 tests PASS, WCAG AA 6/6, BOJ 공존
- 성찰 (글의 1/3+) — "설마" 지우기 / 외부 API 생존 전제 / 추상화는 생존 조건
- 마무리 — "백준은 사라집니다. AlgoSu는 남습니다"
검증 결과
| 항목 | 결과 |
|---|---|
npm run build (blog/) | ✅ PASS — 19 페이지 정적 생성, /posts/baekjoon-gone + /en/posts/baekjoon-gone 포함 |
| 타입 체크 / 린트 | ✅ 빌드 내 포함, 에러 0 |
| CI (PR #96) | ✅ 26개 체크 전체 PASS (Audit/Build/Quality/Test/E2E/Secret Scan) |
| Squash merge | ✅ e96f8d7 on main |
결정
- category는
challenge로 분류:blog/src/lib/posts.ts:16의 Category union type이'journey' | 'challenge'2분류로 고정. 사용자 요청retrospective는 스키마에 없어tags로 이동. 글 성격이 "외부 충격에 대한 기술적 대응"이므로 challenge가 의미상도 적절 - order 7 배정: 기존 포스트가 1~6을 점유 중 (agent-orchestration-solo-dev 1, system-architecture-overview 2, orchestration-structure 3, cicd-ai-guardrails 4, sprint-journey 5, session-policy-sync 6). 최신 포스트가 목록 상단에 오도록 7 배정
- MDX 컴포넌트 0건, 코드 블록 0건: 블로그 공통 규칙 "MDX 최소 사용" + 성찰 중심 글 성격을 따라 순수 텍스트로 작성. 인라인 코드(
sourcePlatform등)만 허용 - 기존 BOJ 데이터 공존 서사 유지: 블로그 글에서 "이식"이 아닌 "공존"을 강조해, Sprint 95~97의 "기존 BOJ 레코드 보존, 마이그레이션 0" 설계 결정을 회고 맥락에 녹임
- 글 중심 메시지 = 태도: 기술 스택/결정 나열이 아니라 "영원한 외부 플랫폼은 없다"는 태도를 무게중심으로 배치. 성찰 파트가 글의 1/3 이상 차지하도록 구성