maestro

2 개의 포스트

netflix4분 읽기큐레이션 요약

데이터 프로젝트: 넷플릭스 규모로 데이터 자산 관리

Netflix는 수백만 개의 테이블과 수만 개의 워크로드를 개별 자산·사용자 단위로 관리하면서 권한 변경과 워크플로 장애가 반복되는 문제를 겪었다. Data Projects는 관련 자산을 프로젝트로 묶고, 사람과 무관하게 유지되는 프로젝트 전용 신원(identity)을 부여해 권한과 실행 주체의 관리 단위를 상향한다. 이를 통해 조직 개편이나 담당자 변경에도 권한과 데이터 워크플로가 안정적으로 유지되도록 한다. ## 개별 자산 중심 권한 관리의 한계 - 기존에는 모든 테이블에 개별 ACL을 설정해야 했다. - 조직 개편이나 팀 통합 때 수백 개 테이블의 권한을 하나씩 수정해야 했다. - 대규모 권한 변경 요청이 지원팀에 집중됐다. - 관리 부담을 피하기 위해 테이블을 전사 공개하는 사례가 생겨 ACL의 의미가 약화됐다. - Data Projects는 여러 테이블과 워크로드를 하나의 프로젝트로 묶어 프로젝트 단위로 권한을 관리한다. ## 사람에게 종속된 워크로드 신원의 문제 - Maestro 워크플로, Spark 파이프라인, 데이터 이동 작업은 실행 시 신원이 필요했다. - 기존에는 워크플로 작성자의 사용자 계정으로 실행하는 경우가 많았다. - 담당자가 팀을 옮기거나 퇴사하면 계정 권한이 바뀌어 워크플로가 실패했다. - 다른 사람의 계정으로 교체해도 권한이 완전히 같지 않아 새로운 권한 오류가 연쇄적으로 발생했다. - 수만 개의 예약 워크로드를 운영하는 Netflix에서는 이러한 방식이 지속 가능하지 않았다. ## Data Projects의 기본 구조 - Data Project는 관련 데이터 자산을 묶어 관리·조회하는 논리적 컨테이너다. - 포함할 수 있는 자산에는 테이블, 워크플로, 시크릿 등이 있다. - 동시에 사람과 독립적으로 유지되는 합성(synthetic)·지속적(durable) 신원 역할을 한다. - 500개 테이블의 ACL을 각각 관리하는 대신, 하나의 프로젝트에 대한 권한을 관리한다. - 초기 목적은 접근 제어와 실행 신원 통합이지만, 향후 다른 데이터 플랫폼 관리 기능으로 확장될 수 있다. ## 프로젝트 기반 역할과 권한 - 프로젝트 소유 팀이 프로젝트의 grant를 관리한다. - 사용자, 그룹, 애플리케이션, CI 작업 등 다양한 주체를 grant로 추가할 수 있다. - 각 grant에는 프로젝트 내 작업 범위를 결정하는 역할이 부여된다. - 예를 들어: - `Contributor`: 프로젝트 자산에 대한 읽기·쓰기 권한 - `Viewer`: 읽기 전용 권한 - 팀원이 합류하거나 떠날 때 개별 자산 ACL 수백 개를 수정하지 않고 프로젝트 grant 하나만 변경하면 된다. ## Netflix 애플리케이션 ID와 AWS IAM 역할 - 모든 Data Project에는 Netflix 애플리케이션 신원이 provision된다. - 필요하면 AWS IAM 역할도 함께 제공된다. - Netflix 신원은 Maestro 같은 비동기 워크로드의 실행 주체가 된다. - AWS IAM 역할은 Amazon EMR의 Spark 작업 등 AWS 특화 작업에 사용된다. - IAM 역할은 암호학적으로 안전한 방식으로 프로젝트의 Netflix 신원으로 교환될 수 있다. - 권한이 충분한 프로젝트 구성원은 로컬 노트북이나 노트북 환경에서 프로젝트 신원을 가정해 실제 예약 작업과 동일한 권한으로 테스트·디버깅할 수 있다. ## ‘Gravity’를 통한 자산 자동 귀속 - 프로젝트 신원으로 실행된 워크로드가 새 자산을 만들면 해당 자산이 자동으로 프로젝트에 포함된다. - 예를 들어 Maestro 워크플로가 테이블 세 개를 생성하면 이 테이블들이 자동으로 프로젝트의 자산이 된다. - 생성 자산을 나중에 찾아 프로젝트에 수동 등록할 필요가 없다. - 프로젝트가 해당 워크로드가 만든 자산의 중심이 되어 관리 범위와 권한 적용이 자연스럽게 확장된다. ## Maestro와 신뢰된 워크로드 실행 - Maestro는 ETL, 데이터 이동, 머신러닝 학습 등 배치 분석 작업을 담당하는 Netflix의 핵심 오케스트레이터다. - 예약 작업은 원래 사용자가 실행 시점에 উপস্থিত하지 않아도 되므로, Maestro는 Trusted Workload Manager(TWM)로 지정됐다. - TWM은 관리하는 워크로드를 대신해 새로운 신원 토큰을 발급할 권한을 가진다. - 하나의 워크플로 실행은 데이터 웨어하우스 테이블 ACL, Netflix 리소스 정책, AWS IAM 정책을 모두 통과해야 할 수 있다. - 따라서 실행 신원이 불안정하면 전체 데이터 파이프라인이 실패한다. ## 프로젝트 기반 지속 가능한 신원 - 기존의 `maestro OBO alice@netflix.com` 방식은 Maestro와 개인 사용자의 권한을 결합했지만, 사용자 생명주기에 종속됐다. - Data Projects는 이를 팀이 소유하는 Netflix 애플리케이션 신원으로 대체한다. - 프로젝트 신원은 담당자의 휴가, 부서 이동, 퇴사와 무관하게 유지된다. - Maestro는 워크플로 실행 전 호출자가 해당 프로젝트를 사용할 권한이 있는지 검증한다. - 실행 중 생성된 테이블은 gravity를 통해 프로젝트에 자동 귀속되고 프로젝트 권한을 물려받는다. - 시크릿도 프로젝트 정책 범위에서 관리되므로 담당자 변경으로 자격 증명이 고립되지 않는다. - 결과적으로 권한 관리가 중앙화되고, 워크플로 실행이 안정적이며, 감사 가능성도 높아진다. 대규모 데이터 플랫폼에서는 개별 테이블과 사용자에 권한을 계속 부여하기보다, 팀·서비스·워크로드를 대표하는 프로젝트 단위의 소유권과 지속 가능한 실행 신원을 도입하는 것이 효과적이다. 특히 예약 작업과 조직 변화가 많은 환경에서는 프로젝트 단위 권한, 자동 자산 귀속, 사람과 분리된 서비스 신원을 함께 설계하는 것이 권장된다.

원문 읽기(새 탭에서 열림)
netflix원문

넷플릭스의 Meta (새 탭에서 열림)

넷플릭스는 머신러닝(ML) 및 AI 워크플로우의 프로토타이핑부터 프로덕션 운영까지의 전 과정을 효율화하기 위해 오픈소스 프레임워크인 메타플로우(Metaflow)를 지속적으로 발전시켜 왔습니다. 특히 최신 업데이트인 Metaflow 2.19 버전에서는 'Spin'이라는 기능을 도입하여, 대규모 데이터와 모델을 다루는 ML 개발 과정에서 필수적인 빠른 반복 시도(Iterative development)와 상태 유지(Stateful iteration)를 획기적으로 가속화했습니다. 이를 통해 개발자는 코드 변경 사항을 즉각적으로 확인하면서도 운영 환경의 안정성을 동시에 확보할 수 있습니다. **ML 및 AI 워크플로우에서의 반복 개발 특성** * **데이터와 모델 중심의 반복:** 전통적인 소프트웨어 공학의 코드 중심 개발과 달리, ML/AI 개발은 크기가 크고 가변적인 데이터 및 모델을 중심으로 이루어집니다. * **비결정적 과정:** 데이터 변환이나 모델 학습은 실행 시마다 결과가 조금씩 달라지는 확률적 특성을 가지며, 연산 비용이 매우 높습니다. * **노트북의 장점과 한계:** 주피터(Jupyter)와 같은 노트북 도구는 메모리에 상태를 유지하여 빠른 피드백을 주지만, 실행 순서의 불명확성, 숨겨진 상태 문제, 재현성 부족 등의 고질적인 문제를 안고 있습니다. **메타플로우의 체크포인트 기반 상태 관리** * **@step을 통한 체크포인트 설정:** 메타플로우의 각 단계(`@step`)는 체크포인트 경계 역할을 수행하며, 단계가 종료될 때 모든 인스턴스 변수를 아티팩트(Artifact)로 자동 저장합니다. * **Resume 기능의 활용:** 기존의 `resume` 명령어를 사용하면 특정 단계부터 실행을 재개할 수 있어, 실패한 지점이나 수정이 필요한 지점부터 다시 시작할 수 있습니다. * **노트북 방식과의 차별점:** 실행 순서가 명시적이고 결정적이며, 모든 상태가 버전화되어 저장되므로 결과의 추적과 재현이 매우 용이합니다. **Spin: 반복 개발 속도의 극대화** * **지연 시간 단축:** 기존의 `resume` 방식은 특정 단계부터 전체를 다시 실행해야 하므로 반복 주기 사이에 일정 수준의 지연(Latency)이 발생했습니다. * **점진적 실험의 가속화:** 새로운 'Spin' 기능은 이러한 지연을 최소화하여 노트북 수준의 즉각적인 피드백을 제공하면서도 메타플로우의 견고한 상태 관리 기능을 그대로 활용합니다. * **워크플로우 엔진과의 통합:** 메타플로우는 넷플릭스의 워크플로우 오케스트레이터인 마에스트로(Maestro)와 긴밀하게 연동되어, 개발 환경에서 테스트한 로직을 프로덕션 규모로 확장하는 데 소요되는 오버헤드를 최소화합니다. 데이터 과학자와 엔지니어는 Metaflow 2.19 버전을 통해 Spin 기능을 직접 체험해 볼 수 있습니다. 실험적인 탐색 단계에서는 노트북처럼 빠른 속도를 누리고, 배포 단계에서는 엔지니어링 표준을 준수하는 견고한 파이프라인을 구축하고자 한다면 메타플로우의 새로운 반복 개발 워크플로우를 도입해 보길 권장합니다.