LabHub
배우기 러닝패스 코스

Cost and Architectural Decisions

Commit First and the Waste Becomes a 3-Year Contract

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

읽기에서 순서를 봤습니다. 안 쓰는 것부터 지우고, 약정 할인은 맨 마지막. 여기서는 그 순서를 실제 숫자로 확인합니다.

특히 두 가지를 손으로 겪습니다.

시작

mkdir -p /root/rightsize
cp -r /opt/lab/rightsize/* /root/rightsize/
cd /root/rightsize
python3 plan.py

합계가 $4,607.76 나옵니다.

파일

파일 하는 일
fleet.json 인스턴스 목록과 최근 14일 지표. 원본은 그대로 둡니다
plan.py 한 달치 비용을 계산. 고치지 않습니다
after.json fleet.json 을 복사해서 여러분이 고칠 파일

지표를 꼭 읽으세요. CPU최대_14일 만 보면 다섯 대 전부 줄여도 될 것처럼 보이지만, 그중 셋은 다른 지표가 막고 있습니다.

채점

3·5단계는 채점기가 여러분의 after.json 으로 직접 계산합니다. 숫자만 적어 내면 통과하지 못하고, 줄이면 안 되는 것을 줄여도 걸립니다.

만들 것

01-baseline.txt  지금 얼마이고 어디에 몰려 있나
02-signals.md    줄일 수 있는 것과 못 줄이는 것, 그리고 그 근거 지표
after.json       실제로 고친 구성 (3단계와 5단계가 함께 쓴다)
04-blocked.md    무엇이 막고 있고, 무엇을 재면 풀리나
06-commit.txt    정리된 기준선 위에서의 약정 금액
07-order.txt     정리 전에 샀다면 얼마를 더 내나
08-keep.md       줄인 것을 유지하는 절차

지금 얼마인가

plan.py 를 돌려 지금 합계와 가장 큰 항목 세 개를 비중과 함께 01-baseline.txt 에 적으세요.

python3 plan.py 가 항목별로 계산해 비중까지 함께 냅니다.

금액만 적으면 안 됩니다. 비중이 있어야 어디부터 손댈지 정할 수 있습니다. 전체의 1% 짜리를 반으로 줄여 봐야 0.5% 입니다.

무엇이 크기를 막고 있나

다섯 대의 compute 를 줄일 수 있는 것과 못 줄이는 것으로 가르고, 각각의 근거 지표를 02-signals.md 에 적으세요.

fleet.jsonCPU최대_14일, 메모리최대_14일, 버스트크레딧최소_14일 을 함께 봅니다.

CPU 가 낮다는 것만으로는 근거가 못 됩니다. 메모리가 꽉 차 있으면 vCPU 를 줄일 때 메모리도 함께 줄어들어 담기지 않습니다. 버스트형은 평균 CPU 가 낮아도 크레딧이 바닥이면 이미 성능 제한이 걸린 상태입니다.

한 단계씩만 줄인다

fleet.jsonafter.json 으로 복사한 뒤, 지표가 허락하는 것만 한 단계씩 줄이세요. 막혀 있는 것은 건드리지 않습니다.

크기 사다리는 fleet.json크기_사다리 에 있습니다 — s → m → l → xl.

두 단계를 한 번에 줄이면 안 됩니다. 문제가 생겼을 때 어느 단계가 원인이었는지 판단할 근거가 없어집니다. 한 단계 줄이고 관찰한 뒤 다시 정합니다.

채점기가 after.json 을 직접 읽어 어느 것을 얼마나 줄였는지 봅니다.

막힌 것을 그냥 두지 않는다

못 줄인 셋 각각에 대해 무엇이 막고 있고, 무엇을 재거나 바꾸면 풀리는지04-blocked.md 에 적으세요. 지표 수치를 함께 적습니다.

"메모리가 높아서 못 줄인다" 로 끝내면 다음 분기에도 똑같은 자리에 있습니다.

각각에 대해 물으세요. 이 값이 왜 이렇게 높은가, 그것을 낮추려면 코드나 구조에서 무엇을 바꿔야 하는가, 그리고 무엇을 측정하면 판단할 수 있는가.

버스트형은 줄이는 것이 아니라 고정 성능 계열로 옮길지를 재는 것이 답일 수 있습니다.

안 쓰는 것부터 지운다

14일간 아무도 쓰지 않은 자원을 찾아 after.json 에서 지우세요. 쓰고 있는 것은 남깁니다.

compute 말고 나머지 항목의 지표를 보세요 — 대상수, 요청수_14일, 연결됨, 연결수_14일.

읽기의 순서에서 1번이 이것입니다. 위험 0, 효과 즉시. 크기 조정보다 먼저 해야 하는 이유는 되돌리기 쉽고 측정이 필요 없기 때문입니다.

다 지운 뒤 python3 plan.py after.json 의 합계가 $3,153.60 이 됩니다.

정리된 기준선 위에서 약정을 계산한다

정리가 끝난 compute 금액에 약정 할인을 적용해 월 금액과 3년 총액06-commit.txt 에 적으세요. 어떤 기준선 위에서 계산했는지도 적습니다.

약정 조건은 fleet.json약정 에 있습니다 — 할인율 40%, 36개월.

약정은 약정한 시간당 금액만큼을 3년 내내 내는 것입니다. 실제로 덜 써도 환불되지 않습니다. 그래서 무엇을 기준선으로 잡는가가 곧 3년치 지출입니다.

정리 전에 샀다면

정리하기 의 compute 금액으로 같은 약정을 샀다면 3년에 얼마인지, 그리고 정리 후와의 차액을 07-order.txt 에 적으세요. 그 돈이 왜 그냥 사라지는지도 적습니다.

정리 전 compute 는 $4,204.80 이었습니다. 같은 할인율과 기간으로 계산해 6단계의 결과와 빼 보세요.

이 차액이 이 실습의 답입니다. 읽기가 "약정은 마지막" 이라고 말한 이유가 숫자로 나옵니다. 약정을 먼저 사면 나중에 자원을 지워도 그 금액은 계속 나갑니다.

반년 뒤에도 그대로이려면

08-keep.md 에 손대는 순서와, 줄인 것을 유지하는 절차를 적으세요. 누가 비용을 볼 수 있어야 하는지도 담습니다.

한 번 줄여도 6개월이면 원래대로 돌아옵니다. 일회성 작업과 절차의 차이가 그것입니다.

읽기가 넷을 듭니다 — 예산과 알림, 태그 강제, 정기 리뷰, 가시성. 그중 가시성이 핵심입니다. 만든 사람이 자기 비용을 볼 수 없으면 아무도 줄이지 않습니다.

다음 분기에 다른 사람이 이 문서만 보고 그대로 돌릴 수 있게 쓰세요.