오픈소스를 사용하기 위해 기존 개발 방법을 크게 바꿀 필요는 없다. 새로 개발해야 하는 부분을 오픈소스로 대체하는 경우가 많기 때문에 개발 프로세스나 방법론 자체에 영향 받는 부분은 생각보다 적기 때문이다. 하지만, 오픈소스는 프로젝트 내부에서 개발되는 것이 아니기 때문에 대내외적으로 고민해야 하는 부분이 있을 것으로 보인다. 이번 회에서는 프로젝트 밖의 오픈소스를 프로젝트 내에 적용하기 위해 알아둬야 하는 사항에 대해 오픈소스 커뮤니티에서 활동 중인 심서연 프로와 ㈜웹케시의 박해윤 박사를 만나 이야기를 들어본다.
Q: 안녕하세요. 오픈소스를 소프트웨어공학적으로 어떻게 적용하는 것이 좋은지에 대해 이야기를 들어보고자 박해윤 박사를 함께 모셨습니다. 먼저 오픈소스에 소프트웨어공학이 왜 필요한지 말씀해 주시죠.
오픈소스는 미리 만들어져 있는 소프트웨어를 만들고자 하는 소프트웨어에 완제품이나 반제품으로 적용하는 것이 일반적입니다. 일종의 재사용 소프트웨어라고 할 수 있기 때문에 어떻게 적용할 것인지에 대해 소프트웨어공학적인 접근이 반드시 필요합니다.
SI가 주류를 이루던 이전의 소프트웨어 개발은 체계적이고 전문적인 개발 형태가 많았습니다. 그래서 하나가 완성되면 그 다음 순서로 넘어가고 그 다음 것이 완성되면 또 그 다음이 수행되는 것이죠. 그런데, 오픈소스를 활용하게 되면 모든 것이 협력에 의해 움직입니다. 프로젝트 외부의 오픈소스와 내부에서 내가 만든 소프트웨어를 적절히 섞어가며 개발을 하게 됩니다(그림1).
<그림1> 독점 소프트웨어와 오픈소스 개발 방법론의 비교
출처: 오픈소스컨설팅
그림1을 보면, 독자적인 소프트웨어 개발은 소프트웨어공학에는 가장 잘 어울리는 모델이지만 최근의 트렌드와는 다소 동떨어진 것으로 보일 수 있습니다. 외적인 요소는 배제되고 철저히 내부적 요소로만 개발이 되기 때문이지요. 요구사항에 가장 적합할 수는 있지만 개발 시간도 오래 걸리고 안정화 되는데도 매우 오래 걸리는 단점이 있습니다. 반면에 우측의 오픈소스 모델은 프로젝트 내외부에서 필요한 부분을 협력하면서 개발하기 때문에 개발이나 안정화 시간이 짧습니다. 거기에서 비용절감이나 최적화된 리소스 활용, 효율성 향상 등이 기대되는 것이지요(그림2).
<그림2> 오픈소스를 도입한 이유
출처: IDC, 디지털타임즈