데이터 기반 기업은 백 엔드 및 분석 시스템을 고객 관련 애플리케이션과 거의 실시간으로 동기화해야 합니다. 트랜잭션, 업데이트 및 변경의 영향은 엔드투엔드 프로세스, 관련 애플리케이션 및 OLTP(온라인 트랜잭션 처리) 시스템을 통해 정확하게 반영되어야 합니다. 데이터를 사용하는 다운스트림 시스템에 반영되는 OLTP 애플리케이션의 변경 내용에 대한 허용 대기 시간은 몇 분에 불과할 수 있습니다.
이 문서에서는 레이크하우스 데이터를 동기화 상태로 유지하기 위해 데이터를 거의 실시간으로 처리하는 엔드투엔드 솔루션에 대해 설명합니다. 이 솔루션은 데이터 처리 및 분석을 위해 Azure Event Hubs, Azure Synapse Analytics 및 Azure Data Lake Storage를 사용합니다.
Apache® 및 Apache Spark는 미국 및/또는 기타 국가에서 Apache Software Foundation의 등록 상표 또는 상표입니다. 이러한 표시의 사용은 Apache Software Foundation에 의한 보증을 암시하지 않습니다.
아키텍처
이 아키텍처의 Visio 파일을 다운로드합니다.
데이터 흐름
변경 데이터 캡처는 원본 시스템에서 변경 내용을 받기 위한 필수 구성 요소입니다. Debezium 커넥터는 다양한 원본 시스템에 연결할 수 있으며, 발생하는 대로 변경 내용을 활용할 수 있습니다. 커넥터에서 다양한 RDBMS(관계형 데이터베이스 관리 시스템)로부터 변경 내용을 캡처하고 이벤트를 생성할 수 있습니다. Debezium 커넥터를 설치하려면 Kafka 연결 시스템이 필요합니다.
커넥터에서 변경 데이터를 추출하고 캡처된 이벤트를 Azure Event Hubs에 보냅니다. Event Hubs에서 여러 원본으로부터 많은 양의 데이터를 받을 수 있습니다.
Event Hubs에서 데이터를 Azure Synapse Analytics Spark 풀로 직접 스트림하거나 데이터를 원시 형식으로 Azure Data Lake Storage 랜딩 존에 보낼 수 있습니다.
다른 일괄 처리 데이터 원본에서 Azure Synapse 파이프라인을 사용하여 데이터를 Data Lake Storage에 복사하고 처리에 사용할 수 있도록 할 수 있습니다. 엔드투엔드 ETL(추출, 변환 및 로드) 워크플로에서 여러 단계를 연결하거나 종속성을 단계 간에 추가해야 할 수 있습니다. Azure Synapse 파이프라인은 전체 처리 프레임워크 내에서 워크플로 종속성을 오케스트레이션할 수 있습니다.
Azure Synapse Spark 풀에서 완전히 지원되는 Apache Spark 구조적 스트리밍 API를 사용하여 Spark 스트리밍 프레임워크에서 데이터를 처리합니다. 데이터 처리 단계에서는 데이터 품질 검사 및 고급 비즈니스 규칙 유효성 검사를 통합합니다.
Data Lake Storage에서 유효성이 검사된 데이터를 개방형 Delta Lake 형식으로 저장합니다. Delta Lake는 ACID(원자성, 일관성, 격리 및 내구성) 의미 체계 및 트랜잭션, 확장성 있는 메타데이터 처리, 기존 데이터 레이크에 대한 통합 스트리밍 및 일괄 데이터 처리를 제공합니다.
쿼리 가속화를 위해 인덱스를 사용하면 델타의 성능이 향상됩니다. Data Lake Storage 유효성 검사 영역의 데이터는 추가 고급 분석 및 기계 학습을 위한 원본이 될 수도 있습니다.
Data Lake Storage 유효성 검사 영역의 데이터가 더 많은 규칙을 사용하여 최종 처리 상태로 변환되고 보강되어 대규모 분석 쿼리를 실행하는 전용 SQL 풀에 로드됩니다.
Power BI에서 전용 SQL 풀을 통해 공개되는 데이터를 사용하여 엔터프라이즈급 대시보드 및 보고서를 빌드합니다.
Data Lake Store 랜딩 존에서 캡처되고 Delta 형식으로 유효성이 검사된 원시 데이터를 다음 용도로 사용할 수도 있습니다.
- Azure Synapse SQL 서버리스 풀을 통한 추가 임시 및 예비 분석
- Azure Machine Learning을 통한 기계 학습
대기 시간이 짧은 일부 인터페이스의 경우 한 자릿수 서버 대기 시간에 대해 데이터를 비정규화해야 합니다. 이 사용 시나리오는 주로 API 응답을 위한 것입니다. 이 시나리오에서는 한 자릿수 밀리초 응답에 대해 Azure Cosmos DB와 같은 NoSQL 데이터 저장소의 문서를 쿼리합니다.
Azure Cosmos DB 분할 전략은 모든 쿼리 패턴에 적합하지 않을 수 있습니다. 이 경우 Azure Cognitive Search를 사용하여 API에서 액세스해야 하는 데이터를 인덱싱하여 솔루션을 보강할 수 있습니다. Azure Cosmos DB 및 Cognitive Search는 대기 시간이 짧은 쿼리 응답이 필요한 대부분의 시나리오를 충족할 수 있습니다.
구성 요소
이 솔루션은 다음 Azure 구성 요소를 사용합니다.
Event Hubs는 대량의 데이터를 수집하도록 확장할 수 있는 관리형 분산 수집 서비스입니다. Event Hubs 구독자-게시자 메커니즘을 사용하면 다양한 애플리케이션에서 메시지를 Event Hubs의 토픽에 보낼 수 있고 다운스트림 소비자는 메시지에 연결하여 처리할 수 있습니다. Event Hubs 캡처 기능은 도착 시 메시지를 AVRO 형식으로 Data Lake Storage에 쓸 수 있습니다. 이 기능은 손쉬운 마이크로 일괄 처리 및 장기 보존 시나리오를 가능하게 합니다. 또한 Event Hubs는 Kafka 호환 API를 제공하고 스키마 레지스트리를 지원합니다.
Data Lake Storage는 모든 데이터를 원시 및 유효성 검사된 형식으로 저장하는 스토리지 하위 시스템을 구성합니다. Data Lake Storage는 대규모 트랜잭션을 처리할 수 있으며 다양한 파일 형식과 크기를 지원합니다. 계층 구조 네임스페이스는 데이터를 친숙한 폴더 구조로 구성하고 POSIX(Portable Operating System Interface for UniX) 권한을 지원하는 데 도움이 됩니다. ABFS(Azure Blob 파일 시스템) 드라이버는 Hadoop 호환 API를 제공합니다.
Azure Synapse Analytics는 데이터 통합, 엔터프라이즈 데이터 웨어하우징 및 빅 데이터 분석을 모두 결합하는 무제한 분석 서비스입니다. 이 솔루션에서 사용하는 Azure Synapse Analytics 에코시스템의 기능은 다음과 같습니다.
Azure Synapse Spark 풀은 향상된 기본 제공 성능 기능을 오픈 소스 Spark에 추가하는 주문형 Spark 런타임을 제공합니다. 고객은 유연한 자동 크기 조정 설정을 구성하고, Apache Livy 엔드포인트를 통해 원격으로 작업을 제출하고, Synapse Studio Notebook 인터페이스를 대화형 환경에 사용할 수 있습니다.
Azure Synapse SQL 서버리스 풀은 친숙한 T-SQL 구문을 사용하여 레이크하우스 데이터를 쿼리하는 인터페이스를 제공합니다. 설정할 인프라가 없으며 Azure Synapse 작업 영역 배포에서 엔드포인트를 자동으로 만듭니다. Azure Synapse SQL 서버리스 풀은 데이터의 기본 검색 및 탐색을 가능하게 하며 사용자 임시 쿼리 분석에 적합한 옵션입니다.
Azure Synapse 전용 SQL 풀은 열 형식 스토리지가 있는 관계형 테이블에 데이터를 저장합니다. 전용 SQL 풀은 스케일 아웃 아키텍처를 사용하여 데이터 처리를 여러 노드에 분산합니다. PolyBase 쿼리는 데이터를 SQL 풀 테이블로 가져옵니다. 테이블은 분석 및 보고를 위해 Power BI에 연결할 수 있습니다.
Power BI는 보고서 및 대시보드를 만들고 액세스할 수 있는 시각적 인터페이스를 제공합니다. Power BI Desktop은 다양한 데이터 원본에 연결하고, 원본을 데이터 모델에 결합하고, 보고서 또는 대시보드를 빌드할 수 있습니다. Power BI를 사용하면 비즈니스 요구 사항에 따라 데이터를 변환하고 Power BI 서비스를 통해 시각적 개체 및 보고서를 다른 사용자와 공유할 수 있습니다.
Azure Cosmos DB는 MongoDB 및 Cassandra와 같은 개방형 API를 지원하는 관리형 다중 모달 NoSQL 데이터베이스입니다. 이 솔루션은 Azure Cosmos DB를 한 자릿수 밀리초 응답 시간과 고가용성이 필요한 애플리케이션에 사용합니다. Azure Cosmos DB는 모든 Azure 지역에서 다중 지역 쓰기를 제공합니다. Azure Cosmos DB용 Azure Synapse Link를 사용하여 인사이트를 이끌어내고 데이터에 대한 분석을 실시간으로 실행할 수 있습니다.
Azure Cognitive Search는 애플리케이션과 API에 필요한 데이터를 인덱싱 수 있는 클라우드 검색 서비스입니다. Cognitive Search에는 텍스트 추출을 지원하고 텍스트가 아닌 파일에서 텍스트를 유추하는 선택적 AI 보강 기능이 있습니다. Cognitive Search는 Azure Data Lake Storage 및 Azure Cosmos DB와 같은 서비스와 통합되어 데이터에 쉽게 액세스하고 인덱싱합니다. REST API 또는 .NET SDK를 사용하여 인덱싱된 데이터를 쿼리할 수 있습니다. 두 개의 개별 인덱스에서 데이터를 가져오려면 이러한 인덱스를 단일 인덱스로 결합하거나 복잡한 데이터 형식을 사용할 수 있습니다.
시나리오 정보
변경 내용을 거의 실시간으로 처리하는 엔드투엔드 워크플로에는 다음이 필요합니다.
- CDC(변경 데이터 캡처) 기술. OLTP 애플리케이션에는 SQL Server, MySQL 및 Oracle과 같은 다양한 백 엔드 데이터 저장소가 있을 수 있습니다. 첫 번째 단계는 변경 내용이 발생하는 대로 신 대기하고 앞으로 전파하는 것입니다.
- 변경 이벤트를 대규모로 게시하는 수집 버퍼. 이 서비스는 메시지가 도착할 때 많은 양의 데이터를 처리할 수 있습니다. 개별 구독자는 이 시스템에 연결하여 데이터를 처리할 수 있습니다.
- 원시 형식 그대로의 데이터를 위한 확장성 있는 분산 스토리지
- 사용자가 상태를 다시 시작하고 관리할 수 있는 효율적인 분산 스트림 처리 시스템
- 비즈니스 결정을 지원하기 위해 대규모로 실행되는 분석 시스템
- 셀프 서비스 분석 인터페이스
- 대기 시간이 짧은 API 응답의 경우 데이터의 비정규화된 표현을 저장하는 NoSQL 데이터베이스
- 경우에 따라 데이터를 인덱싱하고, 인덱스를 정기적으로 새로 고치며, 최신 데이터를 다운스트림 사용에 사용할 수 있도록 하는 시스템
이전의 모든 기술에서는 경계 보안, 인증, 권한 부여 및 데이터 암호화를 위해 관련 보안 구조를 사용해야 합니다.
잠재적인 사용 사례
이 솔루션은 다음에 적합합니다.
- 변경 내용을 OLTP에서 OLAP(온라인 분석 처리)로 전파해야 하는 산업
- 데이터 변환 또는 보강이 필요한 애플리케이션
실시간 데이터 처리 시나리오는 금융 서비스 산업에 특히 중요합니다. 예를 들어 보험, 신용 카드 또는 은행 고객이 결제한 다음, 고객 서비스에 즉시 연락하는 경우 고객 지원 담당자는 최신 정보를 가지고 있어야 합니다.
비슷한 시나리오가 소매, 상업 및 의료 부문에도 적용됩니다. 이러한 시나리오를 사용하도록 설정하면 운영이 간소화되어 조직 생산성이 향상되고 고객 만족도가 높아집니다.
고려 사항
이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.
안정성
안정성은 애플리케이션이 고객에 대한 약속을 충족할 수 있도록 합니다. 자세한 내용은 안정성 핵심 요소 개요를 참조하세요.
Event Hubs는 프리미엄 및 전용 계층에서 90일간 데이터 보존을 제공합니다. 장애 조치(failover) 시나리오의 경우 쌍으로 연결된 지역에서 보조 네임스페이스를 설정하고 장애 조치(failover) 중에 활성화할 수 있습니다.
Azure Synapse Spark 풀 작업은 유지 관리를 위해 노드가 중단될 때 7일마다 재활용됩니다. 시스템에 연결된 SLA(서비스 수준 계약)를 통해 작업할 때 이 작업을 고려합니다. 이 제한은 RTO(복구 시간 목표)가 약 15분인 많은 시나리오에서 문제가 되지 않습니다.
비용 최적화
비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.
워크로드 특성에 따라 다양한 Event Hubs 계층 중에서 선택할 수 있습니다. Event Hubs는 Data Lake Storage에 저장되는 데이터 양에 따라 스토리지 캡처에 대한 요금을 별도로 청구합니다.
Azure Data Lake Storage의 계층을 통한 개체 수명 주기 관리를 고려합니다. 데이터가 오래되면 분석을 위해 데이터를 최신 데이터에 액세스해야 하는 핫 계층에서 가격이 훨씬 저렴한 콜드 스토리지 계층으로 이동할 수 있습니다. 콜드 스토리지 계층은 장기 보존에 대한 비용 효율적인 옵션입니다.
전용 SQL 풀은 개발 또는 테스트 환경에서 사용하지 않을 경우 일시 중지할 수 있습니다. 필요에 따라 풀을 일시 중지하도록 스크립트를 예약하거나 포털을 통해 수동으로 풀을 일시 중지할 수 있습니다.
Azure Cosmos DB는 서버리스, 수동 프로비전 처리량 및 자동 크기 조정과 같은 다양한 프로비전 모델을 제공합니다. 서버리스 프로비전을 개발 및 테스트 워크로드에 사용하는 것이 좋습니다. 또한 컨테이너에서 초당 최대 요청 단위(RU/s)를 설정할 수 있는 자동 크기 조정을 사용할 수 있습니다. 컨테이너의 처리량은 낮은 임계값인 최대 RU/s의 10%와 구성된 최대 RU/s 사이에서 자동으로 조정됩니다.
성능 효율성
성능 효율성은 사용자가 배치된 요구 사항을 효율적인 방식으로 충족하기 위해 워크로드의 크기를 조정할 수 있는 기능입니다. 자세한 내용은 성능 효율성 핵심 요소 개요를 참조하세요.
분할을 통해 Event Hubs의 크기를 조정할 수 있습니다. 커밋 로그를 통해 이벤트 순서를 유지하려면 데이터를 분할하는 것이 좋습니다. 분할을 사용하면 사용 가능한 처리 용량을 최대화하여 여러 병렬 로그를 만들 수 있습니다.
워크로드에 따라 소형, 중형 또는 대형 VM(가상 머신) SKU를 사용하여 Azure Synapse Spark 풀을 설정할 수 있습니다. 급증하는 워크로드를 처리하도록 Azure Synapse Spark 풀에서 자동 크기 조정을 구성할 수도 있습니다. 더 많은 컴퓨팅 리소스가 필요한 경우 클러스터는 수요에 맞게 자동으로 스케일 업되고, 처리가 완료되면 스케일 다운됩니다.
전용 SQL 풀에서 테이블을 설계하는 모범 사례를 사용합니다. SQL 풀이 실행되는 계층에 따라 관련 성능 및 확장성 제한이 적용됩니다.
Azure Cosmos DB는 파티션 키에 따라 파티션을 사용하여 컨테이너 크기를 조정합니다. 파티션 키를 기반으로 하는 모든 데이터는 논리 파티션을 형성합니다. 워크로드 요구 사항에 따라 올바른 분할 전략을 선택해야 합니다. 더 빠른 데이터 검색을 위해 인덱스를 사용할 수도 있습니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
보안 주체 작성자:
- Pratima Valavala | 클라우드 솔루션 설계자
다른 기여자:
- Rajesh Mittal | 클라우드 솔루션 설계자
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인하세요.
다음 단계
- Apache Spark용 Azure Event Hubs 커넥터
- Event Hubs를 통한 확장성
- Azure Cosmos DB에서 데이터 인덱싱
- Microsoft Azure Cosmos DB용 Synapse Link란?
- 전용 SQL 풀에 대한 모범 사례
- 서버리스 SQL 풀에 대한 모범 사례
- Azure Synapse에서의 데이터 모델링, 쿼리 및 탐색
- Azure Synapse 서버리스 SQL 풀을 사용하여 데이터 분석 솔루션 빌드