[CIOBIZ+]Analysis-APM 도입 효과

Photo Image
관련 통계자료 다운로드 애플리케이션 포트폴리오 관리

 기업 현업 사용자들은 애플리케이션에 많은 돈을 들이지만 그 효과나 비즈니스 혜택에 대해서는 효율적이지 못하다고 생각하는 경향이 우세하다. 애플리케이션 팀은 항상 과중한 업무를 호소하지만 비용 지불의 주체인 비즈니스 쪽에서는 항상 불만을 호소한다.

사실 애플리케이션과 관련된 모든 분야는 객관적인 측정이 매우 어렵다. 그래서 ‘가시화 되지 않은 것은 측정할 수 없고 측정할 수 없는 것은 관리할 수 없다’는 말이 있다. CIO 입장에서는 애플리케이션에 대해 투입하는 비용 대비 성과를 객관화하기가 매우 어렵고 전략적 의사결정을 하는데 필요한 정보가 부족하다.

CIO들의 이런 고충을 해결하기 위한 분야가 애플리케이션 포트폴리오 관리(APM)이다. 포트폴리오 관리라는 개념은 IT업계가 금융 서비스 업계로부터 차용한 것이다. 프로젝트 포트폴리오 관리(PPM) 개념은 많이 알려져 있지만 APM은 아직 생소하며 보통 APM은 애플리케이션 성능 관리를 뜻한다.

포레스터 리서치는 애플리케이션 포트폴리오를 관리하는 APM에 대해 ‘기업 애플리케이션들의 관리 인텔리전스를 위해 전사 차원의 소스 코드를 파싱해 이들 사이의 모든 연관 관계를 지식기반으로 저장하고 비즈니스와 관련된 정보를 첨가하는 일련의 기술들을 의미한다’고 정의하고 있다.

다시 말해 자동화된 기법을 이용해 수집할 수 있는 애플리케이션 관련 다양한 분석 정보들과 기타 담당자들의 개입이 필요한 비즈니스 관점의 정보를 잘 조율하여 애플리케이션 종합 저장소(리포지터리)를 구축하고, 전사 차원의 애플리케이션 포트폴리오 대시보드를 제공함으로써 CIO 혹은 IT 책임자들이 올바른 의사결정에 활용할 수 있도록 하자는 것이다.

APM을 도입해 애플리케이션을 지표에 의거하여 객관적으로 측정하고 제어하는 프로세스를 구현한다면 IT 조직의 모든 분야에서 효과를 볼 수 있다. 특히 CIO는 전체 애플리케이션 자산에 대한 현황을 즉각 파악할 수 있고 정량적인 데이터를 토대로 예산 및 자원 배치를 위한 의사결정을 내릴 수 있다. 그리고 무엇보다도 애플리케이션의 건강도 및 위험 수준을 선제적으로 파악하고 대처할 수 있다.

APM에 있어 중요한 점은 정보 수집의 지속성과 자동화이다. 수작업으로 수집되는 단편적인 정보는 의미가 없다. 이러한 방식의 정보 수집 노력은 오래 지속될 수 없으며, 이러한 수집 방식의 정보는 최신성 및 적시성이 매우 낮다. 따라서 APM은 자동적이고 지속적인 정보 수집 메커니즘이 필요하다.

또 신속하고 용이하게 정보를 그래프화하고, 다양한 역할에 맞춰 최적의 정보를 제공할 수 있어야 한다는 것이다. 즉 대시보드의 필요성이 대두된다.

기술적으로 접근해 보면, 정보 수집의 지속성과 자동화 요구를 충족하기 위해서 애플리케이션 소스 코드를 수집하고 이를 정적으로 분석하는 기술 위에 다양한 기본 메트릭들을 자동으로 추출하고 객관적인 품질 지표로 스코어링할 수 있는 메커니즘이 결합되어야 한다.

APM이 정량화 및 수치화해 제공하는 주요 품질 측정 지표에는 대체로 복잡도, 표준 준수도, 규모, 모듈화 수준, 문서화 수준, 최적화 수준, 안정도, 결함률 등이 있다. 주관적인 개발자의 경험이나 의견을 반영하여 이런 지표들을 점수 매기는 것이 아니라 국제적인 표준 메트릭을 자동 추출함으로써 객관적인 스코어링을 할 수 있게 된다.

메트릭에는 소프트웨어 엔지니어링 분야에서 많이 회자 되어 온 것들이 대부분 포함된다. 예를 들면 Cyclomatic Complexity, Halstead, Response for a Class, Coupling Between Objects, Afferent Coupling, Efferent Coupling 등이다. 이 밖에도 코딩 표준을 준수하지 않는 코드 비율이나 잠재적 오류 및 결함이 발견된 코드의 비율, 소스 코드의 변경 빈도 등 다양한 메트릭들이 적용될 수 있다.

APM은 상위 관리자가 애플리케이션의 건강도 및 위험도에 대한 시야를 확보할 수 있도록 보다 추상화된 애플리케이션 품질 특성 지표 수치와 그 변화 추이를 제공하기도 한다. 그래서 관리자는 △객관적 수치를 활용하여 어떤 애플리케이션이 얼마나 쉽게 유지보수가 가능한지(유지보수성) △어떤 애플리케이션을 다른 개발자에게 얼마나 쉽게 인수인계시킬 수 있겠는지(이해 용이성) △어떤 애플리케이션이 런타임에 장애가 발생할 확률이 높은지(신뢰성) 그리고 △런타임에 성능 이슈가 발생할 확률이 높은지 등을 측정할 수 있다.

백운기 지티원 이사 wkbaeg@gtone.co.kr