이 가이드 필수 워크플로에 대한 구체적인 절차를 포함하여 Atlas Stream Processing 관리하기 위한 권장사항 설명합니다.
Networking
각 스트림 프로세서는 데이터 소스 및 싱크에 대한 연결에 의존합니다. Atlas Stream Processing 전송 중인 모든 데이터를 TLS/SSL을 사용하여 암호화하지만, 기본 연결은 여전히 공용 인터넷을 통해 데이터를 전달합니다. Atlas Stream Processing 으로 최적의 성능과 보안을 달성하려면 이 섹션에 설명된 관행을 고려하세요.
피어링 및 라우팅 테이블
Atlas Stream Processing 과 자체 관리형 Apache Kafka 클러스터 또는 비공개 API와 같은 비공개 외부 시스템 간의 보안 통신을 보장하려면 VPC 또는 VNet 피어링 연결을 사용하세요. 이러한 연결은 데이터가 공용 인터넷에 노출되지 않도록 보호합니다. 피어링 연결을 설정하는 것 외에도, 트래픽을 Atlas VPC CIDR 차단 으로 전달하도록 애플리케이션의 VPC 에 대한 라우팅 테이블을 명시적으로 구성해야 합니다. 라우팅 테이블을 구성하는 방법에 대해 자세히 학습 외부 제공자 의 VPC 설명서를 참조하세요.
Atlas 프로젝트 간 연결
동일한 조직 내의 서로 다른 Atlas 프로젝트 간에 스트리밍 데이터를 라우팅하기 위해 Atlas Stream Processing 교차 프로젝트 연결을 지원합니다. 교차 프로젝트 연결은 클러스터를 비공개 인터넷에 노출하지 않고 데이터를 전송하므로 VPC 피어링을 수동으로 구성할 필요 없이 개인정보를 보호할 수 있습니다.
비밀번호 없는 AWS 인증
Atlas Stream Processing 다음과 같은 AWS 통합을 지원합니다.
S3
Kinesis Data Streams
Lambda (
$externalFunction)
이러한 각 통합은 통합 AWS 액세스와 호환됩니다. 통합 액세스를 구성하면 정적 액세스 ID 또는 Secret 자격 증명 MongoDB 에 저장 필요가 없으며, 이는 모든 AWS 통합에 권장되는 인증 모델입니다.
Kafka OIDC
Atlas Stream Processing JSON Web Token과 함께 OIDC를 사용하여 Apache Kafka 브로커에 대한 인증을 지원합니다. 그러나 이 기능 현재 공용 네트워크를 통해 액세스할 수 있는 ID 제공자만 지원합니다. 이 기능 고객의 VPC 내의 ID 제공자에 대해 지원되지 않습니다.
내결함성
Atlas Stream Processing 체크포인트, 데드 레터 큐, 페일오버 프로세서등 일반적인 장애 시나리오에서 안정적이고 강력한 서비스를 보장하기 위해 다양한 메커니즘을 제공합니다.
Atlas Stream Processing 30초 하트비트를 사용하여 스트림 프로세서 상태를 모니터링합니다. 스트림 프로세서가 30초 이상 하트비트를 전송하지 못하면 Atlas Stream Processing 자동으로 프로세서를 다시 시작합니다.
Atlas Stream Processing AWS Kinesis 와 같은 샤딩된 통합에 대한 토폴로지 변경 사항을 자동으로 관리합니다.
데드 레터 대기열
처리되지 않은 데이터를 데드 레터 큐 (DLQ)로 라우팅하도록 Atlas Stream Processing 구성할 수 있습니다. 그런 다음 DLQ에서 처리되지 않은 레코드를 확인하여 처리 실패를 해결할 수 있습니다.
DLQ를 검사할 때 다음과 같은 일반적인 처리 오류를 찾으세요.
페이로드 구문 분석
수신 기록 형식이 잘못되어 구문 분석에 실패했습니다. 이는 잘못된 JSON 으로 인해 발생하는 경우가 많습니다.
표현식 평가
처리 파이프라인 의 표현식 제대로 평가되지 않습니다.
예시
파이프라인 Kafka 레코드를 삭제 위한
$emit.config.tombstoneWhen구성 필드 포함되어 있으며, 특정 문서 평가할 필드 누락되었습니다.크기 제한
발신 기록 대상 싱크의 크기 제한을 초과했습니다(예:AWS Kinesis 의
1 MB).키 생성
싱크의 파티션 키 생성하는 동안 프로세서에서 오류가 발생합니다.
지연 데이터
프로세서는 window를 사용하며 구성된 지연 허용 기간이 만료된 후에 지정된 문서 도착합니다.
처리 실패의 원인을 분석 후 업스트림 데이터 소스를 수정하여 데이터가 Atlas Stream Processing 파이프라인 에 들어가기 전에 수정하거나, 파이프라인 수정하여 엣지 케이스를 처리하다 .
DLQ의 레코드를 사용하여 Atlas Stream Processing 구성을 가이드 한 후 해당 레코드에 대한 다음 수정 옵션을 고려하세요.
폐기
시간에 매우 민감한 시스템에서 데이터가 매우 늦은 경우와 같이 기록 매우 잘못되었거나 관련이 없는 경우 컬렉션 에서 삭제 .
수동 수정
사소한 JSON 오류가 있거나 미션 크리티컬한 기록 의 경우 필드를 수동으로 조정하여 대상 싱크에 직접 삽입합니다.
자동 재처리:
복구 가능한 관련 데이터가 많은 경우, DLQ에서 읽고 정리된 데이터를 대상 싱크로 라우팅하기 전에 알려진 장애 조건에 대해 변환을 적용하는 세컨더리 스크립트 또는 추가 스트림 프로세서를 만듭니다.
장애 조치
Atlas Stream Processing 리전 전체 시스템 장애 발생 이벤트 서비스 중단을 방지하기 위해 페일오버 프로세서를 제공합니다.
페일오버 구성 원칙
다음 원칙은 Atlas Stream Processing 워크로드를 보호하기 위한 강력한 페일오버 구성을 정의합니다.
여러 리전에 Atlas 클러스터를 배포하세요.
리전 페일오버 이벤트 에서 스트림 프로세서가 계속 작동하려면 스트림 프로세서가 연결되는 모든 Atlas cluster 멀티 리전 클러스터 여야 합니다. 이 원칙은 프라이머리 리전 다운될 때 소스 또는 싱크 연결이 활성 상태로 유지되도록 합니다.
각 리전 에 대한 Atlas Stream Processing 작업 공간을 만듭니다.
멀티 리전 클러스터를 배포한 후 각 리전 에 대한 작업 공간을 만듭니다. 이 원칙은 스트림 프로세서와 지원하는 Atlas 데이터베이스 간의 연결 지연 시간 최소화합니다.
연결별 재해 복구 구성
스트림 프로세서에 대한 서비스 연속성을 보장하려면 스트림 프로세서가 의존하는 모든 외부 제공자도 페일오버 활성화해야 합니다. 각 외부 제공자 소스 또는 싱크가 설명서에 따라 올바르게 구성되어 있는지 확인합니다.
예시
스트림 프로세서가 Kafka 클러스터 소스 또는 싱크로 사용하는 경우, 소비자 오프셋 보존을 위해 클러스터 구성하여 Atlas Stream Processing 소비자 그룹 오프셋에서 처리 재개할 수 활성화 .
일상적인 드라이 런을 수행합니다.
주기적으로 페일오버 드라이런을 수행하여 페일오버 구성을 확인합니다. 이러한 드라이런은 구성이 네트워크에 연결되고 체크포인트를 올바르게 로드하는지 확인하고, 필요할 때 더 쉽게 수행할 수 있도록 페일오버 워크플로를 교육하는 데 제공 . 페일오버 오버 드라이런의 주기를 정기적으로 설정하고 페일오버 구성을 변경할 때마다 드라 실행 수행하는 것이 좋습니다.
스트림 프로세서 페일오버 설정
권장사항 적용되었는지 확인한후 스트림 프로세서를 생성하고 페일오버 구성을 확인합니다.
Atlas Stream Processing 다음 구성의 프로세서에 대해서만 자동 리전 페일오버 지원합니다.
Atlas 소스 및 싱크
Atlas 소스 및 Apache Kafka 싱크
자동 페일오버 에 대한 자세한 내용은 페일오버 프로세서를 참조하세요.
그러나 소스 및 싱크 연결의 모든 조합에 대해 수동 페일오버 지원하는 Atlas Stream Processing 아키텍처를 구성할 수 있습니다.
강제 페일오버 시작
작업 공간 또는 스트림 프로세서 수준에서 강제 페일오버 시작할 수 있습니다.
스트림 처리 공간 페일오버 시작하려면 트리거 스트림 처리 작업 공간 페일오버에설명된 절차를 따르세요.
개별 스트림 프로세서 페일오버 시작하려면 1개 스트림 프로세서에 대한 페일오버 시작에 설명된 절차를 따르세요.
페일오버 이벤트에 응답
리전별 서비스 중단 이벤트 발생한 경우:
서비스 중단을 확인합니다.
서비스 중단 증상이 나타나면 기본 상태 보고서를 검토 이벤트 확인합니다. 이 정보는 MongoDB 클라우드 상태 페이지 또는 cloud 제공자의 상태 페이지에서 확인할 수 있습니다.Atlas Stream Processing 경고를 구성할 수 있습니다. 실패 이벤트 의 타임스탬프를 확인합니다.
페일오버 프로세서를 시작합니다.
1개의 스트림 프로세서에 대한 페일오버 시작에 설명된 절차를 따릅니다. 마지막으로 사용된 스트림 이벤트 부터 서비스가 재개되도록 하려면 이전에 기록한 타임스탬프를 startAtOperationTime 매개변수로 전달합니다.
Apache Kafka 소스를 사용하는 프로세서는 소비자 그룹 오프셋에 따라 재개됩니다.
서비스가 다시 시작되는지 확인합니다.
페일오버 완료한 후 작업 공간의 프라이머리 리전 상태를 주기적으로 확인합니다. 이 정보는 MongoDB 클라우드 상태 페이지 또는 cloud 제공자의 상태 페이지에서 확인할 수 있습니다. Atlas Stream Processing 경고를 구성할 수도 있습니다. 자동 프라이머리 프로세서 억제를 사용하는 경우 프라이머리 프로세서가 자동으로 다시 시작되는 것을 감지하면 알림 반환하도록 스크립트 구성할 수 있습니다.
프라이머리 프로세서를 다시 시작합니다.
프라이머리 리전 에서 스트림 프로세서를 다시 시작합니다. 마지막으로 사용된 스트림 이벤트 부터 서비스가 재개되도록 하려면 이전에 기록한 타임스탬프를 startAtOperationTime 매개변수로 전달합니다.
Apache Kafka 소스를 사용하는 프로세서는 소비자 그룹 오프셋에 따라 재개됩니다.
페일오버 동작
리전 페일오버 또는 수동 페일 페일오버 위해 시스템을 구성할 때는 다음 사항을 고려하세요.
리전 페일오버 발생하면 Atlas Stream Processing 페일오버 리전 의 비활성 페일오버 프로세서를 활성 프로세서로 승격합니다. 이러한 프로세서는 사용 가능한 마지막 체크포인트 부터 스트림 처리 재개합니다.
Atlas Stream Processing 체크포인트는 10분 이상 경과되지 않도록 보장됩니다. 그러나 페일오버 프로세서는 시작 시 마지막 체크포인트 이후 프라이머리 프로세서가 처리한 모든 데이터를 다시 처리합니다. 페일오버는 최소 한 번 처리 시맨틱을 보장 .
리전 페일오버 이벤트 중에 페일오버 프로세서가 시작에 실패하더라도 여전히 액티브 프로세서의 역할 맡습니다. 그런 다음 기본 원인을 해결하고 페일오버 리전 에서 정상적으로 프로세서를 다시 시작할 수 있습니다.
관찰 가능성
Atlas Stream Processing 작업 공간, 연결, 프로세서의 성능과 상태를 평가할 수 있는 다양한 가시성 도구를 제공합니다. 또한 리전 서비스 상태 및 중단을 추적 하려면 MongoDB Cloud 상태 페이지를 방문하세요.
Atlas Stream Processing 확장
Atlas Stream Processing 스트림 프로세서당 리소스를 프로비저닝합니다. 자세한 학습 은 계층 선택 가이드를 참조하세요.
Atlas 클러스터에서 작동하는 Atlas Stream Processing 프로세서의 경우, 파이프라인 I/O 요구 사항에 비례하여 프로세서와 클러스터를 모두 확장하다 해야 합니다. 특히 $lookup 또는 $merge 작업을 대량으로 수행하는 프로세서를 클러스터 업스케일링의 후보로 평가합니다.
변경 스트림 고려 사항
Atlas Stream Processing Atlas cluster $source를 사용하여 변경 스트림 이벤트를 사용할 수 있습니다. 이러한 스트림 프로세서의 최적의 성능과 안정성을 보장하려면 다음 고려 사항을 검토 .
재개 옵션
Atlas Stream Processing 변경 스트림
$source``s from either the last stored checkpoint with ``resumeFromCheckpoint또는startAtOperationTime로 특정 시간의 재개를 지원합니다. 처리된 데이터의 격차나 중복을 방지하려면 주어진 시나리오에서 사용할 재개 옵션에 관한 표준화된 정책을 정의하세요.백로그 수집
대규모 네임스페이스 에서 작동하는 스트림 프로세서는 초기 캐치 처리 에 오랜 시간이 걸릴 수 있습니다. 스트림 프로세서의 네임스페이스 범위를 줄이거나 더 최근의 점 선택하여 이 초기 따라잡기 기간을 줄이는 것을 고려하세요.
스트림 이미지 변경
감사, 트랜잭션 보상 및 실행 취소 작업을 수행하려면 전처리 문서 상태 에 대한 액세스 필요합니다. Atlas 소스로 사용하여 작업할 때는 사전 및 사후 이미지 문서화를 활성화 이러한 작업을 지원 . 문서 사전 또는 사후 이미지에 대한 지원 출시할 때는 시스템 전체의 적용 범위와 안정성을 확인하세요.
``$replaceRoot`` 단계
변경 스트림 소스는 영향을 받는 문서 의 콘텐츠와 운영 메타데이터 번들로 제공하는 문서를 반환합니다. 이러한 문서를 싱크에 쓰려면 소비자가 소스 문서 의 비즈니스 로직이 아닌 변경 이벤트 스키마 로 작업해야 합니다. 메타데이터 필요하지 않은 경우 추가 처리 전에
$replaceRoot단계를 사용하여 소스 콘텐츠 하위 문서를 승격합니다.조인 지향 파이프라인
Atlas Stream Processing 스트리밍 데이터의 조인과 같은 강화를 활성화 하는
$lookup단계를 지원합니다. 이러한 작업은 처리 지연 시간 증가시킬 수 있습니다. 싱크에 쓰기 전에 수행해야 하는$lookup작업으로만 Atlas Stream Processing 파이프라인을 제한하고, 미리 계산된 뷰에 대한 더 복잡한 인리치먼트는 남겨두는 것이 좋습니다.오래된 체크포인트
체크포인트에는 처리 로직이 아닌 이벤트 기록만 포함됩니다. 체크포인트 에서 작업을 재개하면 스트림 프로세서가 현재 파이프라인의 로직을 이전 이벤트에 적용하므로 기존 다운스트림 상태 와 새 출력이 일치하지 않을 수 있습니다. 상당히 다른 처리 의미 체계가 필요한 경우 체크포인트 에서 재개하는 대신 새 스트림 프로세서를 도입하는 것이 좋습니다.
계획 재시작
다시 시작하는 동안 스트림 프로세서의 새 이벤트 처리량 감소할 수 있습니다. 시스템 복원력을 높이려면 일시적으로 감소된 용량 고려하여 재시작 예정 예약합니다.
페일오버 계획
리전 간에 스트림 프로세서 체크포인트를 공유 , 안전한 재개 지점을 선택하고, 출력 일관성 검증하기 위한 표준 절차를 개발하여 리전 페일오버 이벤트로 인해 데이터 품질 문제가 발생하지 않도록 합니다.