본문 바로가기

프로젝트 관리 및 자동화 도구/Nx

[Nx] Nx란?

728x90

🧩 Nx란 무엇이고 왜 사용하는가? (Why Nx?)


Nx가 등장한 이유

Nx는 개발자들이 프로젝트를 설정하고 유지 관리하는 과정에서 도구와 프레임워크를 통합하는 데 어려움을 겪는 문제를 해결하기 위해 만들어졌습니다.

  • 로컬 개발 환경조직 전체로 확장 가능한 시스템을 구축하는 것은 쉽지 않음.
  • 빌드 툴 설정, 빠른 CI 구성, 코드베이스 유지 관리와 같은 작업이 점점 복잡해짐.
  • Nx는 이를 쉽게 적용하고 확장 가능하게 만들기 위해 등장.

🛠 Nx의 주요 기능

기능설명

속도 향상 빌드, 테스트 등 작업 속도를 로컬과 CI에서 모두 개선
자동화된 도구 통합 다양한 도구와 프레임워크를 쉽게 통합함
코드 일관성 및 품질 보장 커스텀 제너레이터린트 규칙으로 코드 품질 유지
자동 코드 마이그레이션 사용 중인 프레임워크와 도구를 자동으로 최신 상태로 유지

➡️ Nx는 점진적으로 도입 가능하며, 필요한 기능만 선택적으로 사용할 수 있음.
**플러그인(Nx Plugins)**을 사용할 수도 있고, 필요하지 않다면 사용하지 않아도 됨.


🎯 Nx가 해결할 수 있는 문제들

1️⃣ 기존 프로젝트의 빌드 및 테스트 속도 향상
2️⃣ 새 프로젝트를 빠르게 스캐폴딩 (Scaffold)
3️⃣ 새로운 도구(Storybook, Tailwind 등)를 손쉽게 통합
4️⃣ 일관된 코드 스타일과 품질 유지
5️⃣ 자동 코드 마이그레이션으로 워크스페이스 최신화


🧱 Nx의 아키텍처

Nx는 **모듈형(modular)**으로 설계되어 필요한 기능만 사용할 수 있습니다.

구성 요소설명

Nx Package 기본적인 기능 제공: 작업 실행(task running), 캐싱(caching), 코드 생성(code generation), 코드 마이그레이션
Nx Plugins 특정 기술 스택에 대한 지원 제공: 예) @nx/react, @nx/cypress
Devkit Nx 플러그인을 쉽게 만들 수 있도록 도와주는 유틸리티 모음
Nx Console VSCode, IntelliJ, VIM에서 Nx 명령어를 시각화하고 자동완성 기능을 제공

➡️ 플러그인은 Nx의 기본 기능 위에 추가되는 NPM 패키지로, 특정 기술(React, Angular, Cypress 등)을 지원하고, 도구 통합을 쉽게 만듦.


⚙️ Nx가 CI 파이프라인을 어떻게 개선하는가?

Nx는 로컬 개발뿐 아니라 CI/CD 파이프라인에서도 큰 이점을 제공합니다.

기능설명

Affected Commands PR에서 변경된 작업만 실행하여 불필요한 빌드와 테스트를 줄임
Nx Replay (Remote Caching) 로컬 개발 환경CI 환경 간에 작업 캐시 공유
Nx Agents (Task Distribution) 작업을 여러 에이전트에 분산 실행하여 CI 속도 개선
Nx Atomizer (e2e Task Splitting) 큰 e2e 테스트 작업을 작은 작업 단위로 자동 분할하여 병렬 실행
Flaky Task Detection **Flaky Task(불안정한 작업)**를 감지하고 자동으로 재실행

➡️ Nx Cloud는 GitHub, GitLab, Bitbucket, Azure직접 통합할 수 있음.


🛠 기존 프로젝트에 Nx 도입 방법

기존 프로젝트에 Nx를 쉽게 추가할 수 있도록 명령어를 제공함.

npx nx@latest init

 

➡️ 이 명령어를 실행하면 프로젝트에 Nx 패키지가 추가되며, package.json 스크립트를 Nx 명령어로 실행할 수 있음.

점진적 도입 전략:

1️⃣ Nx 패키지 추가
2️⃣ 기존 스크립트를 Nx 명령어로 실행 (nx run)
3️⃣ 필요에 따라 Nx 플러그인 추가 (React, Jest, Cypress 등)
4️⃣ 자동화 도구 통합코드 마이그레이션 적용


🧩 Nx 요약

항목설명

Nx의 목적 도구 및 프레임워크 통합, 빌드 및 CI 속도 향상, 코드 품질 유지
기본 기능 작업 실행, 캐싱, 분산 실행, 코드 생성, 코드 마이그레이션
Nx Plugins 특정 기술 스택에 대한 지원 (React, Angular, Cypress, Jest 등)
CI 개선 기능 PR에 영향받은 작업만 실행, 캐시 공유(Nx Replay), 분산 실행(Nx Agents), e2e 분할(Nx Atomizer), 불안정 작업 재실행(Flaky Detection)
기존 프로젝트 적용 방법 npx nx@latest init 명령어로 기존 프로젝트에 쉽게 도입 가능

🚀 Nx를 사용하는 이유 (Why Nx?)

Nx는 다음과 같은 이유로 대규모 프로젝트에서 매우 유용합니다:

빌드 및 테스트 속도 향상
도구 통합 및 자동화
코드 품질 유지 및 일관성 제공
자동 코드 마이그레이션으로 프로젝트 최신화
CI/CD 파이프라인 최적화

특히, 대규모 Monorepo단일 프로젝트에서도 적용 가능하며, 필요에 따라 점진적으로 기능을 확장할 수 있어 유연한 도입이 가능합니다.

728x90