디지털 탈바꿈 과제: 기술 부채 (Technical Debt)
상태바
디지털 탈바꿈 과제: 기술 부채 (Technical Debt)
  • 김인현 대표
  • 승인 2019.07.29 01:34
  • 조회수 4926
  • 댓글 0
이 콘텐츠를 공유합니다

소프트웨어의 기술 부채

투이톡_기술부채_1.jpg  
자료원: https://melv1n.com/what-is-technical-debt/

기술 부채는 워드 커닝햄(Ward Cunningham)이 처음 사용한 용어이다. 워드 커닝햄은 위키위키의 개념을 처음 만들었고, Extreme Programming 방법론의 리더였다. 기술 부채는 소프트웨어의 수준에 따라 운영 단계에서 쏟아야 하는 노력이 달라진다는 의미이다. 개발자가 코딩 규칙을 지키지 않고 자신 만의 방식으로 프로그램을 개발하더라도 수행은 된다. 하지만 이런 경우에는 운영 과정에서 유지보수에 더 큰 노력이 든다. 정상적인 소프트웨어라면 들지 않았을 노력이 추가로 드는 셈이다. 금융 부채가 있으면 이자를 내야 하듯이, 소프트웨어에 문제가 있다면 추가로 노력이 더 든다는 것을 은유한 개념이다.


마틴 파울러는 2009년 그의 블로그에서 TechnicalDebtQuadrant를 제시하였다. 파울러는 아키텍처 패턴, 리팩토링 등으로 유명한 영국의 소프트웨어 개발자이면서 엔지니어, 저자, 강연자이다. 또한 소프트웨어 개발자 천국으로 유명한 소프트웨어 회사인 쏘트웍스(ThoughtWorks)에서 일하고 있다, 소프트웨어 개발과정에서 심어진 부주의는 ‘빠른 구현’이라는 효과는 나타낼 수도 있지만 결국에는 ‘유지보수 노력 증가’라는 대가를 치루게 된다는 점을 설명하면서, 기술 부채의 중요성을 강조했다.

술 부채는 소프트웨어 개발 과정에서 불가피하게 발생한다. 소프트웨어의 기능을 먼저 사용해보고 요구사항을 확인하기 위해서, 빠르게 개발할 필요가 있다. 디자인 원칙, 코딩 규칙 등을 지키는 것보다는 시간을 더 중요하게 생각하고 개발하기 때문이다

투이톡_기술부채_2.jpg  
[그림 1] 마틴파울러의 기술 부채 사분면 / 자료원: https://www.productplan.com/glossary/technical-debt/

소프트웨어는 대부분 기술 부채를 갖고 있다. 대부분의 기업과 조직의 소프트웨어 예산은 개발보다 유지보수 분야가 더 크다. 기술 부채는 활용하기에 따라서 애자일 소프트웨어 개발의 촉매 역할을 하기도 하지만 관리하지 않고 방치해 둔다면 다음과 같은 문제가 발생한다.

유지보수 시간이 오래 걸린다. 소프트웨어는 오랜 기간 변경을 반복하면 스파게티 코드가 된다. 비즈니스 요구사항을 반영하기가 점점 더 어려워진다. 심지어는 어느 곳을 변경해야만 되는지를 알 수 없는 경우도 있다.

유지보수 비용이 증가한다. 오랫동안 시스템을 담당하고 있는 사람 또는 조직이 아니면 다룰 수 없는 소프트웨어가 되어 버린다. 기술 부채는 주위를 부채화시키는 특징이 있다. 개인 또는 기업의 금융 부채도 갚아 나가지 않으면 점점 늘어나는 것과 비슷하다.

비즈니스 경쟁력을 해친다. 기술 부채가 지나치게 커지면, 개발자들은 포기 상태가 된다. 자신이 거대한 블랙박스를 다루고 있다는 생각에 새로운 시도를 할 엄두를 내지 못한다. 보다 심각한 것은 비즈니스에서 만들어낸 새로운 상품과 서비스를 적용하는 것이 불가능한 상태가 된다는 점이다.

기업 파산으로 이어질 수 있다. 금융부채가 커지면 지급해야하는 금융 이자의 규모도 늘어난다. 이자 규모가 커져서 더 이상 이자를 낼 수 없게 된다면, 파산하게 된다. 기술 부채도 마찬가지이다. 기술 부채 규모가 일정 수준을 넘어서면 더 이상 기술 부채를 해결할 수 없는 수준이 된다. 점점 증가하는 기술 노력을 기업이 감당할 수 없게 되면, 비즈니스는 파국의 상태가 된다.

투이톡_기술부채_3.jpg
[그림 2] 금융 부채와 기술 부채

 

애자일과 기술 부채

디지털 시대는 개념의 빠른 형상화를 필요로 한다. 비즈니스 요구사항을 확정하고 소프트웨어를 개발하는 것이 아니라, 소프트웨어가 모습을 갖추어 가면서 비즈니스 방식도 결정되는 것이다. 빠르고 빈번한 소프트웨어 출시가 당연한 것으로 받아들여지고 있는 이유이다. 소프트웨어를 빠르게 출시한다는 것은’ Time to Opportunity’ 를 줄일 수 있다는 효과가 있다.


빠른 개발의 효과는 오래 가지 않는다. 수 주일이 지나면 소프트웨어 품질 수준이 중요하게 된다. 낮은 품질의 소프트웨어와 높은 품질의 소프트웨어와의 활용 효과와 도입 비용 차이는 점점 더 벌어지게 된다. 빠른 출시를 위해서 품질을 희생한 후 그 비용을 지불하는 기간으로 접어드는 셈이다. 통상 소프트웨어 운영 기간은 개발 기간의 열 배 이상이다. 또한 소프트웨어 개발자 수보다 소프트웨어 사용자 수가 훨씬 더 많다.

애자일 개발을 위해 ‘’지저분한 코드(messy code)’ 를 허용하는 것은 필요하다. 애자일 개발 이후에는 리팩토링 등을 통한 코드 클리닝을 해야 한다.

투이톡_기술부채_4.jpg  
[그림 3] 애자일 개발과 기술 부채 / 자료원: https://martinfowler.com/articles/is-quality-worth-cost.html

 

디지털 경제의 기술 부채

디지털 경제는 디지털 기술을 활용한 경제를 뜻한다. 인공지능, 빅데이터, 클라우드, 사물인터넷 등 다양한 디지털 테크놀러지가 개별 기업의 경쟁력을 좌우할 뿐만 아니라 산업을 파괴하기도 한다. 디지털 테크놀러지의 발전 수준 그리고 산업에서 적용 수준을 따라잡지 못하면 기업이나 기관은 기술적 이유로 도태될 것이다.

기술 부채의 확장된 개념은 도입되어야 할 기술을 따라잡고 있지 못할 때 발생하는 비용을 뜻한다. 클라우드 환경에서 오픈소스를 이용하여 시스템을 구성한 경우와 기존 메인프레임에 상용 소프트웨어로 시스템을 구성한 경우의 유지보수 비용 차이는 상당히 큰 수준으로 벌어지고 있다. 또한, 새로운 기술의 도입과 적용 수준도 오픈소스가 더 빠른 편이다. 기술 도입에 뒤떨어진 기업은 더 많은 비용을 지불해야 하고, 새로운 기능 적용도 더 늦게 된다.

디지털 기술 부채가 위험한 수준으로 확대되는 것을 예방하는 것이 우선과제이다. 과거에 IT는 아웃소싱 대상으로 분류되기도 했지만, 지금은 내부에 디지털 기술 역량을 갖추는 것은 필수이다. 디지털 기술의 진화와 업계의 적용 수준을 모니터링하면서 내부의 디지털 기술 도입 및 확산 어젠더를 관리해주어야 한다. 더 나아가서, 외부의 기술기업 생태계와 함께 오픈 이노베이션을 일상적으로 추진해야 한다.

투이톡_기술부채_5.jpg  
[그림 4] 디지털 시대의 기술 부채

- 끝 -

댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.