노트

Nx

Nx

인프라#tooling#ci · 연결된 개념 6개

쉽게 말하면

Nx는 큰 모노레포를 맡는 관리 회사 같아요. 바뀐 곳에 영향받는 프로젝트만 골라 돌려 CI를 줄이고, 새 라이브러리를 같은 양식으로 찍어 내고, '이 기능은 저 기능을 가져다 쓰지 마' 같은 규칙까지 지키게 해요.

비유가 깨지는 곳 일을 많이 맡기는 만큼 도입 비용이 들어요. 프로젝트에 어떤 태그를 붙이고 어떤 경계 규칙을 강제할지 먼저 정해야 해서, 준비가 안 됐다면 Turborepo로 가볍게 시작하고 나중에 옮기는 경우가 흔해요.

Nx는 캐싱과 병렬 실행에 더해 프로젝트 그래프, 코드 생성, 아키텍처 규칙 강제까지 제공하는 모노레포 플랫폼이다. "빠른 실행 한 가지"에 집중하는 Turborepo와 달리 기능을 두루 갖춘 쪽을 지향한다.

핵심 기능

  • 로컬·원격 캐시와 병렬 실행: 원격 캐시는 Nx Cloud로 팀·CI와 공유한다
  • 프로젝트 그래프(project graph): 앱과 라이브러리가 서로 어떻게 의존하는지 그래프로 보여준다(nx graph)
  • affected: git diff와 의존성 그래프로 영향받는 프로젝트만 골라 실행한다(nx affected -t test). 큰 저장소에서 CI 시간을 크게 줄인다
  • generators: 정해진 템플릿으로 라이브러리·컴포넌트를 만들어 구조를 통일한다
  • 모듈 경계 규칙(module boundaries): 태그를 붙여 "feature 라이브러리는 다른 feature를 import하지 못한다" 같은 규칙을 린트로 강제한다
  • 플러그인: React·Angular·Next.js·NestJS 등과 일부 다른 언어 지원, 여러 CI 머신에 작업 분산

Lerna도 지금은 내부적으로 Nx 위에서 동작한다. 최근에는 AI 도구가 저장소 구조를 읽을 수 있게 MCP(Model Context Protocol) 서버를 제공하는 등 범위를 넓히고 있다(2026 기준).

고르는 기준

  • 코드 생성, affected 분석, 아키텍처 거버넌스, 다중 언어가 필요한 큰 조직이라면 Nx
  • 그만큼 도입 비용이 든다. 프로젝트를 어떻게 태깅하고 어떤 규칙을 강제할지 정해야 한다
  • 그럴 준비가 안 됐다면 Turborepo로 가볍게 시작하고, 팀이 커지면 옮기는 순서가 흔하다

모듈 경계 강제는 사람이 기억하지 않아도 결합도 규칙이 지켜지게 하는 장치이고, 팀 구조와 코드 구조를 맞추는 일은 콘웨이의 법칙와 이어진다. 모노레포 일반은 모노레포를 본다.

출처: Nx: Run Only Tasks Affected by a PR · Enforce Module Boundaries

연결된 개념

이 노트를 가리키는 문서

뜻이 가까운 노트

  • NestJS

    NestJS는 TypeScript를 전제로 모듈·의존성 주입(Dependency Injection, DI)·데코레이터(decorator) 구조를 제공하는 Node.js 서버 프레임워크다. 2017년 Kamil Myśliwiec가 만들었고, 구조를 강제하는 방식 때문에 흔히 "Node.js의 Spring"이라 불린다.

  • CPU 아키텍처와 네이티브 모듈

    CPU 아키텍처는 CPU가 실행하는 명령어 집합(Instruction Set Architecture, ISA)의 종류다. 서버와 PC에서는 x86-64와 ARM64 두 계열이 주로 쓰이고, 한 계열용으로 컴파일된 기계어는 다른 계열 CPU에서 실행되지 않는다. Node.js 프로젝트에서는 이 차이가 네이티브 모듈에서 드러난다.

  • 쿠버네티스 핵심 개념

    쿠버네티스는 여러 서버에 컨테이너를 배치하고, 죽으면 다시 띄우고, 트래픽에 맞춰 복제 수를 조절하는 컨테이너 오케스트레이션(container orchestration) 시스템이다. 사람이 하던 서버 운영을 "원하는 상태를 선언하면 계속 맞춰 주는" 제어 루프(control loop)로 자동화한다.

  • 필요 낭비 (Type 1 무다)

    부가가치를 만들지는 않지만 지금은 없앨 수 없는 일. 도요타 생산 방식(Toyota Production System)에서 나온 린(Lean) 사고는 활동을 부가가치 활동(Value-Added), 순수 낭비(Type 2 무다), 필요 낭비(Type 1 무다)로 나눈다. 소프트웨어 개발에서는 프로덕션 코드를 쓰는 일을 빼면 대부분이 둘 중 하나의 낭비다.

  • 집단 코드 소유

    코드의 주인을 개인으로 두지 않고 팀 전체가 코드베이스 전체를 소유해, 누구나 필요한 곳을 고칠 수 있게 하는 XP 실천법.

보기 옵션