하지 말아야 되나? – 걍 외부 솔루션 사서 해. 도입하면 개발 기간 줄어들 수 있어. -> 응? 누가그래?

(미친 잡소리로 시작합니다.)

옛날 옛날~ 아주 먼~ 옛날에~ 호랑이가 담배 피다가 폐암으로 곪아 죽던 시절에~

선인 개발자들께서는 말씀하셨지.

“걍 외부 솔루션 도입해서 붙여. 그러면 그 기능 덜 개발해도 되잖아.”

라고 하시면서 ocx, active x 등 여러 플러그인이나 솔루션으로 개발하는 프로그램을 떡칠을 하셨고…

개발 세상에 약간의 편함을 추구하며 즐겁게(?) 개발하시고…

세상은 그들의 솔루션으로 YES만 누르면 다 해결되는(?) 세상으로 발전을 하였었지만…

도입한 솔루션, 플러그인들이 하나 둘 개발이 중단되고…

회사들은 어느순간 없어지면서 프로그램 업데이트를 하면 안되는 상황이 도래하고…

윈도우 xp와 ie 6를 평생 써야 하는 세상이 당연한 세상은 저물어가고…

그분들의 하나 둘 개발 세상에서 하산하시고 닭과 기름과 함께하는 인생을 하시고…

윈도우는 7, 8, 10이 나와 세상이 바뀌어가고…

아이폰과 안드로이드가 또 다른 세상을 보여주면서…

그 솔루션들은 더 이상 사용될 일 없이 다른 솔루션들이 새로이 새로이 개발되어가고..

세상은 하나 하나 발전되거 가고 있다.

라는 쓸데없는 글로 시작해봅니다.

SI 개발과 연구에 좀 계시던 분들 중에서는 당시에 상용 솔루션들의 기술들만큼 개발하기 힘들어서 상용 솔루션이나 플러그인은 사서 쓰시는 걸 당연하게 생각하시는 분들이 좀 계신다. 그만큼의 성능과 개발 시간을 덜 써도 된다고 생각하기 때문이다.

그리고 그와는 별개로 요즘은 추가로 오픈소스를 접한 친구들의 경우에는 오픈소스 솔루션을 가져다 쓰면서 어느 정도 좀 수정하고 그러면 어느 정도 성능이나 개발 시간을 먹고 들어간다고 생각하는 친구들도 존재한다.

이들의 공통점은 바로 외부 솔루션을 도입해서 솔루션 개발을 하면 개발 기간을 단축하고 어느 정도의 성능을 보장할 수 있다는 것이 해당하는 전제 조건이다. 그러면 내부에서 처음부터 개발하는 것보다 개발을 빨리 할 수 있다는 거… 개발자들이 되게 쉽게 생각하는 것이다.

그러나, 내부 개발에서는 해당하는 솔루션에 대한 조사를 통해서 요건 정의가 되는 부분에 부가적으로 추가되는 기능이 있다는 것을 잊고있게 된다. 바로 도입하려는 솔루션의 적합성과 차이점에 대한 분석 작업이다. 이 작업이 도입되는만큼, 오히려 내부에서 전부 개발하여 솔루션을 만들어내는 것이 외부 솔루션을 도입하는 것보다 개발 기간이 단축되는 경우도 적지 않게 발생하게 된다.

이에 대해서 당연하게 이야기 되는 경우와 실제로 엔지니어들이 생각하는 것에 대해서 정리해서 왜 이런 상황이 발생하는지에 대해서 좀 생각해 보려고 한다. 사실 좀 고민을 해야 하는 상황이 온다.

좀 교과서적인 이야기를 적어보자면 몇 가지가 있다. 첫 번째로는 솔루션의 기본 기능이나 데이터 구조, 소스코드 등을 상세하게 파악해야 하고 이걸 반드시 실 데이터를 사용하여 검증하면서 내부 구조를 파악해야 하는 데 있어서 많은 시간이 필요하게 된다는 점이다. 사실 이건 좀 게을이 하면 안되는 중요한 내용이다.

두 번째 내용으로는 기능 정의 결과를 바탕으로 어느 정도의 표준 기능을 사용할지, 이걸 기능을 추가로 개발해야 할 지, 그리고 그에 따른 적합성과 차이점을 분석할 때 사용자나 경영자 등 다양한 사람들의 이해 관계까지 조정하고 논의되어야 하는 데 시간이 필요해진다. 이로 인해서 그들이 사용하는 데 있어서 제약 사항이 발생하는 경우도 있을 수 있기 때문에 이를 결정할 수 있게 해줘야 한다.

세 번째 내용으로는 의외로 잊기 쉬운 메인 모듈의 안정적 동작에 방해가 되는지 안되는지를 검증해야 한다. 어느 정도의 부가 기능이라면 모를까 메인 기능에 대해 어느 정도의 결합과 그에 따른 안정적 동작을 위한 개발 기간이 추가로 들어간다.

네 번째 내용으로는 위의 적합성 및 차이점 분석으로 인해 추가 기능이 필요하게 되면 이것이 메인 모듈에 기능이 더 늘어나야 하는 내용이 될 수 있게 된다는 것이다. 메인 모듈을 개발하는 데 있어서 이로 인해서 개발 기간이 더 늘어날 수도 있기 때문이다.

다섯 번째 내용으로는 테스트 기간에 대한 추가적인 소모 시간이 생긴다는 것이다. 이미 완성되어 있는 것이 있다고 해서 그걸 테스트 하는 것이 필요 없는 것은 아니다. 우리가 필요로 하는 기능대로 돌아가지 못해서 이상한 값이나 결과를 만들어 내는 것이 외부 모듈이라면 이것 또한 여러모로 문제가 되고 이를 해결하기 위한 시간이 소모된다. 또한 사용되지 않는 기능이라 할 지라도 기능으로 들어가 있기 때문에 전부 다 테스트를 하긴 해야 하는 상황도 발생한다.

마지막으로 기존 데이터를 마이그레이션(이전, 이행)하기 위한 작업이 필요하면 그에 따른 추가 기간이 필요하게 된다. 마이그레이션 데이터가 도입된 솔루션에 적합하게 되어 있다는 것은 있을 수 없다. 반드시 어딘가에서 변경 작업이 필요할 수 있고, 이를 위해 많은 시간이 들어간다. 이를 데이터 정화(data cleaning) 작업이라고 한다.

근데 이런 상황들이 있는데도 불구하고 개발자들은 왜 이런 생각들을 예나 지금이나 가지게 되는 걸까..? 사실 옛날에는 잘 모르겠다. 그냥 개발하기 어려울 거 같아서 보증된 걸 이용하여 개발하고자 하는 심리가 있지 않았나 싶기도 하다. 근데 그게 대부분이 유료라서… 여러모로 돈 들어가고 돈 문제 로 이어지고 하다보니 여러모로 좀 힘든 상황을 만들어서 그렇지….ㅡㅅㅡ

근데 요즘은 오픈소스 솔루션 플러그인들이 상당이 많은 모듈화가 이루어져 있다. 그레서 메인 모듈의 기능을 헤치는 것보다는 해당하는 자료나 기능 중 일부 기능에 대해서는 특정 플러그인, 솔루션을 이용하여 빠르고 깔끔하게 만들어내고 그걸 조합해서 만들어내는 작업들이 이루어지고 있다보니 갖다 쓰는 것에 대해서 별 의심을 하지 않고 쓰게 되는 것도 없지않아 있게 되는 듯 하다.

그러나 솔루션에 추가해야 할 기능이 너무 많다면 이 모든 것들에 대해서 맞아 떨어지거나 그렇게 만들기 쉽게 된 솔루션이라는 것이 존재할 수 없게 된다. 그럴 경우에는 내부에서의 개발과도 좀 비교를 해봐야 할 것이다. (특히 오픈소스들..) 그리고 어느 방법이 더욱 효율적이고 좋은 선택일지에 대해서 고민을 하고 그에 따라 도입을 해야 한다. 안그러면 돈날리면서 개발하게 되고 여러모로 속아픈 상황을 끌어안고 개발해야 하는 상황들이 발생할 수 있다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.