기술 지향적인 구글 사상과 그 아우라로 인한 엄청난 성공 때문에 많은 개발자들이 잘 알려지지 않은 구글 인프라에 대해 막연한 동경을 가지곤 한다. 하지만 상세한 정보가 없기 때문에 거대한 인프라를 어떤 생각을 가지고 만들었는지에 대해 살펴볼 기회가 거의 없었다. 구글 빅 테이블 논문 뒷편에 기재된 "교훈(Lesson)"장을 통해 구글 개발자들이 대단위 분산 시스템 개발 시에 어떤 자세로 만들었는지를 살짝 볼 수 있어 소개한다. 이 장에 의하면 성공한 구글 인프라로 알려진 빅 테이블 설계, 개발, 적용하면서 구글 개발자들은 다음과 같은 4가지 중요한 교훈을 얻었다고 한다.
1. 생각할 수 있는 모든 장애 포인트를 고려하라.
2. 쓸려고 하는 명확한 기능만 구현하라.
3. 시스템 곳곳을 모니터링 하라.
4. 구조가 단순해질 때까지 지속적으로 개선하라.
위 4가지 교훈은 언듯보면 천재들이 '교훈'이라고 말한 것 치고는 너무 단순해 보인다. 실제 빅 테이블 논문을 클릭해보라. 4번째 교훈의 '단순'이란 단어가 어울리지 않음을 쉽게 알 수 있다. 그럼 이런 구글러들의 교훈을 어떻게 해석해야 할까? 개인적으로는 복잡해질 수 있는 분산 시스템을 개발할 때에 "실용성을 염두에 두고 추적가능하고 명료하도록 지속적으로 개선하라"로 해석함이 맞을 듯 싶다.
덧 붙이자면 빅 테이블을 만든 구글러들도 빅 테이블을 "창조"한 것은 아니었다. 개인적 볼 때 구글러들은 "익히 알려진 기술들의 창조적 조합의 천재"인 것 같다. 빅 테이블에서도 마찬가지였다. 기존에 연구되던 복잡한 분산 B 트리나 광대역 분산 저장소, 그리고 컬럼 데이터베이스의 장점들 중에 빅 테이블을 사용할 구글 제품에 딱 필요한 것만을 조합해 설계, 구현한 것이 빅 테이블이기 때문이다. 여러분이 복잡한 분산 시스템을 설계하고 있고 성공한 인프라를 만들길 원한다면 위 4가지 교훈을 계속 되새겨 보라.
@webJOY



