이젠 App Mesh를 넘어 Data Flow도 컨트롤하고자 하는것 같다.
원문링크 : https://netflixtechblog.com/data-mesh-a-data-movement-and-processing-platform-netflix-1288bcab2873
Data Mesh — A Data Movement and Processing Platform @ Netflix
By Bo Lei, Guilherme Pires, James Shao, Kasturi Chatterjee, Sujay Jain, Vlad Sydorenko
netflixtechblog.com
전반적인 아키텍처
Data Mesh 시스템은 크게 Control plane 영역과 Data Plain 영역으로 나눌 수 있다. 컨트롤러는 사용자 Request를 받거나 Deploy하거나 Orchesctration을 수행한다. Deploy할때는 해당 파이프라인이 무거운 Data 이동 프로세스를 수행한다. 컨트롤러는 microservice에 라이프사이클을 직접 관리토록 책임을 위임한다.
파이프라인
Data Mesh 파이프라인은 다양한 소스로부터 데이터를 읽는다. 목적 Data 저장소에 저장하기 위해 소스 이벤트에 변형을 가하기도 한다. 파이프라인은 UI나 API를 통해서 생성할 수 있다. 해당 요청에 대해 컨트롤러는 관련 자원들에 대해 분석하고 최적의 환경설정을 제공한다.
Connector
소스 커넥터는 DataMesh의 관리형 Producer 역할을 한다. 이것은 소스 DataBase의 로그를 모니터링하고 Kafka Topic이 이끌고 있는 DataMesh에 CDC 이벤트를 발생시킨다. DataMesh 컨트롤러가 소스를 자동으로 생성 및 업데이트를 하도록 신호를 전달한다.
이전에 우리는 DBLog 라이브러리를 통해 MySQL, Postgres를 리스닝하는 RDS 소스 커넥터만 갖고 있었다. 지금은 Cockroach DB 소스 커넥터를 추가했고, Cassandra 소스 커넥터를 추가하였다. 그들은 다른 데이터 스트림 구조를 갖고 있다.
관리형 커넥터와 더불어 어플리케이션은 공통 라이브러리를 통해 이벤트를 발생시킬 수 있다. 이 공통 라이브러리는 DB커넥터가 아직 개발이 안되었을 경우 유용하다. 그리고 DB스키마와 연관성이 없는 도메인 이벤트를 발생시키는 것을 선호하는 경우도 있다.
Sources
어플리케이션 개발자들은 그들의 도메인 데이터를 중앙집중화된 소스카탈로그에 노출시킨다. 이것은 특정 엔티티 변화에 관심이 있는 복수의 팀에게 데이터를 공유하는 방법을 제공한다. 추가로 소스는 일련의 프로세스로 정의될 수 있다. 예를들어 배우명단과 같이 풍부한 데이터를 포함하고 있는 Movie라는 엔티티는 검색에 활용할 수있게 색인될 수 있다.
Processors
프로세서는 재사용가능한 단위의 데이터 프로세스 로직을 포함하고 있다. 이것은 upstream 전송으로 부터 이벤트를 읽고 그 이벤트에 비즈니스 로직을 할당하는 역할을 한다. intermediate 프로세서는 다른 전송이벤트에 데이터를 쓰기도 한다. sink프로세서는 iceberg, ElasticSearch, kafka등에 데이터 쓰기를 수행한다.
유저들이 스스로 프로세서를 개발하는것을 장려하기 위해 우리(Netflix)는 프로세서 SDK를 제공하고 있다. Netflix 개발자들로부터 개발된 프로세서 또한 플랫폼에 등록된다.
Transports
Kafka를 상호연결된 프로세서끼리 커뮤니케이션하기 위한 데이터전송 레이어로 사용하고 있다. upstream 프로세서의 이벤트 아웃풋은 kafka 토픽에 기록된다. 그리고 downstream 프로세서는 해당 이벤트를 읽는다. kafka 토픽은 파이프라인들을 아울러 공유된다. 이러한 설계는 재활용성을 향상시키며 데이터 활용도를 높이는데 기여하였다. 또한 Data 흐름을 추적하여 전반적인 데이터 사용현황을 확인하기 쉽게 몇가지 기능들 또한 개발하였다.
Schema
DataMesh는 모든 이벤트가 스키마로 사전 정의되기를 강제하고 있다. 우리는 모든 스키마의 포맷 공유를 위해 Avro를 사용하고 있다. 이것은 단순하지만 강력하고 널리 체택될 수 있는 좋은 도구이다. 우리가 스키마를 매우 중요하게 생각하는 이유는 다음과 같다.
1. 더 나은 데이터 품질. 일관된 데이터 형식을 제공해 consumer가 더 잘 소비할 수 있음
2. 데이터 흐름 추적이 용이
3. 데이터 탐색이 용이. 사용자가 디스크립션을 통해 관심데이터를 찾는데 용이함
위를 통하여 컨슈밍과 프로듀싱을 다루는 파이프라인에 있어서 어느정도의 자동화를 위함
'PaaS > Data' 카테고리의 다른 글
Elastic Search API 쿼리 샘플 (0) | 2023.01.13 |
---|---|
InfluxDB 설치하기 (0) | 2022.10.22 |
Oracle의 Segment Advisor 사용하기 (0) | 2022.08.09 |
ElasticSearch-Filebeat 인덱스 이름 Custom하게 변경 (0) | 2022.08.08 |
ElasticSearch 색인성능 최적화 (0) | 2022.07.24 |