Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Upstash Kafka 및 MongoDB 커넥터를 사용하여 지연 시간이 짧은 분할 플랫폼 구축

소개

  • 세분화 플랫폼은 고객, 제품 및 기타 관련 데이터를 이해하고 분류하는 데 중요한 역할을 합니다.
  • 세분화에는 특정 기준에 따라 더 큰 그룹을 더 작고 더 동질적인 하위 그룹으로 나누는 작업이 포함됩니다.
  • 다음은 개인화된 마케팅 전략, 타겟 프로모션, 더욱 맞춤화된 쇼핑 경험을 위한 고객 세분화 등 다양한 영역의 세분화 플랫폼의 몇 가지 예입니다.

목차

  1. 요구사항 이해
  2. 기본 아키텍처
  3. 건축 구성요소
  4. 디자인 과제
  5. 제안된 솔루션
  6. 마무리 메모

1. 요구 사항 이해

전자 상거래의 고객 세그먼트를 위한 저지연 세분화 플랫폼을 설계하면 실시간 처리, 사용자 경험 및 고객 행동의 동적 특성과 관련된 특정 과제가 발생합니다. 이와 관련하여 발생할 수 있는 몇 가지 문제는 다음과 같습니다.

  1. 대규모 및 동적 데이터세트

    • 전자상거래 플랫폼은 고객 프로필, 제품 카탈로그, 거래 내역을 포함하여 지속적으로 변화하는 대규모 데이터 세트를 처리합니다.
    • 짧은 지연 시간을 유지하면서 이러한 방대한 데이터 세트를 실시간으로 관리하고 처리하는 것은 중요한 과제입니다.
  2. 확장성

    • 다양한 워크로드를 처리하려면 확장성을 고려한 설계가 필수적입니다. 지연 시간을 희생하지 않고 더 많은 처리 장치를 추가하여 시스템을 수평적으로 확장할 수 있도록 하려면 신중한 아키텍처 계획이 필요합니다.
  3. 비동기 처리

    • 비동기 처리를 활용하면 구성요소를 분리하고 전반적인 시스템 응답성을 향상시키는 데 도움이 될 수 있습니다. 그러나 복잡성이나 지연을 초래하지 않고 비동기 통신을 관리하려면 신중한 설계가 필요합니다.
  4. 데이터 흐름 및 파이프라인

    • 효율적인 데이터 흐름과 처리 파이프라인을 설계하는 것은 지연 시간이 짧은 시스템에 매우 중요합니다.
    • 구성요소 간 데이터 전송에 소요되는 시간을 최소화하고 처리 단계 순서를 최적화하면 전체 지연 시간에 큰 영향을 미칠 수 있습니다.
  5. 마이크로서비스 아키텍처

    • 마이크로서비스 아키텍처를 구현하면 확장성과 유연성을 향상할 수 있습니다. 그러나 지연 시간 없이 마이크로서비스 간의 원활한 통신을 보장하는 것은 어려울 수 있습니다.
    • 효율적인 API를 설계하고 서비스 간 통신을 관리하는 것이 중요합니다.

2. 기본 아키텍처

세분화 플랫폼은 세 가지 주요 하위 시스템으로 구성됩니다. Upstash Kafka 및 MongoDB 커넥터를 사용하여 지연 시간이 짧은 분할 플랫폼 구축

  1. 컴퓨팅 서비스(오프라인 일괄 컴퓨팅/온라인 컴퓨팅):

    • Spark 작업을 사용하여 원시 데이터에서 사용자 세그먼트를 추출합니다.
    • Spark 작업은 데이터 레이크에서 데이터를 검색, 정리, 검증합니다.
    • 결과 데이터는 제공 하위 시스템으로 전송됩니다.
  2. 수집 서비스:

    • 계산된 세그먼트를 컴퓨팅 서비스에서 세분화 서비스로 전송합니다.
    • 세그먼트 내 사용자 포함 및 제외를 관리합니다.
  3. 세그먼트 서비스(서비스 계층):

    • 사용자 서비스 또는 할인 서비스에 대한 특정 요구 사항을 기반으로 사용자 세그먼트를 제공합니다.

    • 할인 서비스는 사용자 ID를 기반으로 쿼리하여 사용 가능한 할인을 계산할 수 있습니다

      사용자 ID 세그먼트 ID 작성 날짜 2521세그먼트 X2023년 12월 3일2788세그먼트 Y2023년 12월 3일3943세그먼트 Z2023년 12월 3일

3. 건축 구성요소

세분화 플랫폼은 다음과 같은 주요 구성 요소로 구성됩니다. Upstash Kafka 및 MongoDB 커넥터를 사용하여 지연 시간이 짧은 분할 플랫폼 구축

  1. 데이터 레이크 - S3

    • S3는 데이터 레이크 역할을 하기 위해 널리 채택되고 다양한 옵션입니다. 확장 가능하고 내구성이 뛰어난 개체 스토리지 기능을 통해 다양한 데이터 유형을 대량으로 효율적으로 저장하고 관리하는 데 적합합니다.
    • S3를 데이터 레이크로 활용함으로써 조직은 데이터 저장, 검색 및 관리에 대한 강력한 기능의 이점을 누릴 수 있으므로 다양한 데이터 중심 애플리케이션 및 아키텍처에서 널리 선택됩니다.
  2. 트랜잭션 데이터베이스 MongoDB

    • MongoDB의 문서 지향 모델은 복잡한 데이터 구조를 JSON과 유사한 형식으로 저장할 수 있으므로 트랜잭션 사용 사례에 유용합니다. 이러한 유연성은 시간이 지남에 따라 데이터 구조가 발전할 수 있는 애플리케이션에 특히 유용합니다.
  3. Upstash Kafka 클러스터

    • 웹 애플리케이션에서 Upstash Kafka로 트래픽(클릭) 이벤트를 스트리밍한 다음 추가 처리를 위해 데이터 레이크에 저장할 수 있습니다.
    • Upstash Kafka는 최초의 서버리스 Kafka 제품입니다. 요청당 지불 모델을 사용하면 수백 달러를 지불하지 않고도 완전 관리형 Kafka 클러스터를 가질 수 있습니다. 무료 등급을 사용하면 신용 카드를 입력하지 않고도 몇 초 만에 Kafka 클러스터를 생성할 수 있습니다. Upstash 팀은 귀하가 앱에 집중하는 동안 가용성, 유지 관리, 확장, 업그레이드 및 기타 모든 지루한 작업을 처리합니다.
  4. Upstash MongoDB 소스 커넥터

    • MongoDB 소스 커넥터는 Apache Kafka Connect와 같은 데이터 통합 및 스트리밍 플랫폼에서 MongoDB 데이터베이스에 연결하고 변경 사항이나 이벤트를 실시간으로 캡처하는 데 사용되는 구성 요소입니다.
    • Upstash MongoDB 소스 커넥터는 MongoDB에서 다른 시스템이나 플랫폼으로의 데이터 이동을 촉진하여 원활한 데이터 통합 및 분석을 가능하게 합니다.
  5. 아파치 스파크

    • Apache Spark는 단일 노드 컴퓨터 또는 클러스터에서 데이터 엔지니어링, 데이터 과학, 기계 학습을 실행하기 위한 다국어 엔진입니다.
    • Upstash Kafka를 Upstash에서 즉시 제공하는 Apache Spark와 통합하면 웹 애플리케이션의 트래픽(클릭) 이벤트를 Upstash Kafka로 스트리밍한 후 실시간으로 분석할 수 있습니다.
    • Apache Spark는 사용자 세그먼트 업데이트 처리를 담당합니다. 그런 다음 이러한 업데이트는 Aerospike 데이터베이스 업데이트로 전파되기 전에 Upstash Kafka에 기록됩니다.

4. 디자인 과제

세분화 엔진의 채택 및 사용이 증가함에 따라 시스템에 특정 문제가 발생할 수 있습니다.

  • 쓰기 QPS 병목 현상:더 많은 세그먼트를 생성하면 QPS(초당 쓰기 쿼리)에 병목 현상이 발생하여 세그먼트 생성 대기 시간이 길어질 수 있습니다.
  • 낮은 지연 시간 요청:매우 짧은 지연 시간을 달성하는 것은 특정 통신을 전송하는 데 매우 중요하며, 특히 사용자가 특정 세그먼트에 속하는지 여부를 확인할 때 더욱 그렇습니다.
  1. 읽기 지연 시간

    • 더욱이, 플랫폼이 계속 발전함에 따라 읽기에 필요한 지연 시간이 50ms 미만이더라도 이 속도는 특정 서비스 및 향후 사용 사례에 적합하지 않을 수 있다는 예상이 있습니다.

    • 예를 들어, 알림 서비스는 통신을 보내기 전에 사용자 세그먼트 멤버십을 확인하기 위해 신속한 확인이 필요할 것으로 예상됩니다. 각 통신 요청에 대해 지연 시간을 늘리는 것은 앞으로는 용납될 수 없을 것으로 예상됩니다.

  2. Kafka 인프라 관리

    • 트랜잭션 소스에서 분당 수백만 개의 이벤트를 처리하는 것은 Kafka 인프라를 사용할 때 실제로 문제가 될 수 있으며, 이러한 높은 처리량을 효과적으로 관리하려면 다양한 요소를 신중하게 고려해야 합니다.

    • 정기적인 성능 테스트와 최적화는 높은 처리량의 Kafka 인프라를 유지하는 데 핵심입니다.

  3. MongoDB 변경 데이터 캡처

    • 특히 MongoDB와 같은 기존 트랜잭션 데이터베이스에 저장된 이벤트를 웹 애플리케이션에서 집계한 다음 데이터 레이크로 푸시하려면 실제로 약간의 노력이 필요할 수 있습니다.

    • MongoDB에서 제공하는 변경 데이터 캡처 메커니즘을 활용하거나 맞춤형 솔루션을 구현하여 데이터베이스의 변경 사항을 캡처하세요.

5. 제안된 솔루션

  1. 읽기 지연 시간을 개선하는 분산 캐시 Aerospike

    • Aerospike에는 사용자 ID가 사용자 세그먼트에 액세스하기 위한 기본 키 역할을 하는 사용자 세그먼트가 포함됩니다.

    • 또한 세그먼트 ID에 보조 인덱스를 구현하여 세그먼트 사용자 검색을 간소화하고 세그먼트 사용자를 별도로 저장할 필요성을 제거할 수도 있습니다.

    • 또한 이 설계는 캐시로 작동하여 잠재적으로 Redis의 필요성을 대체할 수 있는 가능성과 함께 지연 시간 요구 사항을 충족하는 것을 목표로 합니다.

    • 현재 Aerospike를 Upstash Redis로 교체하려면 세그먼트 사용자와 사용자 세그먼트라는 두 가지 데이터 세트를 관리해야 합니다.

  2. Kafka 인프라 관리를 위한 서버리스 Upstash Kafka

    • Upstash Kafka를 사용하면 완벽하게 관리되는 서비스를 얻을 수 있습니다. 이는 Upstash가 Kafka 클러스터 실행과 관련된 서버 프로비저닝, 확장, 유지 관리 등 모든 기술 작업을 처리한다는 것을 의미합니다.

    • 이렇게 하면 인프라 설정, 모든 것이 올바르게 작동하도록 하고 시간이 지남에 따라 유지 관리하는 것과 같은 일에 대해 걱정할 필요가 없습니다.

    • 이를 통해 고유한 요구 사항과 목표에 맞게 Kafka를 활용하는 데 집중할 수 있습니다. 이제 인프라 관리 부담 없이 특히 빠르게 발전하는 개발 환경에서 애플리케이션의 전반적인 품질을 향상시키는 데 에너지를 쏟을 수 있습니다.

    • 가격이 0으로 조정됨: 진정한 서버리스 서비스는 적극적으로 사용하지 않는 경우 비용을 청구해서는 안 됩니다. 요청당 가격은 당사의 가장 뛰어난 기능입니다. 여러분은 처음부터 이 가격 모델에 맞게 제품과 인프라를 설계해 왔습니다. 이를 위해서는 고정 비용을 최소화해야 하는데, 이는 카프카 같은 야수에게는 상당히 어려운 일입니다.

    • 사용자에게 운영 부담 없음: 사용자가 Kafka 주제를 생성하고 사용하기 시작합니다. 고가용성, 확장성, 업그레이드, 백업… 모두 우리의 책임입니다.

    • 무연결: 서버리스 함수는 상태를 유지하지 않습니다. 따라서 상태 비저장 연결을 통해 데이터에 액세스할 수 있어야 합니다. Kafka 제품은 Kafka TCP 프로토콜을 지원하므로 모든 Kafka 클라이언트는 Upstash와 함께 작동합니다. 또한 AWS Lambda 또는 Cloudflare Workers와 같은 비연결 환경을 활성화하기 위한 REST API가 내장되어 있습니다.

  3. Upstash MongoDB 소스 커넥터를 사용하는 MongoDB CDC

    • Kafka Connect는 한 줄의 코드도 작성하지 않고 Apache Kafka와 다른 시스템 간에 데이터를 스트리밍하는 도구입니다. Kafka 싱크 커넥터를 통해 데이터를 다른 스토리지로 내보낼 수 있습니다. Kafka 소스 커넥터를 통해 다른 시스템에서 Kafka 주제로 데이터를 가져올 수 있습니다.

    • Kafka 커넥터는 자체 호스팅이 가능하지만 추가 프로세스/머신을 설정하고 유지 관리해야 합니다. Upstash는 Kafka 클러스터용 커넥터의 호스팅 버전을 제공합니다. 이렇게 하면 추가 시스템을 유지 관리해야 하는 부담이 생기고 클러스터에 가깝기 때문에 성능도 향상됩니다.

6. 마무리 메모

이 블로그 게시물에서는 Upstash가 제공하는 기술을 활용하는 저지연 세분화 플랫폼의 설계 원칙을 살펴봅니다. 인프라는 수백만 명의 사용자를 수용하고 데이터 레이크에 저장된 테라바이트급 데이터를 처리하면서 원활하게 확장되도록 설계되었습니다.