2020.01.10

운영 중단 없이 기술 부채를 줄이는 8가지 방법

John Edwards | CIO
급박하게 진행된 소프트웨어 개발 프로젝트에서 기술 부채가 발생하지 않을 가능성은 낮다. 애석하게도 호환성 및 성능 문제, 보안 격차 등을 비롯해 골치 아픈 예산 문제까지 얽혀 있는 기술 부채는 언젠가는 꼭 상환해야만 하는 대상이다. 

빠듯한 일정에 맞춰 중요한 프로젝트를 진행하더라도 기술 부채를 허용 가능한 수준으로 감소시킬 수 있다. 시간, 비용, 품질을 고려한 합리적인 절충을 시도하는 것이다. 기술 부채를 줄이거나 없애는 8가지 방법을 알아본다. 
 
ⓒGetty Images

1. 운영팀과 비즈니스팀이 나란히 움직여야 한다 
기술 부채의 발생 가능성을 줄이는 한 가지 방법은 프로젝트 기획 단계에서 IT 운영팀과 비즈니스팀을 모두 포함하는 것이다. 금융서비스 자문 회사 액츄얼라이즈 컨설팅의 사장 매트 수는 “이는 기획 과정에서 운영팀이 목소리를 내도록 한다. 이는 출시까지의 시간과 유지보수 비용 사이에서 절충을 가능하게 한다”라고 말했다. 

그는 이어서 “기술 부채가 언제 발생할지 그리고 어떤 기간이 필요한지를 확인하는 반복적인 회의에서 구체적인 결정을 내려야 한다. 이런 식으로 기술 부채를 관리하면 프로젝트가 끝나면서 리스크를 없앨 수 있게 될 것이다”라고 제안했다.

팀 차원에서 기술 부채를 통제하고, 프로젝트처럼 관리해야 한다고 IT 인력 및 기술 서비스 회사인 제네시스10의 CEO 할리 립먼은 충고한다. 그는 “팀 차원으로 관리할 때 조직은 기술 부채를 기억하고, 시간을 효율적으로 사용할 것이다. 특히 점진적인 개선에 집중해야 한다. 팀을 정렬하기 위해 각종 지표 사용을 비롯해 기술 부채를 우선시하도록 만드는 방안을 고려해라”라고 지적했다.

2. 주의 깊게 기획하고 현실적으로 예산을 세워라
기술 부채를 예방하려면 세심한 기획이 필요하다. 클라우드 컨택센터 제공업체 파이브9의 CTO 조나단 로젠버그는 “충분한 예산 확보와 동시에 개발 목표에 대한 명확한 요구사항과 비전은 엔지니어가 적절한 수준의 기술 부채만 발생시키게끔 한다”라고 설명했다.

의료기술 소프트웨어 개발업체 메드어큐티의 수석 소프트웨어 엔지니어 자만 조레스는 예상치 못한 기술 부채를 초래하는 요인에 대응하기 위해 프로젝트 초기에 ‘엔지니어링 예비비’ 예산을 확보해두라고 권고한다. 그는 “기술 부채를 최소화하거나 없앨 수 있는 가장 좋은 방법은 이를 프로젝트 기획과 견적에 포함시키는 것이다”라고 지적했다. 

기술 부채가 유일하게 유용한 상황도 있다고 스티븐스 공학연구소의 CIO 데이비드 도드는 보았다. 바로 기업이 기술 부채를 파악하고, 이를 전략적으로 미래 포지셔닝에 활용하는 순간이다. “예를 들자면 이는 어떤 조직이 신제품에 필요한 새로운 기술을 기다리거나, 시장을 변화시킬 완전히 새로운 시스템의 개발과 출시를 기획하는 등 의도적으로 큰 그림을 그리고 있을 때다. 하지만 그 이외에 기술 부채는 자원을 소모하도록 만들어 조직의 장기적인 이익을 훼손한다”라고 그는 설명했다.

3. 달성할 수 있는 목표를 세우고 결과를 측정하라
마감 압박은 어쩔 수 없는 현실이지만, 성급하게 개발된 소프트웨어는 기술 부채가 많을 수밖에 없다. 개발 속도를 높이기 위해 디자인 숏컷(design shortcuts)을 사용하려는 유혹을 뿌리쳐야 한다.

개발 플랫폼 제공업체 스쿠이드(Skuid)의 엔지니어링 부사장이자 CTO인 마이크 두엔싱은 “개발과 생산에 대응하기 위해 확장 가능한 솔루션을 설계하라”고 제안했다. 두엔싱은 최종 사용자의 요구사항을 이해하고 미래의 변화에 대한 필요성을 예상하는 것이 중요하다고 강조했다.

또한 비현실적으로 높은 디자인 목표를 설정하지 않는 편이 낫다고 충고한다. 그는 “규모가 큰 기능 솔루션을 시도하는 것은 바람직하지 않다. 규모를 좁혀 작은 솔루션을 늘려야 한다. 이는 개발팀이 디자인과 테스트를 할 충분한 시간을 할당해준다”라고 설명했다.

경영기술 훈련기관인 CTO 아카데미의 공동 설립자인 제이슨 노블은 모든 개발 팀원들에게 품질의 중요성을 강조하라고 권고한다. 그는 “이때 품질의 중요성이 모든 과정에 해당한다는 것을 그들에게 이해시켜라”라고 말했다.

또한 노블은 각 제품에 대해 측정 가능한 목표를 설정할 것을 충고한다. 그는 “현실적인 수준으로 설정하라. 여러 번 반복한 후에 더 지속할 수 있고 신뢰할 수 있는 코드로 새로운 기능에 영향을 주지 않고 기술 부채를 줄여야 한다”라고 제안했다.

노블은 품질 목표를 달성하기 위해 오픈소스 제품인 소나큐브(SonarQube)와 같은 정적 분석 도구를 사용할 것을 권장한다. 그는 “이러한 도구는 코드를 스캔해 품질에 대한 다양한 지표를 제공한다. 이는 워드 프로세서에서 사용되는 맞춤법 도구와 유사하다”라고 말했다.

4. 강력하면서도 유연한 토대를 구축하라 
프로젝트가 견고한 아키텍처 기반을 가졌는지 확인해야 한다. 두엔싱은 “토대가 열악하면 고칠 수 없는 허름한 집을 만들게 되며 이는 곧 역행을 촉발할 수 있다”라고 경고했다. 

잘 설계된 솔루션은 프로젝트를 더 빠르면서도 비용 효율적으로 업데이트할 수 있게 지원해 예상치 못한 기술 부채를 발생시킬 가능성을 줄여준다. 이와 관련해 팀 리더들은 거의 모든 프로젝트 계획이 초기에 가장 애매한 한편, 조직의 낙관적인 기대 하에 추진된다는 점을 명심해야 한다. 

직원 보상 시스템을 선보이는 유니레버의 스핀아웃 회사인 유플렉스리워드(uFlexReward)의 켄 차먼은 “기술 부채가 상세한 계획이나 엄격한 계약으로 리스크를 제거하는 것은 아니다. 해결책은 오히려 조직의 기대치를 보다 노련하게 관리하는 것에 가깝다”라고 주장했다.

그는 “유연성을 갖춘 느슨한 계획들을 사용하라. 이것은 기능을 배제하고 기술 부채를 발생시키면서까지 조직의 기대에 부응하려는 시도를 줄일 것이다”라고 충고했다.

5. '애자일'을 채택하라 
점점 더 많은 조직들이 애자일 소프트웨어 개발을 적용하고 있다. 애자일 개발 프로세스는 팀이 새 제품을 빠르고 반복적으로 만들고 출시할 수 있도록 지원함으로써 기술 부채를 피할 수 있게 해준다. 

도드는 “애자일 개발 프로세스는 새로운 제품과 성능을 더 빨리 그리고 단계적으로 구현한다”라며, 새로운 버전이 제공될 때마다 개선과 해결책이 나오므로 기술 부채가 증가할 가능성이 매우 낮다고 전했다. 

애자일 개발 프로세스를 통해 개발팀은 프로젝트가 수명을 갖는 동안에 결코 진정으로 끝나지 않으며, 완벽하지도 않다는 것을 인식할 수 있다. 도드는 “동시에 애자일을 통해 품질뿐만 아니라 기능도 목표로 하는 효율적인 개발에 초점을 맞출 수 있게 된다”라고 말했다. 

한 번에 모든 것을 제공하는 접근방식 대신 애자일 팀은 주기적으로 업그레이드를 진행할 수 있다. 도드는 “이는 제품의 업그레이드를 다소 원활하게 하고 사용자들이 큰 혼란을 피할 수 있도록 도와준다”라고 강조한다.  

6. 낡은 기술을 피하라
오래된 애플리케이션, 구식 기술, 이질적인 플랫폼과 프로세스는 조직을 기술 부채로 이끌 수 있다. 이는 필수적인 현대화 이니셔티브를 연기하는 결과로 이어지기 쉽다. 

DNS 및 트래픽 관리 기술 제공업체 NS1의 공동 설립자 겸 CEO 크리스 비버스는 “현대 비즈니스의 요구에 맞지 않는 시스템과 애플리케이션이 돈과 시간을 잡아먹는 기술 부채의 근본 원인 경우가 많다”라고 말했다. 오래된 자산과 접근방식은 보안 취약점이 많다. 또한 통합 및 자동화가 어렵기 때문에 업데이트가 불가능할 수 있다. 

비버스는 “시대에 뒤떨어진 코드로 구축된 레거시 애플리케이션을 관리할 인재를 찾는 것 역시 어려운 과제이다. 기껏해야 평균적인 성능을 제공하는 낡은 기술을 고집하는 것은 예산을 낭비할 뿐만 아니라 회사의 혁신 능력과 경쟁력 유지를 저해한다”라고 지적했다.

7. 사용 빈도가 낮은 자원은 제거하라 
기존 플랫폼과 애플리케이션의 사용 수준을 정기적으로 검토하면 기술 부채를 줄일 수 있다. 
AI와 기계어 컨설팅 업체 스몰스케일 AI의 수석 컨설턴트 롭 피터스체크는 “전혀 사용하지 않거나 거의 사용하지 않는 제품을 없애는 것만으로도 기술 부채를 없앨 수 있다”라고 주장했다.

기술 부채는 효율적인 퇴출 프로그램으로 감소될 수 있다. 많이 사용되는 필수적인 플랫폼과 애플리케이션에만 초점을 맞추면 된다. 레거시 툴이 아닐지라도, 사용자가 감소하는 비필수 제품이라면 제거를 고려한다. 지속적인 업데이트와 수정을 필요로 한다면 더욱 그렇다. 

“큰 조직에서 종종 어려운 부분은 단순히 모든 애플리케이션과 솔루션의 존재를 파악하는 것만이 아니라 그것들이 어떻게 쓰이는지도 확인하는 것이다”라고 피터스체크는 말했다.

8. 경고신호를 주의하라
조직은 기술 부채가 변곡점에 도달했을 때 나타나는 경고 신호에 주의를 기울여야 하며 이에 대한 조치를 반드시 취해야 한다. 주요 지표로는 광범위한 일회성 매뉴얼 변경, 부적절한 문서화, 다른 앱 또는 클라우드와의 통합 불량 등이 있다고 비버스는 지적했다. 

어느 정도의 기술 부채를 용인하는 것이 괜찮을 때는 소프트웨어를 빨리 출시하기 위해 완벽보다 속도를 중시하는 시점이다. 비버스는 “제품을 그냥 출시하는 게 필요한 경우도 있다. 추후 기술 부채를 상환할 것을 감안한 채 말이다”라고 말했다. ciokr@idg.co.kr



2020.01.10

운영 중단 없이 기술 부채를 줄이는 8가지 방법

John Edwards | CIO
급박하게 진행된 소프트웨어 개발 프로젝트에서 기술 부채가 발생하지 않을 가능성은 낮다. 애석하게도 호환성 및 성능 문제, 보안 격차 등을 비롯해 골치 아픈 예산 문제까지 얽혀 있는 기술 부채는 언젠가는 꼭 상환해야만 하는 대상이다. 

빠듯한 일정에 맞춰 중요한 프로젝트를 진행하더라도 기술 부채를 허용 가능한 수준으로 감소시킬 수 있다. 시간, 비용, 품질을 고려한 합리적인 절충을 시도하는 것이다. 기술 부채를 줄이거나 없애는 8가지 방법을 알아본다. 
 
ⓒGetty Images

1. 운영팀과 비즈니스팀이 나란히 움직여야 한다 
기술 부채의 발생 가능성을 줄이는 한 가지 방법은 프로젝트 기획 단계에서 IT 운영팀과 비즈니스팀을 모두 포함하는 것이다. 금융서비스 자문 회사 액츄얼라이즈 컨설팅의 사장 매트 수는 “이는 기획 과정에서 운영팀이 목소리를 내도록 한다. 이는 출시까지의 시간과 유지보수 비용 사이에서 절충을 가능하게 한다”라고 말했다. 

그는 이어서 “기술 부채가 언제 발생할지 그리고 어떤 기간이 필요한지를 확인하는 반복적인 회의에서 구체적인 결정을 내려야 한다. 이런 식으로 기술 부채를 관리하면 프로젝트가 끝나면서 리스크를 없앨 수 있게 될 것이다”라고 제안했다.

팀 차원에서 기술 부채를 통제하고, 프로젝트처럼 관리해야 한다고 IT 인력 및 기술 서비스 회사인 제네시스10의 CEO 할리 립먼은 충고한다. 그는 “팀 차원으로 관리할 때 조직은 기술 부채를 기억하고, 시간을 효율적으로 사용할 것이다. 특히 점진적인 개선에 집중해야 한다. 팀을 정렬하기 위해 각종 지표 사용을 비롯해 기술 부채를 우선시하도록 만드는 방안을 고려해라”라고 지적했다.

2. 주의 깊게 기획하고 현실적으로 예산을 세워라
기술 부채를 예방하려면 세심한 기획이 필요하다. 클라우드 컨택센터 제공업체 파이브9의 CTO 조나단 로젠버그는 “충분한 예산 확보와 동시에 개발 목표에 대한 명확한 요구사항과 비전은 엔지니어가 적절한 수준의 기술 부채만 발생시키게끔 한다”라고 설명했다.

의료기술 소프트웨어 개발업체 메드어큐티의 수석 소프트웨어 엔지니어 자만 조레스는 예상치 못한 기술 부채를 초래하는 요인에 대응하기 위해 프로젝트 초기에 ‘엔지니어링 예비비’ 예산을 확보해두라고 권고한다. 그는 “기술 부채를 최소화하거나 없앨 수 있는 가장 좋은 방법은 이를 프로젝트 기획과 견적에 포함시키는 것이다”라고 지적했다. 

기술 부채가 유일하게 유용한 상황도 있다고 스티븐스 공학연구소의 CIO 데이비드 도드는 보았다. 바로 기업이 기술 부채를 파악하고, 이를 전략적으로 미래 포지셔닝에 활용하는 순간이다. “예를 들자면 이는 어떤 조직이 신제품에 필요한 새로운 기술을 기다리거나, 시장을 변화시킬 완전히 새로운 시스템의 개발과 출시를 기획하는 등 의도적으로 큰 그림을 그리고 있을 때다. 하지만 그 이외에 기술 부채는 자원을 소모하도록 만들어 조직의 장기적인 이익을 훼손한다”라고 그는 설명했다.

3. 달성할 수 있는 목표를 세우고 결과를 측정하라
마감 압박은 어쩔 수 없는 현실이지만, 성급하게 개발된 소프트웨어는 기술 부채가 많을 수밖에 없다. 개발 속도를 높이기 위해 디자인 숏컷(design shortcuts)을 사용하려는 유혹을 뿌리쳐야 한다.

개발 플랫폼 제공업체 스쿠이드(Skuid)의 엔지니어링 부사장이자 CTO인 마이크 두엔싱은 “개발과 생산에 대응하기 위해 확장 가능한 솔루션을 설계하라”고 제안했다. 두엔싱은 최종 사용자의 요구사항을 이해하고 미래의 변화에 대한 필요성을 예상하는 것이 중요하다고 강조했다.

또한 비현실적으로 높은 디자인 목표를 설정하지 않는 편이 낫다고 충고한다. 그는 “규모가 큰 기능 솔루션을 시도하는 것은 바람직하지 않다. 규모를 좁혀 작은 솔루션을 늘려야 한다. 이는 개발팀이 디자인과 테스트를 할 충분한 시간을 할당해준다”라고 설명했다.

경영기술 훈련기관인 CTO 아카데미의 공동 설립자인 제이슨 노블은 모든 개발 팀원들에게 품질의 중요성을 강조하라고 권고한다. 그는 “이때 품질의 중요성이 모든 과정에 해당한다는 것을 그들에게 이해시켜라”라고 말했다.

또한 노블은 각 제품에 대해 측정 가능한 목표를 설정할 것을 충고한다. 그는 “현실적인 수준으로 설정하라. 여러 번 반복한 후에 더 지속할 수 있고 신뢰할 수 있는 코드로 새로운 기능에 영향을 주지 않고 기술 부채를 줄여야 한다”라고 제안했다.

노블은 품질 목표를 달성하기 위해 오픈소스 제품인 소나큐브(SonarQube)와 같은 정적 분석 도구를 사용할 것을 권장한다. 그는 “이러한 도구는 코드를 스캔해 품질에 대한 다양한 지표를 제공한다. 이는 워드 프로세서에서 사용되는 맞춤법 도구와 유사하다”라고 말했다.

4. 강력하면서도 유연한 토대를 구축하라 
프로젝트가 견고한 아키텍처 기반을 가졌는지 확인해야 한다. 두엔싱은 “토대가 열악하면 고칠 수 없는 허름한 집을 만들게 되며 이는 곧 역행을 촉발할 수 있다”라고 경고했다. 

잘 설계된 솔루션은 프로젝트를 더 빠르면서도 비용 효율적으로 업데이트할 수 있게 지원해 예상치 못한 기술 부채를 발생시킬 가능성을 줄여준다. 이와 관련해 팀 리더들은 거의 모든 프로젝트 계획이 초기에 가장 애매한 한편, 조직의 낙관적인 기대 하에 추진된다는 점을 명심해야 한다. 

직원 보상 시스템을 선보이는 유니레버의 스핀아웃 회사인 유플렉스리워드(uFlexReward)의 켄 차먼은 “기술 부채가 상세한 계획이나 엄격한 계약으로 리스크를 제거하는 것은 아니다. 해결책은 오히려 조직의 기대치를 보다 노련하게 관리하는 것에 가깝다”라고 주장했다.

그는 “유연성을 갖춘 느슨한 계획들을 사용하라. 이것은 기능을 배제하고 기술 부채를 발생시키면서까지 조직의 기대에 부응하려는 시도를 줄일 것이다”라고 충고했다.

5. '애자일'을 채택하라 
점점 더 많은 조직들이 애자일 소프트웨어 개발을 적용하고 있다. 애자일 개발 프로세스는 팀이 새 제품을 빠르고 반복적으로 만들고 출시할 수 있도록 지원함으로써 기술 부채를 피할 수 있게 해준다. 

도드는 “애자일 개발 프로세스는 새로운 제품과 성능을 더 빨리 그리고 단계적으로 구현한다”라며, 새로운 버전이 제공될 때마다 개선과 해결책이 나오므로 기술 부채가 증가할 가능성이 매우 낮다고 전했다. 

애자일 개발 프로세스를 통해 개발팀은 프로젝트가 수명을 갖는 동안에 결코 진정으로 끝나지 않으며, 완벽하지도 않다는 것을 인식할 수 있다. 도드는 “동시에 애자일을 통해 품질뿐만 아니라 기능도 목표로 하는 효율적인 개발에 초점을 맞출 수 있게 된다”라고 말했다. 

한 번에 모든 것을 제공하는 접근방식 대신 애자일 팀은 주기적으로 업그레이드를 진행할 수 있다. 도드는 “이는 제품의 업그레이드를 다소 원활하게 하고 사용자들이 큰 혼란을 피할 수 있도록 도와준다”라고 강조한다.  

6. 낡은 기술을 피하라
오래된 애플리케이션, 구식 기술, 이질적인 플랫폼과 프로세스는 조직을 기술 부채로 이끌 수 있다. 이는 필수적인 현대화 이니셔티브를 연기하는 결과로 이어지기 쉽다. 

DNS 및 트래픽 관리 기술 제공업체 NS1의 공동 설립자 겸 CEO 크리스 비버스는 “현대 비즈니스의 요구에 맞지 않는 시스템과 애플리케이션이 돈과 시간을 잡아먹는 기술 부채의 근본 원인 경우가 많다”라고 말했다. 오래된 자산과 접근방식은 보안 취약점이 많다. 또한 통합 및 자동화가 어렵기 때문에 업데이트가 불가능할 수 있다. 

비버스는 “시대에 뒤떨어진 코드로 구축된 레거시 애플리케이션을 관리할 인재를 찾는 것 역시 어려운 과제이다. 기껏해야 평균적인 성능을 제공하는 낡은 기술을 고집하는 것은 예산을 낭비할 뿐만 아니라 회사의 혁신 능력과 경쟁력 유지를 저해한다”라고 지적했다.

7. 사용 빈도가 낮은 자원은 제거하라 
기존 플랫폼과 애플리케이션의 사용 수준을 정기적으로 검토하면 기술 부채를 줄일 수 있다. 
AI와 기계어 컨설팅 업체 스몰스케일 AI의 수석 컨설턴트 롭 피터스체크는 “전혀 사용하지 않거나 거의 사용하지 않는 제품을 없애는 것만으로도 기술 부채를 없앨 수 있다”라고 주장했다.

기술 부채는 효율적인 퇴출 프로그램으로 감소될 수 있다. 많이 사용되는 필수적인 플랫폼과 애플리케이션에만 초점을 맞추면 된다. 레거시 툴이 아닐지라도, 사용자가 감소하는 비필수 제품이라면 제거를 고려한다. 지속적인 업데이트와 수정을 필요로 한다면 더욱 그렇다. 

“큰 조직에서 종종 어려운 부분은 단순히 모든 애플리케이션과 솔루션의 존재를 파악하는 것만이 아니라 그것들이 어떻게 쓰이는지도 확인하는 것이다”라고 피터스체크는 말했다.

8. 경고신호를 주의하라
조직은 기술 부채가 변곡점에 도달했을 때 나타나는 경고 신호에 주의를 기울여야 하며 이에 대한 조치를 반드시 취해야 한다. 주요 지표로는 광범위한 일회성 매뉴얼 변경, 부적절한 문서화, 다른 앱 또는 클라우드와의 통합 불량 등이 있다고 비버스는 지적했다. 

어느 정도의 기술 부채를 용인하는 것이 괜찮을 때는 소프트웨어를 빨리 출시하기 위해 완벽보다 속도를 중시하는 시점이다. 비버스는 “제품을 그냥 출시하는 게 필요한 경우도 있다. 추후 기술 부채를 상환할 것을 감안한 채 말이다”라고 말했다. ciokr@idg.co.kr

X