Stage 0 - point shop baseline
Trigger: users, points, products, orders 4 tables and small Java/Spring APIs.
Symptom: It works because nothing has attacked it yet.
ํ ์ผ์ ๋๋ฆฌ๋ ํ์ด์ง๊ฐ ์๋๋ค. ๋ค ๊ฐ ๋ฌธ์๋ฅผ ํ๋์ ์คํ ์์๋ก ์์ถํ๋ค: campaign์ด ์ค๋ ์ฌ๊ณ ๋ฅผ ์ ํ๊ณ , lab์์ ์ง์ ํฐ๋จ๋ฆฌ๊ณ , move๋ก ๋ด ๋ง ์์ถํ๊ณ , sparring์์ ์์ด๋ก ๋ง๋๋ค.
์ค๋์ ํ stage๋ง ํ๋ค. ํ lab๋ง ํฐ๋จ๋ฆฐ๋ค. ํ move๋ง ๋ด ๋ง๋ก ์ฑ์ด๋ค. ๊ทธ๋ฆฌ๊ณ `/sparring`์์ 5๋ฒ ๋ง๋๋ค.
์ ์ฒด ๋ชฉ๋ก์ ์ง๋์ผ ๋ฟ์ด๋ค. ์ฒดํฌ๋ฐ์ค ์ ์ฒด๋ฅผ ๋๋ด๋ ๊ฒ์์ด ์๋๋ผ, ์ฌ๊ณ ํ๋๋ฅผ ๋ชธ์ ์๊ธฐ๋ ๊ฒ์์ด๋ค.
์ค๋ ์ด๋ค ์ฌ๊ณ ๋ฅผ ๊ฒช์์ง ์ ํ๋ค. ์์๋ฅผ ๊ณ ๋ฏผํ์ง ์๋๋ค.
์์งํ๊ฒ ๋ง๋ค๊ณ , ๊ณต๊ฒฉํ๊ณ , ๋ง๊ฐ์ง ์ซ์/๋ก๊ทธ๋ฅผ ์ง์ ๋ณธ๋ค.
๊ฒช์ ์ฌ๊ณ ๋ฅผ System 15๋ก, ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ Algorithm 10์ผ๋ก ๋ฐ๋ก ์์ถํ๋ค.
ํ๋ฉด์ ๋ณด๋ฉด์ ์์ด๋ก ์ฌ์ค๋ช ํ๊ณ AIํํ ๊ณต๊ฒฉ๋ฐ๋๋ค.
์์๋ฅผ ๊ณ ๋ฏผํ์ง ๋ง๊ณ ์์์ ์๋๋ก. ๊ฐ stage๋ ์ฌ๊ณ ํ๋๋ค.
Trigger: users, points, products, orders 4 tables and small Java/Spring APIs.
Symptom: It works because nothing has attacked it yet.
Trigger: Marketing succeeds; orders grow from small to millions.
Symptom: Order lookup becomes seconds, not milliseconds.
Trigger: Sale page drives thousands of reads per second.
Symptom: DB CPU spikes; cache fixes reads but creates staleness and stampede.
Trigger: 100 items, 5000 buyers at once.
Symptom: Negative stock, double point deduction, deadlocks.
Trigger: External PG/webhook enters the system.
Symptom: Duplicate webhook double-charges or double-credits points.
Trigger: Order flow includes notification, points, stats, and takes seconds.
Symptom: DB commits but server dies before sending downstream work.
Trigger: Shipping API hangs for 30 seconds.
Symptom: Threads pile up and unrelated endpoints slow down.
Trigger: Users say it is slow, but nobody knows where.
Symptom: No dashboard, no p95/p99, no trace, no root cause.
Trigger: Product search is added on millions of rows.
Symptom: LIKE '%x%' dies; search index becomes a copy with lag.
Trigger: orders reaches 100M rows.
Symptom: No single index makes all queries cheap; cross-partition work hurts.
Trigger: The system is large enough that every change feels risky.
Symptom: A 200 response lies; old code may still be serving.