Search
Duplicate
🏥

기술 부채란?

: 워드 커닝햄이 처음 사용한 용어로 소프트웨어의 수준에 따라 운영 단계에서 쏟아야 하는 노력이 달라진다는 의미
: 개발자가 코딩 규칙을 지키지 않고 자신만의 방식으로 개발을 해도 작동은 함, 하지만 이런 경우 운영과정에서 유지보수에 더 큰 비용이 발생하는데
: 정상적인 소프트웨어라면 들지 않았을 비용이 추가로 발생하는 셈으로 금융 부채가 있으면 이자를 내야 하듯, 소프트웨어에 문제가 있으면 추가로 노력이 든다는 것을 은유한 개념

마틴 파울러의 기술 부채 사분면

: 소프트웨어는 대부분 기술 부채를 갖고 있다. 대부분의 기업과 조직의 소프트웨어 에산은 개발보다 유지보수 분야가 더 큼
: 기술 부채는 활용하기에 따라 애자일 소프트웨어 개발의 촉매 역할을 하기도 하지만 관리하지 않고 방치한다면 다음과 같은 문제들이 발생
1.
유지보수 시간이 오래 걸린다. ⇒ 오랜 기간 변경으로 인해 스파게티 코드가 되어 비즈니스 요구사항 반영이 어려워짐
2.
유지보수 비용이 증가한다. ⇒ 오랫동안 시스템을 담당하고 있는 사람 또는 조직이 아니면 다룰 수 없어짐
3.
비즈니스 경쟁력을 해친다. ⇒ 거대한 블랙박스를 다루고 있다는 생각에 새로운 시도를 할 엄두를 내지 못함
4.
기업 파산으로 이어질 수 있다. ⇒ 기술 부채 규모가 일정 수준을 넘어서면 더 이상 기술 부채를 해결할 수 없는 수준이 됨

애자일과 기술 부채

: 디지털 시대는 개념의 빠른 형상화를 필요로 함, 비즈니스 요구사항을 확정하고 소프트웨어를 개발하는 것이 아닌, 소프트웨어가 모습을 갖추며 비즈니스 방식도 결정되는 것
: 빠르고 빈번한 소프트웨어의 출시가 당연한 것으로 받아들여지고 있는 이유로 소프트웨어를 빠르게 출시한다는 것은 Time to Opportunity를 줄일 수 있다는 효과가 있음
: 빠른 개발의 효과는 오래가지 않음, 몇 일이 지나면 소프트웨어의 품질 수준이 중요하게 되는데, 낮은 품질의 소프트웨어와 높은 품질의 소프트웨어와의 활용 효과와 도입 비용
차이는 점차 벌어지게 됨, 빠른 출시를 위해 품질을 희생한다면 이후엔 그 비용을 지불해야한다. 통상 소프트웨어 운영 기간은 개발 기간의 열 배 이상
: 애자일 개발을 위해 ‘지저분한 코드’를 허용하는 것은 필요하지만 애자일 개발 이후에는 리팩토링을 통한 코드 클리닝을 해야 함