Home > 정보마당 > 공개SW 활용 성공사례

공개SW 활용 성공사례

“점차 증가하는 코드 복잡성 해소… 공개SW 활용으로 해결”

통합PC 보안 솔루션을 자체적으로 개발 및 제공해온 닉스테크는 1995년 설립 이래 지금까지 기술 발전에 따른 프로그램의 지속적인 기능 개선을 이어왔다. 하지만 프로그램에 점차 다양한 기능들이 구현됨에 따라 코드의 복잡성이 증가됐고, 덩달아 유지보수에 필요한 시간과 비용 또한 점차 증가해 이에 대한 보완의 필요성이 제기됐다. 이 문제를 해결코자 닉스테크는 역공학으로 SW 아키텍처를 도식화해 코드 복잡성을 제어하기로 하고, 이에 공개SW를 도입해 애당초 목표했던 비용절감에 더해 성능개선 효과까지 얻을 수 있었다.

- 기     관 닉스테크
- 수행년도 2013년
- 도입배경 개발 이후 장기간의 프로그램 개선에 따른 코드 복잡성을 해결하고 증가한 유지보수 시간과 비용 문제를 완화하기 위한 SW 안정화 필요성 대두
- 솔 루 션 Source Navigator, SQLite, Redmine, Subversion, Jenkins
- 도입효과 : 역공학에 필요한 공개SW 도입으로 자사 프로그램의 안정화를 이뤄 비용절감 및 성능개선 효과

닉스테크 로고

내부정보 유출방지 솔루션인 ‘세이프PC 엔터프라이즈’를 주력으로 보안USB 솔루션 ‘세이프USB’, 개인정보보호 솔루션 ‘세이프 프라이버시’, 네트워크 접근제어 솔루션 ‘애니클릭 NAC’ 등을 서비스해 오고 있는 정보보안 전문기업 닉스테크는 보다 나은 솔루션 제공을 위해 지속적으로 제품 성능을 개선해왔다. 또한 초창기 3~4명의 개발자가 개발한 솔루션에서 시작해 지금은 100명에 이르는 직원들이 자체적으로 솔루션의 기능을 개선 및 유지보수하기 위해 활동하고 있을 정도로 회사의 규모 또한 크게 성장했다. 하지만 닉스테크는 다양한 기능의 추가와 성능개선을 위한 일련의 개발 과정들이 자사 SW 내부 코드의 복잡성을 증가시켰고, 이에 따른 해결책이 필요하다고 판단했다.

 

역공학에 공개SW 활용해 자사 솔루션 개선

사실 닉스테크가 처음부터 SW 코드의 복잡성에 관심을 둔 것은 아니었다. 2010년부터 자사 SW 품질개선 방안을 고민하며 다양한 시도를 해오던 중 2011년 실시한 자체적 통계조사에서 실질적인 개선 필요성이 가시화되면서 본격적으로 자사 솔루션의 간소화 및 안정화를 위한 작업에 돌입하게 됐다. 통계 결과에서는 버그 한 건을 수정하는 데 평균 2.5일이 소요되고 새로운 기능을 추가하는 데는 평균 2일이 걸리는 것으로 나타났다. 즉, 신기능을 개발해서 추가하는 것보다 버그를 고치는 작업에 오히려 더 많은 시간이 소요되는 상황이었던 것이다.

이로 인해 유지보수 비용으로 연간 26억 원 정도가 소요되는 것으로 나타났다. 회사 내부에서 기존의 솔루션은 그대로 유지하고 새로운 SW를 개발하자는 목소리도 컸지만, 새로운 개발 비용에 기존 솔루션의 유지보수 비용 문제도 그대로 안고가는 방향은 본질적인 문제에 대한 타개책이 될 수 없다고 결론지었다.

 

역공학아키텍처
▲ 공개SW를 활용한 역공학 아키텍처

 

그렇게 해서 어떻게 하면 기존의 솔루션을 더 좋게 개선할 것인가에 대한 고민이 시작됐다. 최종적으로 시간도 시간이지만 무엇보다 비용절감이 필요하다고 판단한 닉스테크는 오랜 기능 개선과 개발로 복잡해진 SW 내부 구조를 안정화해 문제를 해결키로 결정했다. 이에 닉스테크는 정보통신산업진흥원 부설 SW공학센터가 2012년에 진행한 SW 현장 멘토링 사업을 통해, 역공학으로 SW 구조의 가시화를 꾀해 아키텍처의 간소화를 이루기 위한 작업에 착수했다.

우선 첫 시도로 세이프 프라이버시 솔루션 코어단의 1개 모듈에 시범 테스트가 진행됐다. 개인정보보호 솔루션인 세이프 프라이버시 솔루션에서 개인정보 검색을 수행하는 모듈에 코드 간소화 과정을 수행한 것이다. 이에 공개SW인 Source Navigator가 활용됐다. Source Navigator가 소스 코드를 각각의 개별적인 요소로 분할해서 SQLite DB로 보내면 Dot가 아키텍처를 선과 도형으로 도식화하는 과정을 통해 SW의 전반적인 구조를 살펴볼 수 있게 됐다.

이렇게 도식화된 그림으로 각 모듈 간의 연관성을 파악하자 불필요한 호출이나 연계 과정이 눈에 들어왔다. 복잡하게 얽힌 구조를 차근차근 풀어가는 과정을 수행하며 도식화된 아키텍처를 간소화하기 위해 코드를 수정하는 작업이 이어졌고, 결과적으로 아키텍처의 복잡도를 나타내는 여섯 가지 척도 중 가장 비중이 높은 내용 결합도를 100% 가까이 줄일 수 있었으며, 공통 결합도는 30% 가량 줄일 수 있었다.

 

도식화.png
▲ Dot로 도식화된 아키텍처 화면

 

비용절감 목표 달성, 성능개선은 덤

공개SW를 활용해 자사 솔루션의 아키텍처를 구조화하고 복잡성을 개선하는 과정은 평균 2.5일 걸리던 버그 수정 기간을 평균 1.8일로 줄이는 효과로 이어졌다. 즉, 유지보수 시간을 단축해 그에 상응하는 비용절감 효과를 얻게 된 것이다. 특히 닉스테크는 아키텍처 간소화를 수행하기 전인 2011년에 한 금융사에서 실시한 벤치마킹테스트(BMT)의 성능 평가 부분에서 낮은 점수를 받았지만, 아키텍처 간소화 이후인 2012년에 같은 금융사에서 재 실시한 성능 평가 부분에서는 높은 점수를 획득해 비용절감에 더해 성능개선 효과까지 얻었다고 설명했다. 이런 가시적인 성과는 곧 닉스테크의 개발 과정 전반에 공개SW가 확산 도입되는 결과로 이어졌다.

 

닉스테크가 보유한 전 제품군뿐만 아니라 새로 개발되는 솔루션에도 SW공학을 적용하고 공개SW를 통한 비용절감 효과를 이어가겠다는 취지에 따라 2013년부터 자체적으로 ‘SW 비주얼라이제이션 툴 체인’ 구축을 시작했다. 우선 고객 요구 사항을 분석하고 관련 이슈와 업무 관리를 수행하기 위해 Redmine을 도입했으며, 소스 형상 관리에 필요한 Subversion을 도입 완료했다.

 

이에 더해 SW의 지속적인 통합에 필요한 Jenkins를 도입해 현재 데일리 빌드 시스템까지 구축한 상태다. 특히 기존에 마이크로소프트의 TFS(Team Foundation Services)가 사용된 부분을 Redmine과 Subversion으로 교체했다는 점이 눈에 띈다. 닉스테크 기술연구소의 정태선 연구소장은 “TFS의 경우 가격도 가격이지만 웹 UI의 사용성이 좋지 않은 편이어서, 웹이 아닌 비주얼 스튜디오에 플러그인하는 형태로 사용해왔다”며 “개발조직에게는 문제가 없었지만 외부에 나가서 고객을 지원하는 경우에는 문제점 이슈를 등록하는 과정을 위해 비주얼 스튜디오를 설치해야 하는 불편함이 있었다”고 설명하며, 이에 같은 업무를 수행하는 Redmine과 Subversion을 도입하게 됐다고 밝혔다.

 

툴체인
▲ 닉스테크의 SW 비주얼라이제이션 툴 체인 구축 현황

 

현재 닉스테크는 SW 비주얼라이제이션 툴 체인 구축 계획에 따라 향후 코드 분석을 위한 툴로 상용SW인 Coverity와 공개SW인 Sonar를 검토하고 있다. 이에 대해 정 소장은 “아직 확정되지 않았지만 비용절감이란 측면도 있고, 많이 사용되고 있다는 점에서 공개SW인 Sonar를 도입하는 것에 현재 더 비중을 두고 있다”고 내부 분위기를 전하며 “Sonar를 통해 정적 분석으로 간단하게 코드 도식화가 이뤄지면 잠재적인 버그 리스트를 확인해 개발 과정부터 빠른 대응으로 SW의 품질을 효과적으로 관리할 수 있을 것”이라고 설명했다.

 

“요구 분석 및 제품화 과정에 가능한 한 많은 공개SW 도입할 것”

현재 닉스테크는 공개SW를 활용해 세이프 프라이버시의 전반적인 모듈들에 대한 아키텍처 안정화를 완료한 상태다. 이에 더해 요구 분석부터 제품화에 이르는 과정을 대상으로 필요한 부분에 가능한 한 많은 공개SW를 도입해, 2014년에는 SW 비주얼라이제이션 툴 체인 체계를 완성한다는 계획을 세우고 있다. 실질적으로 Jenkins까지 도입된 비주얼라이제이션 툴 체인 체계에는 Sonar의 도입이 비중 있게 검토되고 있으며, 올해 안에는 코드를 분석해서 코드 가시화와 잠재적 버그를 리포트해 개발 과정에 활용하는 것을 목표로 관련 작업이 진행되고 있다.

또한 닉스테크는 역공학이 호불호가 많이 갈리는 편이지만 적어도 안 하는 것보다는 이득을 가져다 줄 수 있을 것이라며, 실제로 공개SW를 활용하면 역공학 과정에 드는 비용도 줄일 수 있고 이를 통해 개발자들이 스스로 코드를 고쳐야겠다고 마음먹는 것만으로도 개발 과정에 큰 수확이 될 뿐 아니라 닉스테크의 경우처럼 가시적인 효과를 얻는 것도 기대할 수 있을 것이라고 강조했다.



[인터뷰]


“공개SW 도입, 가장 적합한 기능을 어떻게 활용하는지가 관건”

정태선 닉스테크 기술연구소 연구소장


정태선 닉스테크 기술연구소 연구소장

툴 체인 구성을 위해 상용SW를 공개SW로 바꾼 이유는

몇 년동안 상용SW를 사용해 왔던 습관적인 측면이나 교체에 필요한 시간과 비용 등이 고민됐지만, 툴 체인을 위해 도입한 공개SW도 충분히 성능과 기능에서 상용SW에 뒤지지 않는다고 판단했다. 특히 Redmine, Subversion의 경우 국내에서도 많이 활용되고 있는 솔루션이라 도입을 결정하는 데 거부감도 없었고 기술적으로도 어렵지 않았다는 점이 주요했다. 실제로 이 부분은 미션 크리티컬한 부분이 아니기 때문에 보안 전문 업체임에도 불구하고 상대적으로 쉽게 공개SW 도입을 결정할 수 있었다. 결국 공개SW 도입 시 가장 중요한 기준은 얼마나 많이 사용되고 있어 도입 상의 리스크를 줄일 수 있을 것인가, 그리고 툴의 좋고 나쁨을 떠나서 얼마나 필요한 기능을 적합하게 잘 활용하는지가 관건이라고 본다.

 

공개SW 도입으로 얻은 이점이 있다면

아직 많은 변화에 대해 확언할 단계는 아니지만 비용과 기술적 측면에서 부담없이 활용할 수 있다는 심리적 안정감을 얻었다는 것이 크다. 또한 공개SW를 활용하지 않으면 SW 시장의 타임 투 마켓(Time to market)에 적절하게 대응하기가 쉽지 않을 수도 있다. 공개SW가 보안이나 성능에 문제가 있다는 것은 다 옛날이야기라고 생각한다. 많이 활용되는 공개SW에는 재미로, 좋아서, 열정을 가지고 프로젝트에 참여한 수많은 개발자들이 있고 이들의 실력 또한 무시 못 할 정도로 공개SW는 많은 발전을 이어왔다. 특히 공개SW를 도입해 역공학을 수행해 볼 것을 추천한다. SW 하나를 오래도록 개선 발전시켜 온 국내 회사들의 경우 소수의 개발 인원으로 시작해 온 경우가 많다. 그래서 아키텍처 구조를 신경쓰지 못하고 비대하게 커져온 것이 현실이다. 이런 상황에서 역공학이나 지속적인 코드 관리를 위해 공개SW를 도입한다면 비용을 절감할 뿐만 아니라 성능을 향상시키는 결과로 이어질 수 있다.




- 마이크로소프트웨어 한종진 기자 hjj@imaso.co.kr
- 공개SW 역량프라자
맨 위로
맨 위로