<aside> 📌
Part 2 · Ch03 — Production-Level Scalability (Project 3)
Ch01에서 "동작하는" FinSight를 만들고, Ch02에서 PR마다 자동 리뷰를 붙였다. 이번엔 "동작한다"를 "프로덕션 레벨이다"로 끌어올린다 — 그것도 같은 에이전트(Claude Code) 한 스택으로 end-to-end.
한 줄 요약: 프로덕션 레벨을 막연한 느낌이 아니라 측정 가능한 5축(성능·보안·데이터 안전·관측성·품질)으로 못 박고, 나머지 클립이 한 축씩 에이전트로 잠근다. production scale, end-to-end agentic engineering.
</aside>
<aside> 🛫
내 노트북에서 로그인·차트·결제가 한 바퀴 돌면 "됐다" 싶다. 하지만 유저 1,000명이 들어오면 — 페이지가 3초씩 걸리고(성능), RLS 한 줄이 빠져 남의 데이터가 새고(보안), 마이그레이션 한 번 잘못 돌려 데이터가 날아가고(데이터 안전), 에러가 나도 아무도 모르고(관측성), 리뷰 에이전트가 갑자기 헛소리를 한다(품질).
핵심 질문: "프로덕션 레벨이라는 게 도대체 측정 가능한 무엇인가?" → 통과/실패를 판정할 수 있는 체크리스트로 만들어야 에이전트가 한 축씩 끌어올린다. (비행기 이륙 전 체크리스트처럼 — 느낌으로 이륙하지 않는다.)
</aside>
| 축 | 질문 | 판정 기준 |
|---|---|---|
| 1. 성능 Performance | 유저가 기다리지 않는가 | Core Web Vitals (LCP ≤ 2.5s) |
| 2. 보안 Security | 알려진 취약점 패턴이 없는가 | OWASP A01~A10 0건 |
| 3. 데이터 안전 Data Safety | 프로덕션 데이터를 안 망가뜨리고 바꾸나 | 격리·read-only |
| 4. 관측성 Observability | 지금 무슨 일이 일어나는지 보이나 | 모니터링·로깅·analytics |
| 5. 품질 Quality | 하네스가 일관되게 좋은 결과를 내나 | Eval |
<aside> ⭐
앞 3개(성능·보안·데이터 안전)는 익숙한 프로덕션 덕목. 마지막 5번 "품질"이 이 강의만의 축이다. 우리는 코드만 짠 게 아니라 **하네스(skill·agent·CLAUDE.md)**를 만들었고, 그 하네스 자체도 프로덕션 레벨인지 측정해야 한다. 코드에 테스트가 있듯, 하네스엔 Eval이 있다.
</aside>
[Clip 02] 보안 ① 코드 전체 OWASP Top 10 스캔 (정기)
[Clip 03] 보안 ②·데이터 Supabase get_advisors + Staging
[Clip 04] 성능 Lighthouse auto research 루프
[Clip 05] 품질·관측성 하네스 Eval + PostHog error tracking
[Clip 06] 관측성 PostHog product analytics + SEO
순서 = 의존성. 보안·데이터(02·03) 먼저 잠그고 → 성능(04) → 품질·관측성(05·06).
데이터가 새는 채로 성능 튜닝하는 건 의미가 없으니까.
<aside> ⚠️
5축은 한 번 통과로 끝이 아님. 코드가 바뀌면 다시 깨진다 — 보안 스캔도 Eval도 정기적으로 재실행(그래서 보안 스캔이 "2주~월 1회"). 그리고 모든 축은 *"좀 빠른 것 같다"*가 아니라 *"LCP 2.5초 이하"*처럼 판정 가능해야 에이전트가 자기 채점을 한다.
</aside>
<aside> 🚪
보안은 Ch02에서 한 번 다뤘다 — 단 PR 단위(Security plugin이 diff만 점검). 이번은 나머지 절반. PR 스캔은 "방금 바뀐 줄"만 본다. 6개월 전 들어가 아무도 다시 안 본 코드, 여러 파일에 누적된 구조적 취약점은 diff로 절대 안 잡힌다.
PR 스캔 = 문에서 검문, 전체 스캔 = 한 달에 한 번 집 전체 돌며 잠기지 않은 창문 점검. 둘 다 필요하다.
</aside>
| Ch02 — Security plugin | Ch03 — 보안 스캔 에이전트 | |
|---|---|---|
| 대상 | PR 변경분(diff) | 전체 코드베이스 |
| 주기 | 매 PR (이벤트) | 2주~월 1회 (정기 · GitHub Action cron) |
| 잡는 것 | 방금 들어온 취약점 | 누적된·구조적 취약점 |