잊지 않겠습니다.

국내 SI 개발환경에서의 거의 100이면 99정도 myBatis를 이용한 DB Handling을 하고 있습니다. 개인적으로는 상당한 ORM 빠돌이라서… 왜 ORM을 사용하지 않지? 라는 의문을 항시 가지고 있다가 다른 여러 사람들 및 개인적인 생각을 정리해서 한번 올려봅니다.

ORM에 대한 learning curve

먼저, 개발자들에 대한 개인 책임이 어느정도 있다고 생각합니다. 근처의 여러 사람들을 만나보면, 개발자들중 3년이 지나고 나서 공부를 꾸준히하는 개발자들을 찾기 힘들다는 이야기를 자주 듣습니다. 현업에서 주로 사용되고 있는 myBatis 이외에 자신이 찾아서 공부를 하는 사람들의 수가 의외로 적은 것이 한 이유가 아닐까 생각됩니다.

이는 철저히 개발자들의 문제점이 아닐까 라는 생각을 가지고 있습니다. 한해한해 바뀌어가는 개발환경에 대해서 자기 자신을 꾸준히 업그레이드해두지 않으면 자연스럽게 도태가 되어버리는 것이 현 상황인데, 한가지 기술로 너무나 오랫동안 욹어먹는 것 역시 현 IT 환경에서의 죄악 이지 아닐까 싶습니다.

수주에 따른 SI 개발이기 때문에 초기 Reference가 없다.

공적인 분야에서의 대규모 SI를 토대로 성장한 국내 IT 개발환경은 초기 Reference가 매우 중요합니다. 대부분 SQL을 그대로 사용하는 개발환경이 지금까지 이어져왔고, 이러한 개발환경에 대한 reference를 요구하기 때문에, 어쩔수 없이 myBatis를 이용하게 되는 것이 당연하게 이어져오고 있습니다.

이건 어떻게 하면 깰수 있을까요? 솔찍히 이 부분이 개인적으로는 가장 답이 안나옵니다. 공공부분 SI의 경우, reference를 요구하는 것이 당연하다고 생각됩니다. 그렇지만, 이러한 reference 요구에 의해서 신기술의 발전 및 보다 나은 기술의 채택부분이 막힌다면 이거 역시 문제가 아닐까 싶습니다. 점진적으로 해결해 나간다면, 개발자들이 최대한 ORM을 이용해서 공공부분 SI 이외의 현장에서 reference를 쌓는 것이 필요하다고 생각합니다. 지금까지 시장에셔와는 다르게 외부에서의 reference를 이용해서 공공부분에 들어가보는 것 이외에는 조금 답이 안나오는 것 아닌가 싶습니다.

기존 BL이 SQL로 구성되어 있기 때문에

가장 막막하고, 답답한 부분입니다. 기존의 로직이 SQL로 구성되어 있기 때문에 그 SQL을 사용하기 위해서 myBatis를 이용해야지 된다. 라는 의견입니다. 이에 대해서는 전 조금 다른 관점을 보고 싶습니다.

국내는 유독 차세대라는 개발 Project들이 많습니다. 해외에는 차세대라는 말을 붙일 수 있을 정도로 모든 시스템을 갈아엎는 Project들이 별로 없습니다.

그 이유가 무엇일까요?
해외는 대부분 점진적인 개량을 통해서 시스템을 항상 최신으로 유지를 시키거나, 계속적인 성능 개선을 해오고 있기 때문이라고 합니다. 국내의 사정은 어떤가요? 국내는 대부분 SI/SM으로 개발자의 직군이 나뉘게 됩니다. 전자는 주로 개발을, 후자는 주로 운영업무를 하게 됩니다. 그런데, 이 SM 업무의 경우에 대부분 신규로 무언가 개발을 하는 일을 막아버립니다. 업무로 인해서요. 개발이 필요한 상황이 있으면 개발팀에. 라는 것이 일반적인 상황이지요. 실리콘밸리의 새로운 trend라고 불리우고 있는 devOps의 경우, 이러한 용어로 만들어진 것은 얼마 안되었지만 기존까지 이런 식의 조직운영은 꾸준히 계속되어가고 있던것으로 알고 있습니다. 운영팀에서 보다 나은 개발방향을 위해서 시스템을 점진적으로 업그레이드 하고 변경시키는 과정을 이미 행하고 있는겁니다. 그렇지만, 국내의 SM환경은 대부분 어떻습니까? 대부분이 업무처리에 대한 전화상담 및 그에 따른 DB rollback, sql query문 작성에 대부분의 시간을 보내게 되는 것이 사실입니다.

이 문제는 제 개인적으로는 다음 문제와도 연결이 되고 있다고 생각합니다.

개발에 대한 사회적인 인식 문제

현 상황에서 우리 사회는 개발을 한번에 큰 돈을 들여서 하고, 그 다음에는 돈을 안쓰는 것이라고 인식하고 있습니다. 물론 개발에는 초창기 큰 돈이 듭니다. 그렇지만, 유지보수에 더욱더 많은 돈과 시간이 들게 되는 것또한 사실이지만, 국내에는 전혀 이런 사실이 먹히지 않고 있습니다. 유지보수 비용측정만봐도 알 수 있지요.

위 인식때문에, 개발을 할때 대부분이 외주개발자 또는 프리랜서들을 사용해서 대규모 프로젝트를 수행합니다. 그리고, 개발이 마쳐지면 이 사람들이 모두 이 업무에서 손을 떼게됩니다. 개발에 대한 내부적인 역량자체가 거의 없어지는거지요. 그리고 큰 돈을 들인 Application이 정상적으로 돌아가기 위한 산소호흡기만 붙인 상태로 유지를 시켜나가게 되는거지요. 점진적인 개선같은 것은 꿈도 못 꾸는 경우가 많습니다.

거기에다 우리나라는 자산에 대한 선호도가 매우 강합니다. 매우 잘 정제되고 훌륭한 Application이 아닌 시스템과 DB, 즉 자산에 해당되는 곳에는 매우 큰 돈을 쓰지만, 무형자산이라고 할 수 있는 Application에 대한 홀대는 매우 심각한 편입니다. 다른 이야기를 한다면, 이런 이유로 인하여 국내 기업환경에서 내부 데이터에 대한 Cloud는 매우 험난한 길을 가야지 될 것같다는 예상을 합니다. 국내 SI 개발환경에서 개발자들에게 투자한다는 이야기는 정말로 들어본적이 없습니다. 대부분 서버나 DB를 얼마나 비싼것을 샀는지를 자랑하는 기사들을 많이 봤지요.

솔찍히 이 문제는 국내의 천박한 자본주의를 보여주는 것이 아닌가도 싶습니다. 개발을 하는 사람들과 그 사람들의 노력이 귀한줄을 모르고 있는 것이 아닌가 싶어요.

마치면서…

ORM이 아닌 myBatis에 대한 의존 문제 자체가 개인적으로는 국내 IT 발전상황을 가로막는 일중 하나가 되지 않을까 생각하고 있습니다. 당장 open source로 무언가 새로운 web framework가 나오게 되면, 그 다음에 바로 나오는 것이 ORM입니다. DDD를 이용한 ORM modeling을 잘 할 줄 아는 사람들은 결국은 객체에 대한 이해가 좀더 나은 사람들이였던것이 제 개인적인 경험들이였습니다.

이제 ORM은 보다 더 나은 개발자가 되기 위한 조건이 아니라, 필수가 되어가고 있는 것 같은데… 국내 환경은 앞으로도 어떻게 되어갈까요.

Posted by Y2K
,