DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
KOEN
Read Original

Contents

Continue Reading

  • More from Netflix
#Backend

Nebula ArchRules를 활용한 ArchUnit 확장: 넷플릭스의 대규모 아키텍처 거버넌스

Nebula ArchRules를 활용한 ArchUnit 확장: 넷플릭스의 대규모 아키텍처 거버넌스
01

Summary

넷플릭스는 어떻게 수만 개의 마이크로서비스 아키텍처를 일관되게 유지할까?

ArchUnit과 Nebula를 결합해 100만 개의 코드 이슈를 잡아내는 넷플릭스의 기술 거버넌스 전략

본 아티클은 넷플릭스가 대규모 폴리레포 환경에서 어떻게 아키텍처 규칙을 강제하고 기술 부채를 관리하는지 다룹니다. 단순한 정적 분석을 넘어, 라이브러리 단위로 규칙을 배포하고 실행하는 Nebula ArchRules의 아키텍처와 실제 운영 사례를 심도 있게 소개합니다.

  • 01ArchUnit의 한계를 극복하고 전사적 규모로 규칙을 확장하는 방법 제시
  • 02AST 대신 바이트코드(ASM) 기반 분석을 사용하여 다국어(JVM) 지원 및 정확도 향상
  • 03Gradle Module Metadata를 이용해 라이브러리와 규칙을 동적으로 연결하는 메커니즘
  • 041만 개 저장소 규모에서 발견된 100만 개의 이슈를 관리하는 대시보드 통합 사례
  • 05OpenRewrite 및 LLM을 활용한 이슈 자동 수정(Auto-remediation) 로드맵 공유

+RECOMMENDATION

수많은 마이크로서비스를 관리하며 아키텍처 표준을 강제하고 싶은 플랫폼 엔지니어나, 라이브러리 변경 시 영향도를 파악하고 싶은 라이브러리 제작자에게 강력 추천합니다.

The Problem

넷플릭스는 1만 개 이상의 자바 저장소를 운영하는 폴리레포 전략을 사용하고 있으며, 이로 인해 전사적인 빌드 로직 공유와 라이브러리 생명주기 관리에 어려움을 겪고 있었습니다. 특히 라이브러리 작성자가 하위 호환성이 깨지는 변경을 가할 때 어떤 프로젝트가 영향을 받는지 파악할 수 있는 가시성이 부족했습니다.

The Solution

기존 JUnit 기반의 ArchUnit을 확장한 Nebula ArchRules 플러그인을 개발하여 아키텍처 규칙을 JAR 형태로 패키징하고 배포할 수 있는 구조를 구축했습니다. 이를 통해 Gradle Module Metadata를 활용하여 개별 프로젝트가 사용하는 라이브러리에 최적화된 규칙을 자동으로 탐색하고 실행할 수 있는 러너 시스템을 도입했습니다.

The Result

현재 5,000개 이상의 저장소에서 358개의 규칙을 실행하여 약 100만 건의 이슈를 감지하고 있으며, 라이브러리 작성자가 실험적 또는 지원 종료 예정인 API의 전사적 사용 현황을 실시간으로 파악할 수 있게 되었습니다.

Trade-off

이 솔루션은 Gradle 생태계 및 Nebula 플러그인에 강력하게 결합되어 있어 타 빌드 시스템으로의 이식이 어렵고, 빌드 타임에 바이트코드 분석을 수행함에 따라 대규모 프로젝트에서 빌드 시간이 소폭 증가할 수 있는 가능성이 존재합니다.

03

Key Concepts

Concept · 01

ArchUnit

자바 코드의 패키지 의존성, 클래스 명명 규칙 등 아키텍처 규칙을 테스트 코드로 검증할 수 있게 해주는 오픈소스 라이브러리입니다.

  • 넷플릭스는 이를 확장하여 개별 저장소를 넘어 전사적 규칙 적용 도구로 활용했습니다.
Concept · 02

Nebula ArchRules

넷플릭스가 개발한 Gradle 플러그인 모음으로, ArchUnit 규칙을 라이브러리처럼 배포하고 자동으로 실행할 수 있게 돕습니다.

  • Library Plugin으로 규칙을 패키징하고 Runner Plugin으로 규칙을 실행 및 보고합니다.
Concept · 03

ASM (Bytecode Analysis)

자바 바이트코드를 읽고 조작하기 위한 프레임워크로, 소스 코드 수준이 아닌 컴파일된 결과물을 분석합니다.

  • ArchUnit은 ASM을 사용하여 Kotlin, Scala 등 모든 JVM 언어에 대해 동일한 규칙을 적용할 수 있습니다.
Continue reading · same source

NetflixMore from Netflix

View all posts from Netflix
  • MAPS: 넷플릭스의 대규모 멀티모달 에셋 개인화

    CLIPMediaFMRecommendation Systems
    1일 전
  • 두 개의 플링크 오토스케일러 이야기

    Apache FlinkAutoscalingStream Processing
    1주 전
  • 넷플릭스가 실시간 분산 그래프를 구축한 방법과 이유: 3부 — gRPC 실행 API를 통한 그래프 쿼리

    gRPCGraph DatabaseDistributed Systems
    3주 전
  • 분석을 위한 디바이스 사양 모델링

    Data ModelingFeature ManagementAnalytics
    4주 전
  • GenRec: 넷플릭스의 LLM 네이티브 추천 시스템을 향하여

    LLMRecommendation SystemContext Engineering
    1개월 전

Source

Netflix
Netflix
Engineering Blog

Published · May 8, 2026

Topics

ArchUnitNebulaStatic AnalysisGradleNetflix