웹 개발에서 git와 eslint를 사용하게 된 이유는 무엇일까?

Maliethy·2022년 4월 14일
0

실무에서는 git을 익숙하게 사용하고 프로젝트 초반에 eslint 설정은 필수라고 들어왔다. 그래서 사용법을 익히고 공부하는데 급급했지만 왜 이러한 도구들을 사용해야하는가에 대한 고민은 해보지 못했던 것 같다. 이번 주제를 고민하면서 그 필요성이 등장한 이유들을 중점적으로 알아보고 싶었다.

먼저 소프트웨어 개발에 있어서 형상관리(Software configuration Management) 도구가 등장하게 된 이유가 궁금했다. 내가 웹개발을 공부하기 시작할 때는 이미 git 사용이 보편화되었지만 과연 git과 같은 형상관리도구가 등장하기 전에는 소프트웨어 개발이 어떤 식으로 진행되었을까?

형상 관리 프로그램이 대중적이지 않던 시절에는 파일 서버를 기반으로 소스 코드, 리소스 등을 관리하였습니다. 이러한 파일 서버 기반의 버전 관리는 다음과 같은 심각한 문제를 야기합니다.

  • 파일이 삭제될 경우 복구할 방법이 없다. 파일이 삭제되는 경우를 대비해서 백업을 해두지만 시점 차이로 인한 데이터 손실은 피할 수 없다.
  • 하나의 파일을 여러 사람이 동시에 작업할 수 없다.
  • 이전 데이터로 복구할 수 없다. 예를 들어 소스 코드 작성 중에 이전 소스 코드로 되돌아가는 것이 불가능하다. 이런 상황을 대비해서 소스 코드를 백업하거나 소스 코드에 과거 이력 코드를 주석으로 남겨놔야 한다.

왜 형상 관리 도구를 사용해야 할까?

나는 전 회사에서 기획자분과 협업할 때 파일 서버 기반으로 리소스를 공유했었다. 예를 들면 홈페이지 수정이 필요한 부분을 기획자님이 pdf로 정리해 이메일이나 카카오톡으로 전달해주시는 방식이다. 이런 식의 파일에 기반한 협업은 pdf가 여러 버전으로 수정되었는데 각 작업자가 해당 작업하는 시점이 서로 맞지 않으면 각자 다른 버전의 파일을 기반으로 소통할 확률이 커지고 그렇게 불필요한 시간낭비를 하게 된다. 또 여러 사람이 한 가지 프로젝트에 대해 병렬적으로 기능들을 담당했다면 추후 프로젝트 완성 전에 서로 공유하고 합치는데 문제가 발생할 것이다.

소프트웨어는 무형물이기때문에 눈에 보이지 않는 상품의 제작은 통제가 어렵다. 하나의 프로젝트를 만들기 위해 달성해야하는 작은 단위의 task들을 서로 연결시키고 개발과정을 추적하기 어렵다면 관련 작업자들이 프로젝트의 진행사항을 전체적으로 파악하기 어려워질 것이다. 이렇게 해당 프로젝트에 대한 통제와 관리가 어려워진다면 소프트웨어에 대한 무절제한 변경이 발생할 수도 있을 것이다.

이러한 파일 서버 기반 개발 관리의 문제점을 해결하기 위해 개발된 형상 관리 도구는 다음과 같은 장점을 가지고 있다.

  • 소스코드의 변경이력을 관리할 수 있어서 추적성이 높다.
  • 배포가 편리하다.
  • 여러 사람이 동일한 소스코드를 공유해 개발할 수 있으며 공유할 때 생기는 버전 충돌 문제 등을 해결할 수 있다.
  • 장애 혹은 기능상 필요할 때 이전 버전이나 Baseline으로 소프트웨어를 되돌릴 수 있다.

출처: https://taetae0079.tistory.com/m/24

**Git-flow 전략을 설명하는 다음 이미지처럼 프로젝트를 배포할 때마다 이루어지는 병렬적인 작업들을 효과적으로 관리하는데 형상관리도구는 프로젝트를 진행하면서 발생할 수 있는 여러 상황들을 유연하고 일관성있게 대처할 수 있게 해준다.**

소프트웨어를 개발할 때 기술적인 부분을 담당한 엔지니어들은 코드를 기반으로 협업한다. 특히 코딩 스타일에는 정답이 없기 때문에 서로 자신이 맞다고 생각하는 스타일이 있을 것이고 이렇게 생각이 다양한 여러 사람이 같이 코딩을 하면 다양한 스타일들의 차이가 발생할 수밖에 없다. 모두가 만족할만한 코딩 스타일을 찾는 일은 소모적인 논쟁으로 치우치기 쉽다. 어찌보면 사소한 문제이지만 매일 코드를 보고 작업해야하는 엔지니어들에게는 중구난방식의 코딩 스타일은 개발 경험을 부정적으로 만들고 다른 사람이 작성한 코드를 유지보수를 할 때도 시간낭비를 발생시킬 수 있을 것 같다.

이러한 문제를 해결하기위해 등장한 도구 중 자바스크립트의 코드와 코딩 스타일을 점검해주는 도구로는 ESLint 외에도 JSHint, JSLint, JSCS 등이 있다. 그중 ESLint가 뜬 이유는 바로 확장성 때문이라고 한다. 다양한 플러그인을 사용할 수 있기 때문에 새로운 규칙을 추가할 수 있고, 손쉽게 다른 회사나 사람의 설정을 도입할 수 있다는 편의성을 제공한다.(출처: **ESLint - zerocho blog)

이번 주제를 고민하며 다양한 자료들을 접하며 git과 eslint에 익숙해지는 것이 소프트웨어를 개발한다는 목표를 향해 여러 엔지니어들과 함께 협업할 때 얼마나 많은 편의성을 제공해주는지 다시 생각해보게 되었다. 이러한 도구들을 사용함으로써 소프트웨어 개발 시 발생할 수 있는 다양한 문제들에 효율적으로 대처할 수 있다면 러닝커브가 높더라도 많은 시간과 노력을 투자할 만한 충분한 가치가 있다는 것도 납득할 수 있게 되었다.

profile
바꿀 수 있는 것에 주목하자

0개의 댓글