당신은 구글이 아닙니다 (You Are Not Google)
(blog.bradfieldcs.com)많은 소프트웨어 엔지니어들은 기술 선택에 있어 이성적이지 못하다. 새로운 기술을 선택할 때 실질적인 필요나 문제 정의 없이, 단순히 구글이나 아마존 등 빅테크 기업들이 사용하는 기술이라는 이유로 따라가는 경우가 많다. 예를 들어, MapReduce나 Hadoop은 대규모 데이터 처리를 위해 탄생했지만, 실제로 그만한 데이터 규모가 없는 기업들이 이를 도입하면서 오히려 불필요한 I/O 비용과 기능 손실을 겪는다. 이는 단순한 "기술 숭배(cargo cult)" 현상이다.
글은 이런 무비판적인 모방을 피하기 위해 UNPHAT이라는 체크리스트를 제시한다:
Understand – 문제를 충분히 이해하라.
eNumerate – 다양한 후보를 나열하라.
Paper – 기술이 근거한 논문이나 백서를 읽어보라.
Historical context – 개발된 역사적 맥락을 살펴라.
Advantages – 장단점을 균형 있게 비교하라.
Think – 이 기술이 정말 문제에 적합한지 스스로 생각하라.
글에서는 Cassandra, Kafka, SOA(Service-Oriented Architecture) 같은 기술들이 실제 사용 사례와 맞지 않는 상황에서 무비판적으로 도입된 예시들을 제시한다. 가령 Kafka는 초당 수백만 메시지를 처리하는 링크드인을 위해 만들어졌지만, 하루 수십 건의 트랜잭션밖에 없는 작은 기업에서 사용되는 경우가 있다.
저자는 또한, 구글조차도 MapReduce가 더 이상 적합하지 않다고 판단했을 때 사용을 중단했음을 강조한다. 결국 중요한 건, 기술 자체가 아니라 당신이 풀고자 하는 문제가 무엇인지 정확히 이해하고, 그에 맞는 기술을 선택하는 것이다.
마지막으로 저자는 Pólya, Hamming, Rich Hickey 등도 같은 메시지를 반복해왔음을 언급하며, 핵심은 단순하다:
“생각하라. 그리고 진짜 문제를 이해하라.”
할일이 별로 없으면 쓸데없는 짓들을 하게 되어있죠 ㅎㅎ
쉬운문제도 어렵게 풀어야 뭔가 했다고 생색낼수도 있고. 쉽게하면 쉬운줄아는 사람들도 많고.. ㅎㅎㅎㅎ
결국 기술들이 풀려고 하는 문제와, 그 기술이 나오게 된 맥락을 이해해야 합니다. 글에 나온 예시로는 다음과 같은 것들이 있죠.
- Cassandra -> Facebook 서비스의 Database scale 이슈를 해결하기 위한 솔루션
- Kafka -> Linkedin에서 데이터 처리의 scale 이슈를 해결하기 위한 솔루션
그것들이 풀려는 문제와 내가 풀려고 하는 문제가 align되냐? 를 잘 살펴봐야 한다고 생각합니다.
구글 추천에 우연히 떠서 들어왔는데, 이 기사는 너무 Geek 의 관점으로 쓰여진 기사입니다. 사업적 관점에서는 전혀 맞는 이야기가 아닙니다. 왜 그럴까요?
-
빅테크가 쓰는 큰 툴은 전문가를 구하기 쉽습니다.
빅테크에 입사하기 위해서 배우는 분들도 많고, 빅테크가 선택했다고 공부하시는 분이 많습니다. 당연히 이거에 대해 아는 사람을 구하기도 쉽고, 경력자나 전문가를 구하기도 수월합니다. 그러나, 처음 보는 툴이라면 어떨까요? 이걸 집중적으로 판 분이 없는 건 아니겠지만, 이런 사람을 구하기는 빅테크의 툴의 전문가보다 휠씬 어려울 것입니다. -
빅테크가 사용하는 큰 툴은, 레퍼런스나 자료들이 풍부하다
많은 사람이 사용하는 큰 툴은, 문재 해결을 위한 자료, 구글 검색 결과가 풍부합니다. 대부분의 문제는 다른 사람도 격었던 일일 경우가 대부분이며, 간단한 검색으로 쉽게 문제를 파악할 수 있습니다. 그러나 처음 보는 툴의 문제는 레퍼런스를 찾기가 어렵고, 문제가 발생한다면 원인 파악에 상당한 시간이 소모될 가능성이 높습니다. 이거 다 돈인데 말이죠. 이 문제가 새로 도입한 작은 툴의 문제일까요? 아니면 다른 쪽의 문제를 오해하고 있는 걸까요?
오히려 빅테크들이 이런 걸 전환하기 쉽습니다. 어마어마한 데이타 처리 규모로 인해, 약간의 I/O 이득이 큰 이득이 될 수도 있는 기업이니까요. 그리고 빅테크들이 채택했다는 이유만으로 공부하려고 하는 분도 많고요. 그러나 중소규모 기업에서는, 상대적으로 작은 데이타 규모로 인해서 약간의 I/O 이득은 그렇게까지 큰 이득이 아닌데, 위의 문제는 매우 심각합니다. 중소규모 기업이 채택한 솔류션을 배우겟다는 사람도 적고요. 그래서 중소규모 기업가라면 Geek처럼 이런 걸 따지는 것보다, 빅테크들의 툴을 따라하는게 오히려 경제적이라는 결론이 나올 경우가 많습니다.
저는 위의 내용에 많이 동의합니다!
다만 규모가 작은기업에서 오버엔지니어링을 하게되는 경우가 대기업을 목표로 하는 사람들이 작은 기업에서 그런 툴들의 경험을 쌓기 위해서 라고도 봅니다
물론 대표님은 별로 안좋아하시겠지만요 ㅎㅎ
대기업의 니즈에 맞춰진 툴을 소규모 기업에서도 그대로 쓰게 되는 이유의 8할은 이게 아닐까요. 그걸 제어해야 하는 게 CTO일 텐데, CTO부터가 대기업으로의 이직을 생각하고 있는 경우가 있으니.
기술은 도구이지 목표가 아님을 가끔 보면 까먹는 사람들이 참 많아 보입니다.
빅테크에서 검증되었으니, 요즘 많이 사용하니....이런 것들이 기술 선택에 주요 조건이 되는 순간 불필요한 비용 증가가 자연스럽게 따라오더군요.