20강 / 20강

블랙프라이데이 — 어디가 먼저 터질까

20강 전부를 한 판에 쏟아붓는 실전

블랙프라이데이 — 어디가 먼저 터질까
부하가 열 배로 뛰면 가장 약한 고리가 먼저 끊어집니다. 그게 어디인지 미리 아는 것이 관리자의 일이에요.

드디어 마지막 강입니다. 지금까지 배운 걸 전부 써서 진짜 상황을 다뤄 봅시다.

오늘 밤 자정에 블랙프라이데이 세일이 시작됩니다.
평소 초당 30건이던 요청이 초당 300건으로 뜁니다.
서버는 6코어 16GB NVMe 한 대. 여러분은 무엇을 준비해야 할까요?
블랙프라이데이 시뮬레이터 — 요청을 늘려 보며 어느 자원이 먼저 한계에 닿는지 보고, 대응책을 하나씩 적용해 보세요.
불러오는 중…

① 먼저 한계를 계산합니다

"터질 것 같다"가 아니라 "초당 몇 건에서 터진다"를 알아야 합니다.

자원마다 한계를 따로 계산하면 병목이 보입니다.
Python 브라우저에서 실행

계산해 보면 네트워크 회선이 가장 먼저 막힙니다. 850KB짜리 페이지를 1Gbps로 뿌리면 초당 147건이 천장이거든요.

CPU를 아무리 늘려도 소용없습니다. 회선을 넓히거나, 보낼 양을 줄여야 해요.

② 대응책의 효과를 계산합니다

가장 싼 대응이 가장 효과가 큰 경우가 많습니다.
Python 브라우저에서 실행

③ 세일 당일 무슨 일이 벌어지나 — 직접 겪어 봅시다

평상시 상태를 먼저 기록해 둡니다.
bash 브라우저에서 실행
us 가 90%대로. load 가 코어 수를 넘어갑니다.
bash 브라우저에서 실행
메모리를 무리하게 쓰면 어떻게 되는지 봅니다.
bash 브라우저에서 실행
wa 가 치솟고 b(블록된 프로세스)가 생깁니다.
bash 브라우저에서 실행

④ 실전 체크리스트

세일 전날에 해 둘 일들입니다. 당일에는 이미 늦어요.

언제할 일왜 (몇 강)
전날평상시 지표를 기록해 둔다비교 기준이 없으면 진단 불가 (15강)
디스크 여유 20% 이상 확보SSD는 꽉 차면 느려진다 (12강)
이미지를 CDN으로, 압축 켜기회선이 첫 병목 (13강)
로그 로테이션·백업을 세일 시간 밖으로디스크를 뺏기지 않기 (18강)
워커 수를 부하 테스트로 정해 둔다추측 금지 (17강)
당일vmstat 1 을 띄워 둔다si/so·wa·r 을 실시간 감시 (15강)
느려지면 측정부터, 설정 변경은 그다음오진이 가장 비싸다 (15강)
최악의 경우 대기열로 전환죽는 것보다 느린 게 낫다 (19강)
다음 날지표와 로그를 저장해 둔다내년의 기준선이 된다
실제 병목이 어디였는지 기록다음 투자를 정하는 근거

⑤ 마지막으로 — 20강을 한 장으로

느린 서버 앞에 앉았을 때, 이 순서로 생각하세요.

1. 무엇을 기다리는가?
   us 높음 → CPU가 계산 중        → 코드·코어      (5,10,11,17강)
   wa 높음 → 디스크를 기다림      → SSD·fsync·캐시 (7,12,18강)
   si/so   → 메모리 부족          → 증설·워커 감소 (9,16강)
   si 높음 → 패킷 폭주            → CDN·LB         (13강)
   전부 낮음 → 락·외부 API 대기   → 애플리케이션

2. 그 자원의 한계는 초당 몇 건인가?     (19,20강)
3. 가장 싼 대응부터 적용한다.           (CDN > 캐시 > 설정 > 하드웨어)
4. 다시 측정한다. 병목은 옮겨 다닌다.

이 네 줄이 컴퓨터 구조를 배운 이유입니다. 서버 안에서 무슨 일이 벌어지는지 알면, 어디에 돈과 시간을 쓸지 알 수 있습니다.

🤔 확인 문제
초당 300건 목표인데 계산 결과 CPU 한계 380건, 디스크 한계 2,500건, 회선 한계 147건이 나왔습니다. 무엇을 해야 할까요?
🤔 확인 문제
병목 하나를 해결했더니 이번엔 다른 곳이 느려졌습니다. 이건 실패인가요?