TypeScript_STUDY 12장 _ 타입스크립트 프로젝트관리 [ 12.3 타입스크립트 마이그레이션 | 12.4 모노레포 ]

zeroha·2024년 12월 30일
0

TypeScriptStudy

목록 보기
31/32
post-thumbnail

12.3 타입스크립트 마이그레이션

.
.
.

1. 타입스크립트 마이그레이션의 필요성

자바스크립트 코드를 타입스크립트 코드로 변환하는 것은 현재 비즈니스 로직에 맞지 않는 인터페이스만 추가하는 작업에 불과

상황에 따라 비즈니스 요구 사항의 변화를 반영할 수 있는 새로운 설계 기반으로 타입 작성하는 . 게 효율적임.

신규 프로젝트로 바꾸는 게 나을지 단순히 마이그레이션하는 게 나을지 신중하게 따져봐야 함.


2. 점진적인 마이그레이션

작은 부분부터 시작하여 점타 범위를 넓혀가며 마이그레이션 진행해야 함.
-> 진입 장벽이 낮아짐.

하지만
단순히
allowJS : tue,
noImplicityAny : false
설정한 채 무기한으로 마이그레이션 미루는 건 지양해야 함.


3. 마이그레이션 진행하기

1) 타입스크립트 환경 설정, 빌드 파이프라인에 타입스크립트 컴파일러 통합.
allowJS (자바스크립트 파일을 컴파일할 때 사용하는 옵션): tue,
noImplicityAny (암시적any타입이 있을 때 오류 발생시키는 옵션): false
설정

2) 작성된 자바스크립트 파일을 타입스크립트 파이로 변환
필요한 타입과 인터페이스를 하나씩 정의하며 함수 시그니처 추가

3) 점검하기

12.4 모노레포

여러 프로젝트 관리 경우
일반적으로 별도의 레포지토리 생성하여 관리해야 함.

이때, 프로젝트마다 공통된 요소 찾아 통합하여 관리

.
.
.

1. 분산된 구조의 문제점

만약 프로젝트에 필요한 기능이 다른 프로젝트에 존재한다면 단순히 해당 기능을 복하여 붙여넣기 함으로써 바르게 구현가능.

: 개발시간 아낄 수 있어도 프로젝트 관리 측면에서 어려움

여러 프로젝트에 동일한 코드를 복사 붙여넣기 후 기능 확장을 위해 수정해야 할 때 프로젝트의 개수만큼 반복적인 수정 작업 해야 함.

특정 라이브러리에 문제가 생기거나 더 이상 사용되지 않는 경우에도 마찬가지로 모든 프로젝트에서 일일히 대응해야 함.

-> 장기 관리 어려워짐. -> 생산성 떨어뜨림.


2. 통합할 수 있는 요소 찾기

먼저 프로젝트 내에서 공통으로 통합할 요소 찾아야 함.

clipboard,date,logger,validation 파일은 통합할 수 있는 파일
( 물론 각 파일의 소스코드가 같지 않다면 통합을 위해 일부 수정해야 함. )


3. 공통 모듈화로 관리하기

소스코드를 수정한 다음에 모듈화를 통해 통합해야 함.

모듈을 통해 코드 재사용 가능
특정 기능의 변경 필요할 때 해당 모듈의 소스코드만 수정하면 되기 때문에 유지보수 쉬워짐.

만약 공통 모듈에 변경 발생한다면 ?
: 추가 작업이 필요할 수도 있음.
새로운 공통 모듈이 필요하다면 ?
: 새로운 레포지토리 생성, 개발환경 설정


4. 모노레포의 탄생

  • 모노레포
    : 버전 관리 시스템에서 여러 프로젝트를 하나의 레포지토리로 통합하여 관리하는 소프트웨어 전략.

이전에는 다양한 기능을 가진 프로젝트를 하나의 레포지토리로 관리하는 모놀리식 기법 주로 사용했음.( 코드 간의 직접적인 의존이 발생, 빌드 및 배포 등에서 효율적이지 못함 )

  • 장점
    : 하나의 레포지토리로 통합하여 관리
    Lint, CI/CD 등 개발 환경 설정도 통합적으로 관리
    -> 코드 중복 줄여줌.
    -> 별도의 패키지 관리자를 통해 모듈을 게시하지 않아도 됨.

  • 단점
    : 시간이 지나면서 레포지토리가 거대해질 수 있음.

따라서
각 프로젝트나 모듈의 소유권을 명확히 정의, 규칙을 설정해야 하는 과정이 별도로 필요함.


도서참조 : 우아한 타입스크립트 with 리액트
profile
하 영

0개의 댓글

관련 채용 정보