배운 것

기술 부채란 무엇일까?

세발낙지 2022. 11. 29. 17:20

🤣  이번 그룹 프로젝트에서 웹 소켓을 도입하여 소켓 서버를 구현하려고 하였다. 기술 스택까지 결정하고, 기본적인 구조를 결정한 후 일부 기능의 개발마저 진행된 상태였다. 그러나, 멘토링 중 웹 소켓 서버에 대해서 질의를 하였고, 현재 우리가 구현하려고 하는 서비스에서 과연 웹소켓 서버가 필요할까에 대해서 의문을 가지게 되었다.
  그 후, short polling, long polling, sse, websocket 등 여러 기술에 대한 상호 비교가 부족하다는 판단을 내릴 수 있었고, 이것을 다시 찾아보는 중이다. 어느정도 개발을 진행했다가 결과물 포기를 고려하고 다시 시작점으로 돌아가서 되돌아보는 과정을 진행하면서, 얼핏 들어보았었던 기술 부채라는 말과 맞닿아 있는 부분이 있어서 이에 대해 찾아보려 한다.

기술 부채

  기술 부채라는 말이 있다. 일반적인 부채가 이자를 내고 돈을 쓰는 시점을 당기는 것처럼 기술 부채는 기술적으로 해결되어야 할 문제들을 뒤로 미루고, 비즈니스적인 문제를 해결하는 시점을 당기는 것이다.

기술 부채의 예를 들자면 다음과 같은 것이 있을 것이다.

  • 설계를 문서로 남기지 않는다.
  • 유닛 테스트를 작성하지 않는다.
  • 반복되는 일을 자동화하지 않는다.

  마치 부채에 이자를 내야하는 것처럼, 기술 부채에도 비용이 있다. 비즈니스적인 문제는 바로 해결되지만, 앞으로 변경 사항이 생기거나 리팩터링을 진행하는 등의 작업이 필요하게 되면 되려 더 큰 과제가 생기는 것이다. 또한, 기술 부채는 빌리는 사람과 갚는 사람이 다를 수도 있다. 내가 갚을 수도 있지만, 나의 동료가 갚게 될 수도 있는 것이다.

  기술 부채에 이런 문제가 있다면, 그냥 기술 부채를 만들지 않으면 되는 게 아닐까? 물론 그럴 수 있다면 기술 부채를 만들지 않는 것이 가장 좋겠지만, 이것도 현실적으로 어려운 일이다. 기술 부채를 피할 수 없는 예시는 다음과 같다.

  • 첫째, 개발자의 역량으로 인한 기술 부채가 있을 수 있다.
    • 이제 막 개발을 시작한 사람이 최대한 깔끔하게 코드를 작성한다고 하더라도, 시니어 개발자의 눈에는 지저분한 코드로 보일 수 있다. 또, 남이 작성한 코드 뿐만 아니라 스스로 작성한 코드일지라도 나중에 다시 보게 된다면 지저분한 코드로 보일 수 있다.
  • 둘째, 기술의 변화로 인해 기술 부채가 생길 수 있다.
    • 단적인 예시로 jQuery를 들 수 있다. 많은 코드들이 jQuery로 작성되었지만 React나 Vue.js가 대세가 되기 시작하면서 많은 프로젝트가 React와 Vue.js로 작성되었을 것이고, 그 과정에서 jQuery로 작성되었던 코드들은 기술 부채가 되었을 것이다.

  물론 예시들 이외에도 다양한 이유로 기술 부채가 발생할 것이다. 그러나, 기술 부채를 무턱대고 쌓다보면 일반 부채처럼 부도가 나는 상황으로 악화될 수 있다. 도저히 손을 댈 수 없는 시스템에 장애가 발생하기 시작하는 것이다.

  이런 기술 부채를 해결하는 방법은 부채를 천천히 갚아나가는 방법도 있겠지만, 부채의 발생을 줄이는 것 또한 훌륭한 접근 방법이 될 것이다. 다음은 기술 부채의 발생을 줄이는 방법의 예시이다.

  • 첫째, 개발자들 사이에서의 규율을 설정하는 것이다.
    • 혼자 개발을 할 때에는 문제가 없겠지만, 현실적으로 그런 일은 많지 않다. 만약 다른 사람들과 팀을 이루어 개발을 진행할 때, 합의된 규칙이 없다면 사람의 수만큼 다양한 코드가 작성될 것이고, 이는 곧 기술 부채가 될 수 있다.
  • 둘째, 테스트 코드를 작성하는 것이다.
    • 많은 기술 부채는 리팩터링을 통해 해결할 수 있지만, 결과의 변경이 없이 기존의 코드를 작성한다는 것은 꽤나 어려운 일이다. 지저분한 코드는 일부를 수정했을 때 생각하지 못했던 곳에서 버그가 발생하기도 하고, 서비스 전체가 먹통이 될 수도 있다. 이런 문제가 기술 부채를 해결할 수 있는 리팩터링의 비용을 더 높게 하는데, 이걸 해결하기 위해서 테스트 코드를 작성할 수 있다. 그 때 그 때 싼 값에 기술 부채를 해결할 수 있는 기반을 닦는 작업인 것이다.

  물론 기술 부채가 무조건적으로 안 좋은 것은 아니다. 기업이 부채만 갚는 것에 몰두한다면, 시장에서 도태되고 말 것이다. 반대로 기업이 부채를 전혀 신경쓰지 않는다면, 이자를 내지 못해 파산에 이를 것이다. 어차피 개발을 하다 보면, 기술 부채는 피할 수 없는 것이다. 기술 부채를 적정한 수준으로 유지하면서 성장의 원동력으로 삼을 수 있어야 할 것이다.

References

 

'배운 것' 카테고리의 다른 글

WebAuthn, Passkey로 로그인하기  (1) 2024.01.04
가운데를 말해요  (0) 2023.03.29
DAY01 - 학습정리  (0) 2022.07.18
미확인 도착지  (0) 2022.06.08
자바스크립트의 this란?  (0) 2022.06.06