거북이의 쉼터

#7 Availability & Reliability 본문

코딩 삽질/데이터센터 필기

#7 Availability & Reliability

onlim 2023. 5. 2. 12:58

MTTR (Mean time to recover)

사고 발생 후 얼마나 빨리 복구할 수 있는가

 

1년 동안 얼마나 많은 비중동안 장애가 나지 않는가?

9가 많을 수록 장애 시간이 짧다.

서버 숫자가 많아지면 9가 아무리 많아도 장애가 1년에 1번은 나는 셈이다.

 

왜 중요한가? 돈과 관련이 되니까

주식 같은 경우에는 몇 초만 멈춰도 치명적이다.

 

fault의 종류

HW - 진동, 열

SW - OS 문제, 버그 등, 보안 공격

Operator error - 사람이 해야 할 것을 실수로 안해서 생기는 문제

Environmental factor - 잘 없지만 전력이 끊기는 등의 자연 재해 issue, 공사하다가 전선이 끊기는 경우

Security Breach - 침입이 일어나는 경우, 랜섬웨어

직접적인 대상이 아니더라도 collocation으로 같은 데이터센터에 위치한다면 영향을 받을 수 있다.

Planned service events - 메모리 추가나 SW 패치 등으로 인한 일시중단

 

 

permanent - 영구적 손실

transient

intermittent - 깜빡깜빡하는 상태

 

permanent faults: they persist indefinitely (or at least until repair) after their occurrence (short circuit, default software, etc.);

intermittent faults: they occur sporadically. This is a temporary situation that occurs sporadically such as loss of a relay contact;

transient faults: they occur in isolation such as electromagnetic interference.

 

fault가 failure는 아니다.

fault가 생기더라도 이중화 등으로 서비스가 계속 돌아가게는 할 수 있다.

fault는 필연적이므로 중요한 것은 어떻게 failure로 연결되지 않도록 만드는가

 

Pareto Distribution (8:2 rule)

죽을 놈은 빨리 죽고, 버틸 놈은 오래 버틴다.

(Infant Mortality)

일정 이상의 기간을 버틴 부품은 좀 더 오래 버틸 가능성이 있다.

failure도 마찬가지다.

 

RAID는 많이 썼다가 요즘엔 안 쓴다.

복구 속도가 연산 속도를 못 따라가기 때문

때문에 수천 단위의 하드 드라이브 failure에서나 사용하고 사소한 rack failure는 소프트웨어 단계에서 복구할 수 있도록 한다.

 

 

메모리 장애

permanent -> 1 또는 0으로 고정

transient -> alpha particle로 bit flip이 되는 경우 (데이터센터 규모에서는 충분히 발생한다)

 

때문에 데이터 센터 레벨에서는 DRAM에도 ECC가 붙는다.

8:1 비율로 복구 가능

operation read/write가 heavy해진다. 이것도 선택할 수 있을 것이다.

CPU 계열엔 다 기본으로 들어가 있고 자동으로 켜져있다.

 

 

 

Cache는 어떻게 하는가?

1. 굳이 할 필요는 없다.

2. 코어가 매우 많이 들어간 high-end 급에는 들어갈 수는 있다. read/write 할 때 발생하는 overhead가 충분히 amortized되고 크기가 정말 커서 alpha-particle 충돌 가능성이 있다면 넣는다.

 

사용처에 따라 달라진다. (10년 전까지는 안 넣었다)

 


 

Network

packet 데이터 자체의 corruption도 굉장히 많이 일어난다.

문제가 생겼는지는 CRC로 알아낼 수 있는데, (ECC랑 비슷한 원리)

문제가 생기면 복구하는 것이 아닌 retransmit을 요구한다. 굳이 고치지 않고 drop

 

logic fault(CPU)

예전엔 computation 이중화를 하기도 했는데 요즘에는 software level에서 다중화를 하는 것으로 해결한다.

홀수개의 copy를 두어 결정을 해야할 때 애매하게 걸치지 않도록 한다.

 

센터 레벨의 availability

여러 종류의 장애가 발생할 수 있고, HW base로 해결하려면 너무 비용이 많이 들고 복잡한 사례들을 다 cover할 수 없기에 SW base technique이 들어간다.

 

GFS / HDFS -> 여러개의 copy를 둔다.

 

modulatiry,

fail-fast, -> 죽으려면 빨리 죽어야 대응이 쉽다.

redundancy and repair,

single-point of failure -> 한 순간에 하나의 장애를 가정하고 커버

 

fault is not to remove, but to dealt with.

장애는 무조건 발생하기 때문에 대응이 중요한 것이다.

해결할 수 있는 방안을 미리 마련해라.

'코딩 삽질 > 데이터센터 필기' 카테고리의 다른 글

#10 Virtualization  (0) 2023.06.04
#8 Datacenter Management  (0) 2023.05.02
#6 Power Management & Cooling  (0) 2023.05.02
#5 Datacenter Networking  (0) 2023.05.02
#4 Large Scale Storage  (0) 2023.05.02
Comments