초보 루비 온 레일즈 개발자가 개발을 하다 보면 쓸데없이 크고 엉망진창인 모델을 만들기 마련입니다. 흔히 하는 실수죠. 저도 마찬가지였습니다. 경험 있는 개발자가 곁에 있어서 그런 실수를 하는 것을 막아줬으면 다행이었겠지만 안타깝게도 제 주변엔 없었습니다. 결국 스스로 그 상황을 해결할 방법을 찾아야 했죠.
해결책을 찾는 과정에서 수많은 블로그 글을 읽으면서 이 문제를 저만 겪고 있는 것이 아니란 사실을 알게 되었습니다. 레일즈 개발자 사이에서는 상당히 흔한 문제로 레일즈가 액티브 레코드 패턴을 사용하는 방식 때문에 발생하는 것이었죠. 검색을 하다보니 레일즈 앱 구조의 역사 비슷한 것도 보이더군요. 컨트롤러가 복잡하던 시대, 모델이 복잡하던 시대, 그리고 요즘은 루비 오브젝트를 사용하는 시대구요. 완전히 다른 해법도 있었습니다. 예를 들어 Ruby Object Mapper나 Hanami 프레임워크는 그냥 액티브 레코드 패턴을 버리고 데이터 매퍼 패턴을 사용해버렸습니다.
같은 실수를 여러 사람이 반복한다면 그건 개발자 개개인의 잘못때문에 발생한 문제가 아닙니다. 레일즈 자체에 사람들이 그런 실수를 반복하도록 오도하는 디자인 문제가 있다는 것이 더욱 타당한 해석이죠. 물론 디자인 문제는 충분히 있을 수 있습니다. 애초에 영원히 완벽한 시스템은 존재할 수가 없으니까요. 그리고 레일즈는 잘못된 부분보다는 잘 된 부분이 훨씬 많은 프레임워크입니다.