Replication(Fault Tolerance)은 왜 중요할까?
HBase(HDFS), Cassandra, Kafka등등 많은 분산환경 시스템들은 Replication Factor를 이용해 Failure에 대비한다. 하지만 왜이렇게 분산환경들은 Failure에 병적으로 집착할까? 정말로 데이터를 잃을 만큼 중대한 Failure가 자주 일어나는 일일까?
약 10년 마다 한번씩 Fail하는 아주 아주 잘 만든 컴퓨터가 있다고 해보자. 이 컴퓨터가 혼자 돌아갈때 MTTF (Mean Time to Failure)은 무엇일까?
MTTF: 하나의 서버가 Fail할때까지 걸리는 시간의 Expectation
당연히 한대이므로 10년이다.
그렇다면 두대가 하나의 Distributed System을 이룬다면 MTTF는 얼마일까?
한대의 MTTF는 10년이므로, 1시간 안에 Fail할 확률은
1 / (10 * 365 * 24) = 1.1415 e-5
그렇다면 1시간 Fail하지 않을 확률은 0.999988이고
두대 모두 Fail하지 않을 확률은 0.999988 * 0.999988 = 0.999977
둘중 하나라도 Fail할 확률은 1–0.999977 = 2.3 e-5
결과적으로 MTTF는 1 / 2.3 e-5 = 43478 시간 = 4.96년 이라고 할 수 있겠다.
그렇다면 A라는 회사에서 120대의 서버 인스턴스를 운영하여 Distributed System을 이루고 있다면 MTTF는 얼마일까?
1시간동안 120개의 모든 서버가 Fail하지 않을 확률 = 0.999988 ^ 120 = 0.9985
1시간동안 하나의 서버라도 Fail할 확률 = 1–0.9985 = 0.0015
MTTF = 1 / 0.0015 = 666시간 = 27일 이라는 결론이 나오게 된다.
네이버 클라우드 데이터센터는 약 12만개의 서버를 수용할 수 있다고 한다
그렇다면 네이버 클라우드 데이터 센터의 MTTF는 무엇일까?
1시간동안 12만개의 모든 서버가 Fail하지 않을 확률 = 0.999988 ^ 12만 = 0.2369
1시간동안 하나의 서버라도 Fail할 확률 = 1–0.2369 = 0.7631
MTTF = 1.3시간으로 70분마다 하나씩 고장이 난다고 볼 수 있겠다.
네이버 클라우드 직원들의 건강을 위해 Fail Tolerance의 중요성을 잊지말자.
FYI: https://en.wikipedia.org/wiki/Birthday_problem 이 생각나는 주제였다.
(23명이 모이면 50%확률로 생일이 같은 사람이 있다)
Distributed System에 관해서 쓰는 글들은 많은 부분들이 University of Illinois — Urbana-Champaign의 CS425 수업에서 가져 왔으며, 2020년 가을 수업을 진행한 교수인 Indranil Gupta에게 감사를 표한다. Lecture Slide는 https://courses.engr.illinois.edu/cs425/fa2020/lectures.html에서 찾아볼 수 있다.