가끔씩 무언가를 만들 때면 대체 용량(problem size, latency, throughput) 을 어디까지 처리하도록 하는 것이 좋을까, 내가 처한 상황에서 적절한 것인가 고민스러울 때가 많습니다.
그 부분에 대해서 Jeff Dean이나 Louis Von Ahn 이 말하는 것을 들어본 적이 있는데 대충 기억나는 대로 적어보면, Louis Von Ahn은 한 인터뷰에서 https://www.youtube.com/watch?v=vafLtAoIYoE "학부때 석사과정에서 한 교수님이 사이즈가 커지면 원래 생각하던 거랑 전혀 다른 구조가 필요해. 그리고 그것을 먼저 상상하기는 힘들어. 게다가 사이즈가 작을 때 필요한 구조랑 클 때 필요한 구조랑 전혀 달라. 라는 이야기를 들었을 때 그래도 나는 미리 예상해서 잘 만들 수 있을거야 라고 생각했는데, 몇 년 지나고 나서 보니 그 이야기가 참 맞는 것 같다"고 한 적이 있습니다.
Jeff Dean은 2010년도에 학부생을 상대로 한 강연에서 1998년도부터 2010년까지의 경험을 시간순대로 설명하고 거기서 얻은 정리된 교훈을 알려주는데 여기서도 "디자인을 할 때 ~5x ~50x 에 대해서 고려하는 것은 적절하지만 ~100x 에 대해서는 전혀 다른 구조가 필요하니 그러지 마셈"이라고 이야기 했던 적이 있습니다.
Building Software Systems At Google and Lessons Learned https://www.youtube.com/watch?v=modXC5IWTJI
아마 Jeff Dean이 말하는 ~5x ~50x와 ~100x는 1000만건의 문서를 검색하는 문제를 해결할 때와 10억건의 문서를 처리할 때 아주 다른 아키텍쳐가 필요하다는 말일 겁니다. 그래도 비디오에 여러가지 도움이 되는 말들이 많았습니다. 강추합니다.