English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

게스트
1 / ?
수업 목록으로

올스포의 책이 해결하는 것

부족해지지 않을 훈련

존 올스포는 Flickr에서 급격한 성장 기간을 거치면서 운영을 관리한 후 'The Art of Capacity Planning'(O'Reilly, 2008; 2판 2017)을 저술했다. 그의 주장은 이것이다: 용량 계획은 일회성 스프레드시트 연습이 아니다. 이는 측정, 예측, & 공학적 판단을 결합하는 지속적인 훈련이다. 이 셋 중 하나라도 무시하면 프로덕션에서 용량이 부족하거나 유휴 상태의 하드웨어에 돈을 낭비하게 된다.

용량 계획은 두 가지 장애 모드 사이에 위치한다:

- 과소 프로비저닝: 서비스가 과부하로 실행되고, 지연 시간이 급증하며, 오류율이 상승하고, 고객들이 떠난다. 성장 단계에서 사용자를 잃는 가장 빠른 방법이다.

- 과다 프로비저닝: 하드웨어가 10% 사용률로 유휴 상태이고, 재정 담당자는 수익이 따라가지 못하는데 예산이 계속 증가하는 이유를 묻는다. 예산 검토에서 인원을 잃는 가장 빠른 방법이다.

예술은 그 두 절벽 사이의 회랑을 찾아 작업 부하가 변함에 따라 그 안에 머물러 있는 것이다.

세 가지 핵심 질문이 모든 용량 연습을 주도한다:

- 우리가 무엇을 가지고 있는가? 구체적인 단위의 현재 용량: 초당 요청 수, 초당 쿼리 수, 스토리지 기가바이트, 동시 연결.

- 우리는 무엇이 필요한가? 명시적 불확실성 경계를 가진 미래 날짜의 예측 수요.

- 우리는 언제 행동해야 하는가? 구매, 프로비저닝, 또는 확장에 대한 리드 타임. 클라우드는 이를 몇 분으로 줄인다; 온프레미스는 몇 개월을 의미할 수 있다.

용량 계획 회랑: 부족, 최적, 과다

스프레드시트만으로는 불충분한 이유

전자상거래 회사는 지난 12개월 트래픽을 선형으로 외삽하여 연 1회, 11월에 용량을 계획한다. 이들은 6주 조달 리드 타임이 있는 전용 서버에서 실행된다. 이들의 트래픽은 강한 주간 계절성(주말 피크 3배), 강한 연간 계절성(블랙프라이데이 5배), & 3년 동안 40% 연간 증가율을 보인다.

이 연 1회 선형 외삽 방식이 가능성 높게 생산할 수 있는 최소 3가지의 구체적인 장애 모드를 나열하시오. 각 장애에 대해 스프레드시트가 무시하는 회사 현실의 구체적인 부분을 명시하고, 이를 다루는 더 빈번한 측정 또는 계획 주기를 제안하시오.

작업 부하 대 사용률

두 가지 다른 수치, 모두 필요

용량 계획은 두 가지 필수 차원 중 하나만 측정할 때 실패한다.


작업 부하: 시스템에 대한 외부의 수요. 초당 요청, 분당 트랜잭션, 초당 메가바이트, 동시 사용자. 작업 부하는 세상이 당신에게 요청하는 것을 설명한다.


사용률: 해당 수요를 충족하는 동안 시스템이 얼마나 가득 실행되는가. CPU 백분율, 사용된 메모리, 큐 깊이, 네트워크 대역폭, 디스크 IOPS. 사용률은 해당 수요 하에서 시스템이 어떻게 느껴지는가를 설명한다.


작업 부하만으로는 무엇이 오는가를 알려주지만 이를 제공할 수 있는지 여부는 알려주지 않는다. 사용률만으로는 얼마나 가득 찼는가를 알려주지만 내일 무엇을 예상할 수 있는지는 알려주지 않는다. 용량 결정을 내리려면 둘 다 필요하고, 나란히 표시해야 한다.


용량 비율 = 작업 부하 / 사용률. 초당 1,000개 요청을 50% CPU에서 처리하면 용량 비율은 서버당 100% CPU당 2,000 RPS이다. 이 변환 계수는 예측된 작업 부하를 필요한 서버 수로 변환할 수 있게 한다.


올스포는 올바른 세분성에서의 측정을 강조한다. 분당 1개 샘플은 30초 피크를 숨긴다. 시간당 1개 샘플은 모든 것을 숨긴다. 실제 용량 작업은 피크 이벤트에 대해 분 이하 해상도가 필요하고 추세에 대해 분 해상도가 필요하다. 더 거친 것은 위험한 거짓 확신을 생산한다.

작업 부하 + 사용률이 함께 시간에 따라 표시됨

계측할 것

당신의 팀은 새로운 제품 출시(비디오 트랜스코딩 서비스)에 대한 용량 계측을 출시하고 있다. 분 이하 해상도로 최대 8개의 메트릭을 추적할 수 있다. 서비스는 비디오 업로드를 수집하고, 이를 큐에 넣고, 여러 형식으로 트랜스코딩하고, & 출력을 객체 스토리지에 쓴다.

정확히 8개의 메트릭을 선택하시오. 각각에 대해 작업 부하 또는 사용률을 캡처하는지 표시하고, 남긴 메트릭 대신 각 메트릭이 포함될 이유를 정당화하시오. 메트릭이 하나만 있다면 용량 고갈을 가장 예측할 가능성이 높은 메트릭 하나를 확인하시오.

추세, 계절성, 불확실성

모든 예측의 3가지 계층

올스포와 Google SRE 책은 유용한 예측의 구조에 동의한다: 추세, 계절성, & 불확실성 경계. 하나라도 무시하면 예측이 오도적이 된다.


추세: 수개월 또는 수년에 걸친 수요의 기울기. 종종 단기 기간에는 선형 회귀로, 복합 성장에는 지수 또는 구간별 선형으로 모델링된다. 추세선은 '수요가 일반적으로 어디로 향하고 있는가?'에 답변한다.


계절성: 여러 시간 척도의 순환 패턴. 일일(오후 피크 트래픽), 주간(주말 스파이크), 연간(블랙프라이데이, 세금 시즌, 학년도). 곱셈 계절성은 추세로 확장되고; 가법 계절성은 상수 오프셋을 더한다.


불확실성 경계: 예측 원뿔이다. 경계 없는 예측은 추측이다. 실제 예측은 중앙 추정값과 함께 명시적 상한 및 하한을 발행하고, 보통 90% 또는 95% 신뢰도로. 원뿔은 미래로 더 멀리 투영할수록 넓어진다. 4주 예측은 ±10% 경계를 가질 수 있지만; 12개월 예측은 종종 ±50%를 가진다.


사업 성장을 기술 수요로부터 분리: 용량 계획은 기술 작업 부하를 예측하지만, 사업 팀은 수익, 가입, 또는 캠페인을 예측한다. 용량 계획자의 일은 사업 예측을 기술 수요로 변환하는 것이다: 30% 가입 성장은 30% 더 많은 API 호출을 의미할 수 있지만, 신규 사용자가 시스템을 더 많이 사용하면 80% 또는 더 낮은 전환율이면 15%일 수 있다. 변환 비율은 기본 사업 예측만큼 중요하다.

예측: 추세선, 계절 잔물결, 넓어지는 원뿔

휴일 트래픽 예측

당신의 서비스는 전자상거래 사이트를 제공한다. 작년 블랙프라이데이 트래픽은 11월 평균의 5배였고, 12시간 동안 지속되었다. 사업은 연간 40% 증가했다. 마케팅은 이 해 블랙프라이데이 트래픽에 추가로 20%를 추가할 것으로 예상되는 유료 프로모션을 출시하고 있다.

올해의 블랙프라이데이 피크를 현재 월간 평균의 배수로 추정하시오. 당신의 작업을 표시하시오. 그 후 예측에 대한 구체적인 상한 및 하한을 제안하고 실제 수요를 그 한계 외로 밀어낼 수 있는 실제 사건을 설명하시오.

당신의 상한 알기

프로덕션이 상한을 찾기 전에 찾자

예측은 무엇이 오는가를 알려준다. 상한 테스트는 시스템이 이를 제공할 수 있는지 여부를 알려준다. 올스포는 상한 테스트를 용량 계획에 대한 비협상 입력으로 취급한다: 제어된 부하 하에서 이를 테스트하기 전까지는 실제 용량을 알 수 없다.

세 가지 유형의 상한 테스트:

- 합성 부하 테스트: 로드 생성기(k6, Locust, JMeter, vegeta)가 스테이징에서 목표 서비스에 트래픽을 구동한다. 무언가가 깨질 때까지 부하를 증가시킨다. 깨지는 지점이 상한이다. 격리된 서비스 테스트에 최적이다.

- 프로덕션 소방 훈련: 의도적으로 프로덕션에서 용량을 줄이고(서버 백분율을 드레인하거나, 지역을 종료) 나머지 용량이 실제 트래픽을 어떻게 처리하는가를 관찰한다. 예상치 못한 상호작용을 포함하여 진정한 프로덕션 동작을 테스트한다. 최고의 신뢰도이지만 최고의 위험도이다.

- 섀도우 부하: 실제 프로덕션 트래픽을 프로덕션 병렬로 실행하는 목표 서비스에서 재생한다. 사용자에게 영향을 주지 않으면서 실제 작업 부하 패턴(드문 쿼리 혼합, 이상한 사용자 에이전트)을 캡처한다. 강한 중간 지대이다.


헤드룸은 현재 부하와 상한 사이의 완충 공간이다. SRE 경험 규칙:

- 단일 지역 서비스에 대해 정상 상태에서 50% 헤드룸(지역 장애가 생존 지역을 소진하지 않도록)

- N+2 중복성이 있는 다중 지역 서비스에 대해 30% 헤드룸

- 알려진 피크 이벤트 접근(블랙프라이데이, 스포츠 결승)에 대해 100%+ 헤드룸


헤드룸은 낭비가 아니다. 이는 오전 3시에 엔지니어들에게 전화하지 않고, 스파이크 중에 고객을 잃지 않으며, & 한 지역이 실패할 때 캐스케이드 장애를 겪지 않을 비용이다. 금융 팀은 때때로 헤드룸을 줄이도록 밀어붙인다; 용량 엔지니어는 그 대화를 감정적이 아닌 사실적으로 만들기 위해 타이트하게 실행하는 비용을 표현해야 한다.

헤드룸 버퍼: 현재 부하, 상한, 그리고 그 사이의 간격

상한 테스트 설계

당신은 문서화된 용량 상한이 없는 서비스를 상속한다. 현재 프로덕션 부하는 12개 서버 전체 초당 800개 요청이고, 평균 CPU 35%이다. 마케팅은 6주 내에 피크에서 3,000 RPS로 트래픽을 운전할 것으로 예상되는 캠페인을 발표하고 있다.

향후 4주 내에 상한 테스트 프로그램을 설계하시오. 테스트 유형, '깨짐'을 정의하는 메트릭, 설정할 헤드룸 목표, & 테스트가 충분한 용량을 드러낼지 여부에 따라 당신이 취하는 조치를 지정하시오. 상한 테스트가 현재 12개 서버가 3,000 RPS를 처리할 수 없음을 보이면 당신이 무엇을 할 것인가에 대해 구체적으로 설명하시오.

위로, 밖으로, 또는 대각선으로

전력을 추가할 시, 박스를 추가할 시, 또는 둘 다

세 가지 핵심 확장 전략, 각각 뚜렷한 비용 및 신뢰도 프로필을 가지고 있다:


수직 확장(위로 확장): 더 큰 기계. 8코어 서버를 32코어 서버로 교체하자. 가장 간단한 경로; 단일 기계 한계에 도달할 때까지 작동한다. 단일 장애점이 남는다. 비용은 비선형으로 증가한다: 32코어 기계는 종종 8코어보다 4배 이상 비용이 든다.


수평 확장(밖으로 확장): 더 많은 기계. 로드 밸런서 뒤에 서버를 추가하자. 용량이 서버 수에 선형으로 확장된다. 장애 모드가 변한다: 분산 조정을 처리해야 하지만, 단일 서버 장애가 더 이상 서비스를 파괴하지 않는다. 운영 복잡성이 증가한다.


대각선 확장(올스포의 용어): 먼저 위로 확장하여 편안한 서버당 크기를 확보한 다음, 거기서 밖으로 확장하자. 큰 서버의 더 간단한 운영을 여러 서버의 중복과 결합한다. 대부분의 프로덕션 서비스는 대각선 확장 영역에 위치한다.


예약과 온디맨드 가격 책정: 클라우드 제공자는 예측 가능성에 보상한다. 예약 용량은 온디맨드보다 30-60% 저렴하지만 1-3년 약정이 필요하다. 용량 계획자는 일반적으로 정상 상태 수요를 예약 용량으로 잠금하고 온디맨드로 피크에 버스트한다. 이 분할을 잘못 판단하면 낭비(과도 예약) 또는 놀람에 노출될 수 있다(피크 중 예약 부족).


Spot 인스턴스 및 선점 가능 작업 부하: 온디맨드보다 60-90% 저렴하지만 분 내에 회수할 수 있다. 배치 작업, 분석, 훈련 작업 부하, 또는 우아한 중단을 위해 설계된 모든 서비스에 적합하다. 프로덕션 사용자 대면 트래픽은 일반적으로 spot을 피한다.

대각선 확장 경로: 작은 중간 크기 박스 그후 수평 확장

확장 경로 선택

당신의 비디오 트랜스코딩 서비스는 8개의 중간 크기 클라우드 인스턴스(각각 8코어)에서 실행된다. 향후 6개월 동안 3배 성장을 예상한다. 작업 부하는 CPU 바운드이고, 비디오당 병렬화 가능하며, & 각 비디오 트랜스코드는 종료부터 끝까지 90초가 걸린다. 예약 인스턴스는 온디맨드 비용의 50%이다. Spot 인스턴스는 온디맨드의 30%이지만 2분 통지로 종료될 수 있다.

향후 6개월간 확장 전략을 권장하시오. 선택하는 인스턴스 크기, 예약/온디맨드/spot의 혼합, & 작업 부하 특성에 대한 각 부분의 정당성을 지정하시오. 당신의 계획에서 가장 큰 단일 위험을 식별하고 하나의 완화를 제안하시오.

용량 계획 경력

용량 계획 기술이 보상하는 곳

용량 계획은 그 자체로는 드물게 일자리 제목이다. 기술은 여러 역할 하에 나타난다:


사이트 신뢰도 엔지니어: 용량 계획은 핵심 SRE 책임이다. 대부분의 SRE 팀은 용량을 전문으로 하는 1~2명의 엔지니어를 가지고 있으며, 예측 모델, 상한 테스트, & 프로비저닝 자동화를 소유한다.


클라우드 비용 / FinOps 엔지니어: 클라우드 지출 최적화에 중점을 둔 더 새로운 역할. 용량 계획을 금융 모델링, 계약 협상, & 예약 인스턴스 포트폴리오 관리와 결합한다. 클라우드 비용이 급여 다음의 두 번째로 큰 비용인 대형 클라우드 네이티브 회사에서 매우 높은 보수를 받는다.


성능 엔지니어: 노드당 효율성 및 상한 테스트에 중점을 둔다. 일은: 프로파일링, 최적화, & 아키텍처 변경을 통해 같은 하드웨어에서 더 많은 용량을 추출하자. 무거운 시스템 및 언어 런타임 지식.


용량 계획 전문가: 매우 큰 회사(Google, Meta, Amazon, Netflix)에서 전용 용량 계획 팀이 존재한다. 이들은 전체 플릿에 걸쳐 예측 모델을 소유하고, 규모로 조달을 협상하며, & 금융 부서와 다중 연도 하드웨어 로드맵을 조정한다.


복합되는 기술: 시계열 분석(R, Python statsmodels, Prophet), 큐잉 이론(M/M/1, M/M/c, Little의 법칙), 최소 하나의 구성 관리 도구, 최소 하나의 클라우드 비용 대시보드, & CFO가 이해하고 행동할 수 있는 예측 보고서를 작성하는 능력. 기술적 기술은 당신을 인터뷰로 얻지만; 소통 기술은 당신을 예산으로 얻는다.

용량 경력: SRE, FinOps, 성능, 전문가

마무리

당신이 이제 아는 것

용량 계획은 연 1회 연습이 아닌 지속적인 훈련이다. 당신은 다음을 다루었다:

- 과소 프로비저닝과 과다 프로비저닝 사이의 회랑

- 측정의 두 차원으로서의 작업 부하 대 사용률

- 모든 예측의 세 계층으로서의 추세, 계절성, & 불확실성 경계

- 상한 테스트(합성, 섀도우, 소방 훈련)는 실제 용량을 아는 유일한 방법

- 헤드룸 완충 및 그들이 낭비가 아닌 이유

- 대각선 확장 및 예약/온디맨드/spot 가격 책정 결정

- 이 기술이 예산 권한을 버는 경력 경로


가장 중요한 두 가지 아이디어. 단일 점으로 절대 아니라 경계를 가진 예측을 하자. & 프로덕션이 하기 전에 당신의 상한을 측정하자. 이 두 가지를 앞으로 가지고 가자면 나머지는 따른다.


권장 읽기: 올스포의 'The Art of Capacity Planning'(O'Reilly, 2017 2판), Google의 SRE 책의 관련 장(sre.google/books/에서 무료), & 기본 시스템 작업을 위한 Brendan Gregg의 'Systems Performance'. 기하학-의 동반 수업은 더 깊이 들어간다: Little의 법칙 영역으로서, 큐잉 곡선, 추세 기울기, & 헤드룸 봉투.