‘코드프리즘’으로 소스코드 점검 자동화해 품질 향상

[컴퓨터월드] KT DS는 지난 2008년 KT로부터 분사된 KT그룹의 IT서비스 전문기업으로, KT그룹사를 포함해 통신·미디어, 금융, 에너지, 재난·안전·보안, 공공 등 다양한 산업분야에서 IT컨설팅 및 SI/SM(시스템통합/운영) 비즈니스를 펼치고 있다. 최근 KT DS에서는 지티원의 소스코드 점검 및 품질 관리 솔루션 ‘코드프리즘(CodePrism)’을 도입, 전사 소스코드와 서비스 품질을 향상시켰다. KT DS의 전사 표준 소스코드 품질 분석 시스템에 대해 살펴본다.

 


자동화된 소스코드 점검도구 필요성 대두

KT DS의 QA팀은 전사 IT품질개선, 프로세스 정립, 프로젝트 개발·관리 방법론 정립, 테스트, 도구 개발·운영, ITSM 시스템 개발·운영 등 KT그룹의 IT품질을 주관하는 조직으로, 총 27명으로 구성돼있다. 안정적인 IT시스템 운영을 위해 요구되는 전사 차원의 소스코드 점검 업무 역시 KT DS QA팀이 담당하고 있다.

기존에 KT DS에서는 오픈소스 소프트웨어(SW) ‘PMD’ 및 ‘소나큐브(SonarQube)’를 활용해 소스코드 점검을 수행해왔다. 그러나 자사뿐 아니라 여러 계열사들의 ITO(IT아웃소싱) 및 SI 사업까지 관여하다보니 관리해야 할 시스템이 기하급수적으로 늘어났고, 그 사이에서 개발 언어나 프레임워크가 상이한 문제도 발생했다.

또한 오픈소스 도구의 한계로 룰 커스터마이징이 어려웠고, 체크리스트를 일일이 만들어 코드 리뷰를 수동으로 진행할 수밖에 없는 상황에 처했다. 일부 프레임워크에서 제공하는 자동 생성 소스코드에 대한 점검 시 예외 처리도 수작업으로 진행했고, 이렇듯 수동 및 자가 점검에 의존하다보니 장애 유발 소스코드 통제의 강제성이 낮아 일부 개발자들이 이를 악용하는 일도 일어났다.

이에 따라 KT DS는 개발생산성 저하 및 점검도구 불신 등에서 비롯되는 여러 문제들을 해결하기 위해 상용 솔루션 도입을 결정, 경쟁 입찰 과정을 거쳐 자사 개발 환경에 가장 적합하다고 판단된 지티원 ‘코드프리즘’을 도입하기에 이르렀다.


개발자 누구나 일관된 기준에서 다양한 소스코드 점검 가능

▲ 소스코드 커밋 통제 프로세스

지티원 ‘코드프리즘’을 기반으로 추진된 KT DS 전사 표준 소스코드 품질 분석 시스템 구축 사업은 ▲시스템 특화 룰셋 개발 ▲자동 점검 프로세스 구현 ▲소스코드 통제 기능 구현 등에 중점을 뒀다. 시스템 특성에 맞춘 커스텀 룰 개발·적용과 함께 제외 대상 소스코드는 사전 등록함으로써 자동으로 예외 처리되게 했고, 형상관리 시스템 기반으로 자동 점검이 이뤄지면서 룰 위반 발생 시 장애유발 소스코드로 분류되도록 했으며, 자동 점검 프로세스에 의해 변경 소스코드 중 위반 건이 있을 때는 커밋이 불가능하게 했다. 또한, 오픈소스 IDE ‘이클립스(Eclipse)’ 사용 유무 등과 같은 개발 환경에 따른 제약 없이 동일한 기준으로 자가 점검을 수행 가능하도록 맞춤형 인터페이스를 구현했다.

▲ 다양한 개발환경에 맞춘 인터페이스 구현

시스템 구축 사업은 크게 두 번으로 나뉘어 진행됐다. 2015년 11월부터 지난해 3월까지 4개월간 진행된 1차 사업에서는 KT ITO용 점검 시스템을 구축했다. 이를 통해 JAVA, C/C++, C#, XML, SQL, 자바스크립트 등 언어로 구성된 소스코드에 대한 점검 기능을 구현하고, SVN 커밋을 제어하는 위반소스 형상관리서버 통제 기능을 개발했으며, 커스텀 룰셋 개발을 통해 129개의 룰을 추가했다.

이어 지난해 12월부터 올해 3월까지 4개월간 진행된 2차 사업에서는 KT그룹사 ITO용 및 대외 SI용 점검 시스템 2대를 추가 구축했다. 이와 함께 소스코드 점검 언어를 PHP와 오브젝티브C까지 포함하고, 위반소스 형상관리서버 통제 기능으로 깃(Git)서버 커밋까지 제어할 수 있도록 했으며, 표준 룰 개발을 통해 약 300개의 룰을 확보하게 됐다.


표준화된 소스코드 점검 프로세스 통해 품질 제고

KT DS QA팀에 따르면, ‘코드프리즘’의 소스코드 인스펙션 커버리지가 오픈소스SW보다 높아 보다 안정적인 IT시스템 운영에 기여하고 있다. 더욱이 오픈소스SW까지 혼용함으로써 분석도구 간의 갭(gap)을 파악, 보다 향상된 소스코드 점검 프로세스를 갖추게 됐다.

이를 통해 각 언어별 검증된 파서(parser)를 사용함으로써 정교한 분석 결과를 얻고, 미탐·오탐 발생 시 지티원의 실시간 기술지원도 이뤄진다. 또한, 통제 범위 위반 건이 발생하면 소스코드 커밋을 통제함으로써 장애 유발 유형을 원천적으로 차단한다. 아울러, C#, SQL, XML 등 다양한 언어에 대한 분석 기능과 룰셋 확보로 업무시스템 확대가 용이해졌고, 업무요청에 따라 새로운 룰 개발도 가능해졌다. 더불어, 점검 결과를 DB(데이터베이스)에 저장하고 이력을 관리함으로써 수시로 프로세스 기반 점검을 수행할 수 있게 된 동시에, 관련 통계나 보고서 등을 내기에도 간편해졌다.

▲ KT DS의 세 가지 소스코드 품질 분석 시스템

앞으로 KT DS는 변화관리를 통해 지속적으로 관리될 수 있는 소스코드 품질 분석 시스템을 갖춰나갈 계획이다. ITO 중 아직 적용되지 않은 시스템들까지 프로세스 기반 소스코드 점검을 확대해나가는 한편, 소스코드 분석을 강화해 버그를 줄이면서 코드리뷰 자동화로 업무 생산성을 높여나간다는 방침이다. 이를 통해 궁극적으로는 고객에게 고품질의 애플리케이션을 제공할 수 있도록 기여한다는 목표다.

[인터뷰] “소스코드 품질이 곧 개발 경쟁력” 

▲ 배종원 KT DS
품질혁신담당총괄 부장

소스코드 품질 분석 시스템 구축 과정에서 애로사항이 있었다면?

초기 구축 시 파일럿 대상 시스템 선정이 어려웠다. 또한 기존에 사용하고 있던 오픈소스를 대체하는 일에 있어서도 개발자들이 익숙했던 사용 환경의 변화를 싫어했고, 기존에 없었던 통제 기능이 추가되는 것에 대한 반발도 있었다. 이러한 문제들을 극복하기 위해 끊임없이 설득했고, 약간의 강제성과 인맥도 활용했다.

소스코드 점검 및 품질 분석 솔루션 도입 효과는?

먼저, 시스템 자동화를 통해 개발자는 필히 소스 커밋 전 코드 점검을 해야 한다는 프로세스가 정립됐다. 이를 준수하지 않으면 통제를 가하게 돼있어 프로세스를 준수하도록 만들었다. 또한, 기존에는 자바, C만 표준 룰셋이 존재했지만, 이제는 하나의 솔루션으로 여러 소스를 점검하고 일관된 점검결과와 기준을 제공할 수 있게 됐다.

아울러, 표준 룰셋이 개정되면 배포·가이드·적용 등 일련의 과정에 대한 공수와 낭비가 심했고, 각 개발자의 점검여부 등을 확인할 백데이터가 문서로밖에 남지 않아 신뢰도가 낮다는 문제점이 있었는데, 솔루션 도입 이후로는 룰셋 개정에 따른 자동 배포와 반영 및 점검결과 DB관리 등을 활용하게 돼 중앙에서 관리하기 용이해졌다. 다만, 워낙 많은 시스템을 관리하고 있는데 시스템 적용 시 환경설정 등 작업을 ‘코드프리즘’ 운영자가 다 진행해야 해서 어려운 부분도 있다.

소스코드 품질과 소스코드 보안 중 무엇이 더 중요하다고 보나?

대부분의 개발자는 보안이 중요하다고 답할 것이다. 하지만 품질이 곧 보안과 연관되기 때문에, 개인적으로는 둘 다 중요하다고 생각한다. 사소한 구문(Syntax) 오류로 인해 전혀 다른 결과를 초래할 수도 있고, 장애를 유발할 수도 있기 때문이다. 많은 이들이 소스코드 품질에도 관심을 갖고 개선을 위해 함께 노력할 수 있게 되기를 바란다.

저작권자 © 아이티데일리 무단전재 및 재배포 금지