1.6.1 마이크로서비스 아키텍처도 만병통치약은 아니다
1986년, 프레더릭 브룩스(Frederick Brooks)는 <맨먼스 미신(The Mythical Man-Month)>(케이앤피북스, 2007)에서 소프트웨어 공학에 만병통치약 따위는 없다고 잘라 말했습니다. 생산성을 갑자기 10배로 만들어 주는 기법/기술 같은 것은 없다는 말이죠. 그로부터 수십 년이 지났지만, 아직도 자신의 묘책이 정답이라고 강변하며 자신이 즐겨 쓰는 기술이 엄청난 생산성 증대로 이어질 것이란 맹목적인 확신을 부르짖는 개발자들이 있습니다.
‘엉망이다(suck)/기똥차다(rock) 이분법(dichotomy)’10을 답습하는 논쟁은 아직도 진행 중입니다. 이 말은 닐 포드(Neal Ford)가 처음 쓴 것인데, 소프트웨어 세상에서는 만사가 엉망이든 기똥차든 어느 한쪽일 뿐 그 중간은 없다는 말이죠. 대략 이런 논리입니다. “네가 X를 하면 강아지가 죽을 테니 반드시 Y로 해.” 동기 대 리액티브, 객체 지향 대 함수형, 자바 대 자바스크립트, REST 대 메시징 논쟁이 다 그런 식입니다. 하지만 현실은 그리 간단하지 않습니다. 모든 기술은 일장일단이 있기에 어떤 기술을 택하더라도 가트너 하이프 사이클(Gartner hype cycle)11의 전철을 밟게 되죠. 즉, 새로운 기술은 관심이 최고조에 이르러(기똥찬) 환멸의 구렁텅이로 미끄러지고(엉망인) 결국 생산성이 정체 상태에 빠지게 되는 5단계를 거칩니다(그제서야 그 기술의 트레이드오프가 무엇인지, 언제 사용해야 할지 이해하게 됩니다).
마이크로서비스 역시 만병통치약이 아닙니다. 이 아키텍처가 어떤 애플리케이션에 적합할지는 여러 요인에 따라 달라지므로 무턱대고 마이크로서비스 아키텍처만 쓰라는 말도, 그렇다고 마이크로서비스 아키텍처를 절대 쓰지 말라는 말도 그릇된 조언입니다. 세상만사 다 그렇듯 상황에 따라 다른 것입니다.