[코딩 마을 방범대] 북 스터디 10회

woodstock·2024년 2월 8일
post-thumbnail

24.02.08 (목)

학습구간 및 정리본

질문과 답변

1. 모노레포

❓ 모노레포의 장단점을 서술해주세요.

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

모노레포의 장단점을 서술해주세요.

나의 답변

모노레포의 장점

1. 코드 중복 감소

여러 프로젝트를 하나의 레포지토리에서 관리함으로써 Lint, CI/CD 등의 개발 환경 설정을 통합적으로 관리할 수 있습니다. 이는 불필요한 코드의 중복을 줄여줍니다.

2. 효율적인 의존성 관리

공통 모듈을 동일한 프로젝트 내에서 관리함으로써 별도의 패키지 관리자를 통한 모듈 게시가 필요 없습니다. 이를 통해 기능의 변화를 쉽게 추적하고 의존성을 보다 효율적으로 관리할 수 있습니다.

3. 일관된 개발 환경

모든 프로젝트와 모듈이 동일한 도구와 설정을 공유함으로써 일관된 개발 환경을 유지할 수 있습니다.

4. 팀 간의 협업 용이성

하나의 레포지토리에서 작업함으로써 다른 팀이나 프로젝트와의 협업이 용이해집니다. 코드 변경 사항과 의존성에 대한 영향을 쉽게 파악할 수 있습니다.


모노레포의 단점

1. 레포지토리 크기 증가

시간이 지남에 따라 레포지토리의 크기가 커질 수 있으며, 이는 관리와 성능에 영향을 줄 수 있습니다.

2. 소유권 및 권한 관리의 복잡성

하나의 레포지토리에 다양한 이해관계가 얽혀 있을 경우, 소유권과 권한 관리가 복잡해질 수 있습니다. 각 프로젝트나 모듈의 소유권을 명확히 정의하고 규칙을 설정하는 추가적인 과정이 필요합니다.

3. 빌드 시간 증가

레포지토리의 크기가 커질수록 빌드 시간이 증가할 수 있으며, 이는 개발 효율성을 저하시킬 수 있습니다.

4. 툴링 및 인프라 요구사항 증가

대규모 모노레포를 효율적으로 관리하기 위해서는 고급 툴링 및 인프라가 필요할 수 있습니다. 이는 비용과 복잡성을 증가시킬 수 있습니다.


모노레포 전략은 프로젝트의 규모, 팀 구성, 개발 문화 등 다양한 요소를 고려하여 적절하게 선택해야 합니다.


2. 앰비언트 타입 선언의 활용

❓ 앰비언트 타입 선언은 어떻게 활용되는지 사례를 들어 설명해주세요.

값을 포함하는 일반적인 선언과 구별하기 위해 .d ts 확장자를 가진 파일에서 하는 타입 선언을 앰비언트(ambient) 타입 선언이라고 부릅니다.

❓ 앰비언트 타입 선언은 어떻게 활용되는지 사례를 들어 설명해주세요.

❓ 앰비언트 타입 선언을 위해 사용되는 키워드는 무

나의 답변

💡 앰비언트 타입 선언은 외부 라이브러리나 환경에 대한 타입 정보를 제공하는 데 주로 사용됩니다.

  • 자바스크립트 라이브러리의 API를 타입스크립트에서 사용할 때, 해당 API의 타입 정보가 없다면 .d.ts 파일에 타입 선언을 작성하여 타입스크립트가 인식하게 할 수 있습니다.
// myLib.d.ts
declare module 'myLib' {
  export function calculate(input: string): number;
}

  • 이미지나 CSS 파일과 같은 비스크립트 자원을 타입스크립트 모듈로 사용하기 위해 declare module을 사용하거나, 전역 객체에 새로운 속성을 추가할 때 declare global을 사용하여 해당 속성의 타입을 선언할 수 있습니다.
// typings.d.ts
declare module '*.jpg';
declare module '*.png';
declare module '*.svg';

// 사용
import logo from './logo.png'; // logo 변수는 이제 해당 이미지의 경로를 가지고 있습니다.

// global.d.ts
declare global {
  interface Window {
    myCustomProperty: string;
  }
}

💡 declare


3. 앰비언트 타입 선언의 오사용

❓ 앰비언트 타입 선언을 잘못 사용할 경우 생길 수 있는 문제점은 무엇인가요?

.d.ts를 가진 파일에서 하는 타입 선언을 앰비언트 타입 선언이라고 하는데요. 이러한 앰비언트 타입 선언을 하게 되면 어딘가에 해당 자바스크립트 값이 존재함을 선언하게 되어 전역적인 의미를 지니게 됩니다. 이와 연관 시켜 앰비언트 타입 선언을 잘못 사용할 경우 생길 수 있는 문제점은 무엇일지 간략하게 설명해주세요.

나의 답변

1. 전역 범위의 오염

앰비언트 타입 선언은 전역 범위에 영향을 미치며, 이로 인해 프로젝트 전반에 걸쳐 의도치 않은 영향을 줄 수 있습니다.

예를 들어, 하나의 파일에서 선언된 앰비언트 타입이 다른 파일에서도 영향을 미치게 되어 혼란을 야기할 수 있습니다.

2. 의존성 관리의 어려움

앰비언트 타입은 명시적인 import나 export가 없이 전역적으로 사용됩니다.

이 때문에 코드의 의존성 관계가 명확하지 않아, 어떤 타입이 어디서 정의되었는지 추적하기 어렵고 이는 프로젝트의 유지보수를 어렵게 만듭니다.

3. 충돌 및 혼란

서로 다른 파일 또는 라이브러리에서 같은 이름으로 앰비언트 타입을 선언할 경우, 이들 간의 충돌이 발생할 수 있습니다.

이는 예상치 못한 버그를 유발하고, 어떤 선언이 실제로 적용되는지 파악하기 어렵게 만듭니다.

4. 유지보수의 복잡성

앰비언트 타입 선언이 프로젝트의 여러 곳에서 이루어질 경우, 특히 큰 프로젝트에서는 이러한 선언들을 관리하고 추적하는 것이 매우 복잡해집니다.

profile
해내는 사람

0개의 댓글