TL; DR : 중복, 모듈 식 구축; 가용성 테스트; 면밀히 모니터링하십시오.
어떤 설명 으로든 짜내려고 시도하는 것은 매우 오래 걸릴 수 있다는 것을 깨닫고 나서 내가 한 모든 관찰 내용을 기록 할 것입니다.
전제 질문
클라우드 시스템은 만병 통치약입니다
최고의 클라우드 제공 업체와 함께 클라우드를 완전히 사용하더라도 탄력성을 위해 애플리케이션을 설계해야합니다. AWS가 VM을 대체 할 수 있지만 계산 중에 남아 있으면 애플리케이션을 다시 시작할 수 있어야합니다.
x / y / z로 인해 클라우드 시스템을 사용하고 싶지 않습니다.
초대형 조직이 아니라면 클라우드 시스템을 사용하는 것이 좋습니다. 3 대 클라우드 시스템 (AWS, MSFT, Google)은 수천 명의 엔지니어를 고용하여 약속 된 SLA와 관리하기 쉬운 대시 보드를 제공합니다. 실제로이 사내에서 한푼도 소비하는 대신에 사용하는 것이 좋습니다.
범위 지정 및 디자인 문제
서비스 가용성을 정의, 수량화 및 지속적으로 측정하는 것은 가용성 문제에 대한 솔루션을 작성하는 것보다 더 큰 과제입니다.
'가용성'정의 및 측정이 예상보다 어렵다
다수의 이해 관계자는 가용성에 대한 관점이 다르며, 급여가 가장 높은 사람이 선호하는 정의가 다른 정의보다 우선합니다. 이것은 때때로 정확한 정의이지만, 이상적인 정의는 실시간으로 모니터링 할뿐만 아니라 측정하기가 까다로워서 동일한 시스템을 측정하기 위해 종종 생태계가 구축되지 않습니다. 실시간으로 모니터링 할 수없는 가용성에 대한 정의가있는 경우 자체 유사 유사한 프로젝트를 여러 번 반복해서 발견 할 수 있습니다. 이해하기 쉬운 것과 쉽게 모니터링 할 수있는 것을 고수하십시오.
사람들은 항상 사용 가능한 시스템의 복잡성을 과소 평가합니다.
방 안에있는 코끼리를 해결하기 위해 다음과 같이 말하겠습니다. "다중 컴퓨터 시스템을 100 % 사용할 수는 없습니다. 미래에는 있지만 현재 기술로는 사용할 수 없습니다." 현재의 기술에 따르면, 나는 빛의 속도와 같은 것들보다 신호를 더 빨리 보낼 수 없다는 것을 언급하고 있습니다. 솔트 가치가있는 모든 comp-sci 엔지니어들은 분산 컴퓨팅의 한계를 알고 있으며 대부분은 회의에서 언급하지 않고 멍청한 것처럼 보일 것입니다. 분산 컴퓨팅 제한 사항을 언급하지 않는 모든 사람들을 보완하기 위해 복잡하지만 항상 컴퓨터를 신뢰하는 것은 아닙니다 .
사람들은 엔지니어의 능력을 과대 평가합니다
불행히도, 가용성은 원하는 것을 모르지만 원하지 않는 것을 아는 범주에 속합니다. UI와 같은 '원하는 것'범주를 이해하는 것은 조금 까다 롭습니다. 다른 사람의 경험과 더 많은 것을 배우려면 약간의 경험과 많은 독서가 필요합니다.
처음부터 사용 가능한 시스템 구축
시스템 요구 사항으로서 가용성의 올바른 우선 순위에 대해 모든 아키텍처 및 디자인 팀에 전파해야합니다.
가용성을 돕는 시스템 속성
다음 시스템 특성은 시스템 가용성에 기여한 것으로 나타났습니다.
여분
이에 대한 몇 가지 예는 VIP 뒤에는 단일 VM 만 있거나 데이터의 단일 복사본 만 저장하지 않아야합니다. 좋은 IAAS를 사용하면보다 쉽게 해결할 수 있지만 여전히 이러한 결정을 내려야합니다.
모듈성
모듈 식 REST 는 단일 SOA보다 낫습니다. 심지어 모듈 식 마이크로 서비스조차도 일반적인 HATEOS REST 보다 더 유용합니다 . 추론은 다음 섹션의 수율 관련 토론에서 찾을 수 있습니다. 배치 처리를 수행하는 경우 1,000,000 배치를 처리하는 것과 비교하여 합리적인 10 배치로 배치 처리하는 것이 좋습니다.
복원력
"I am always angry"
- Hulk
복원력있는 시스템은 항상 복구 할 준비가되었습니다. 이 복원력은 RAID 디스크에 기록한 후에 만 쓰기에 대한 ACK 승인과 두 개 이상의 데이터 센터에 대한 승인과 같은 인스턴스에 적용됩니다. 또 다른 최신 동향은 충돌이없는 데이터 구조 를 사용하는 것인데 , 여기서 데이터 구조는 서로 다른 두 가지 버전이 제공 될 때 충돌을 해결할 책임이 있습니다. 시스템은 나중에 생각할 때 복원력을 발휘할 수 없으므로 예측하고 내장해야합니다. 고장은 장기적으로 보장되므로 항상 복구 계획을 세워야합니다.
로그 트레일
이것은 기술적으로 복원력의 하위 유형이지만 모든 기능을 포착하기 때문에 매우 특별합니다. 최선의 노력에도 불구하고 사용할 수없는 패턴을 예측하지 못할 수 있습니다. 가능하면 시스템 이벤트를 재생할 수 있도록 시스템 활동의 로그 추적을 충분히 유지하십시오. 이렇게하면 수동 비용이 많이 들기 때문에 예기치 않은 상황에서 복구 할 수 있습니다.
가용성의 속성
'사용 가능 여부'의 포괄적 인 최상위 속성 목록 : 토론을 위해 사용자가 묻는 질문은 "내 장바구니에 몇 개의 품목이 있습니까?"라고 가정 해 봅시다.
단정
가장 정확한 답변 을 작성 해야 합니까? 아니면 실수를해도 괜찮습니까? 참고로 ATM에서 돈을 인출 할 때 정확하지는 않습니다. 은행에서 실수 한 것을 발견하면 거래를 취소 할 수 있습니다. 당신의 시스템이 소수를 생산한다면, 당신은 항상 정답을 원할 것입니다.
수율
이전 주제 질문에 대해 항상 올바른 대답을 한 경우이 지점을 건너 뛰십시오. 때때로 질문에 대한 대답이 정확할 필요는 없습니다. 예를 들어, 지금 Facebook에 얼마나 많은 친구가 있습니까? 그러나 대답은 항상 야구장 +/- 1에있을 것으로 예상됩니다. 예상 결과를 생성 할 때 수율은 100입니다.
일관성
당신의 대답은 한 순간에 정확할 수 있지만, 빛이 화면을 떠나 관찰자의 망막에 들어갈 때까지 상황이 바뀔 수 있습니다. 대답이 잘못 되었습니까? 아니요, 일관성이 없습니다. 대부분의 응용 프로그램은 최종적으로 일관성이 있지만 응용 프로그램에서 제공 할 일관성 모델의 종류를 정의하는 것이 요령입니다. 우연히 응용 프로그램이 단일 컴퓨터에서 실행될 수 있으므로 CAP 정리 에서이 멋진 독서를 건너 뛸 수 있습니다 .
비용
단기 효과 (수익 손실)와 장기 효과 (불평, 고객 유지율)의 총 영향에 따라 달라집니다. 고객 유형 (유료 / 무료, 반복 / 고유, 포로) 및 리소스 가용성에 따라 다른 수준의 가용성 보장이 내장되어야합니다.
기존 시스템의 가용성 향상을 향해
개별 시스템과 네트워크의 운영 관리는 매우 복잡하므로 클라우드 제공 업체에 맡기거나 이미 수행중인 작업을 알기에 충분히 전문가라고 가정합니다. 가능한 경우 다른 주제를 다룰 것입니다. 장기 전략을 위해 Define-Measure-Analyze-Control 은 하늘의 일치입니다.
- 이해 관계자에게 '가용성'을 정의하십시오.
- 정의한 것을 어떻게 측정 할 것인가
- 병목 현상을 식별하기위한 근본 원인 분석
- 개선을 위한 작업
- 시스템의 지속적인 모니터링 ( 제어 )
사용할 수없는 원인
물리적 인프라 관리를 포괄하는 운영 관리는 전문가가 수행해야한다는 데 동의 했으므로, 완전성을 위해 사용할 수없는 다른 원인을 다루겠습니다. IMO 가용성에는 예상되는 동작 부족이 포함되어야합니다. 즉, 사용자에게 예상 된 경험이 표시되지 않으면 사용할 수없는 것이 있습니다. 이러한 광범위한 정의를 염두에두고 다음과 같은 기능을 사용할 수 없게 될 수 있습니다.-코드 버그-보안 문제-성능 문제