[번역] 프레임워크에 묶이다
프레임워크는 강력한 도구다. 프레임워크 없이는 우리는 길을 잃고 말 것이다. 하지만 프레임워크를 쓰는 데에는 대가가 따른다. Rails, Spring, JSF, Hibernate 같은 것들을 떠올려 보라. 이런 프레임워크의 도움 없이 웹 시스템을 작성한다면 어떤 모습일까? 생각만 해도 암담하다. 사소하고 귀찮은 세부사항들을 끝없이 처리해야 할 것이다. 마치 돌칼과 곰가죽만 가지고 기억 회로(mnemonic memory circuit)를 만들겠다고 덤비는 것과 같을 테니[1]. 그래서 우리는 프레임워크가 약속하는 모든 이점을 기대하며, 기꺼이 우리의 코드를 그 프레임워크에 결합(couple)시킨다. 그리고 많은 프로그래머들이 우리보다 먼저 저질렀던 실수를 똑같이 반복한다. 우리는 스스로를 프레임워크에 묶어버린다. 프레임워크를 사용한다는 것은 상당한 수준의 헌신을 요구한다. 프레임워크를 코드에 받아들이는 순간, 프레임워크가 관리하는 세부사항들에 대한 통제권을 당신은 내려놓게 된다. 물론 이는 좋아 보인다. 그리고 대개는 실제로도 좋다. 하지만 모퉁이를 돌면 함정이 기다리고 있다. 그리고 그 함정은 다가오기 전까지 잘 보이지 않는다. 정신 차려보면 당신은 온갖 부자연스러운 짓을 하고 있다. 프레임워크의 베이스 클래스를 상속하고, 제어 흐름의 더 많은 부분을 내어주고, 프레임워크의 관례와 버릇, 고약한 특이점(idiosyncrasies)에 점점 더 깊이 고개를 숙이고 있는 것이다. 그런데도 당신이 프레임워크에 엄청나게 헌신했음에도, 프레임워크는 당신에게 어떤 상호적 헌신도 하지 않는다. 그 프레임워크는 저자가 기분 내키는 방향으로 얼마든지 진화할 자유가 있다. 그리고 실제로 그렇게 되면, 당신은 충직한 강아지처럼 그 뒤를 따라갈 수밖에 없다는 사실을 깨닫게 된다. 프레임워크에 묶이는 일은 소프트웨어 팀에서 너무 흔하게 벌어진다. 팀은 넘치는 열정으로 시작하며 자발적으로 코드를 프레임워크에 결합시킨다. 하지만 훨씬 나중에, 프로젝트가 성숙해져 갈수록 그 프레임워크가 점점 더 발목을 잡는다는 사실을 알게 된다.
- 현우