메인 콘텐츠로 건너뛰기

개요

OneSignal + Amazon Redshift 통합은 Redshift 데이터 웨어하우스에서 OneSignal로 사용자 지정 이벤트를 동기화하여 사용자 행동을 기반으로 자동화된 메시징 캠페인 및 Journeys를 트리거할 수 있습니다. Amazon Redshift는 기존 비즈니스 인텔리전스 도구를 사용하여 대용량 데이터를 비용 효율적으로 분석할 수 있는 완전 관리형 페타바이트급 데이터 웨어하우스 서비스입니다.

요구 사항

Amazon Redshift

  • 네트워크 액세스 권한이 있는 Redshift 클러스터
  • 적절한 권한이 있는 데이터베이스 사용자
  • 구조화된 행동 데이터가 포함된 이벤트 테이블
  • OneSignal에서 Redshift 클러스터로의 네트워크 연결

설정

1

OneSignal용 전용 사용자 생성

적절한 권한으로 전용 사용자 계정을 생성합니다:
-- Create OneSignal user with strong password
CREATE USER CENSUS WITH PASSWORD '<strong-unique-password>';

-- Create private bookkeeping schema for sync state (skip if read-only mode)
CREATE SCHEMA CENSUS;

-- Grant full access to bookkeeping schema (skip if read-only mode)
GRANT ALL ON SCHEMA CENSUS TO CENSUS;

-- Ensure access to existing objects in bookkeeping schema (skip if read-only mode)
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
2

이벤트 데이터에 권한 부여

이벤트 데이터가 포함된 스키마에 읽기 액세스 권한을 제공합니다:
-- Grant schema access (repeat for each schema with event data)
GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;

-- Grant read access to existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;

-- Grant read access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;

-- Grant execute permissions on functions
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your_schema>" TO CENSUS;
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
3

네트워크 액세스 구성

Redshift 보안 그룹에 OneSignal의 IP 주소를 추가합니다. Redshift는 기본적으로 외부 액세스를 차단합니다.통합 설정에서 해당 지역의 OneSignal IP 주소를 찾을 수 있습니다. 자세한 내용은 AWS Redshift 도움말 센터를 방문하세요.
4

OneSignal에 연결

OneSignal에서 Data > Integrations으로 이동하여 Add Integration을 클릭합니다.
  1. 목록에서 Amazon Redshift 선택
  2. 연결 세부 정보 입력:
    • Host: Redshift 클러스터 엔드포인트
    • Port: 일반적으로 5439
    • Database: 데이터베이스 이름
    • Username: CENSUS
    • Password: 생성한 비밀번호
  3. 연결 테스트
  4. 이벤트 데이터가 포함된 테이블 구성

이벤트 데이터 매핑

를 OneSignal의 사용자 지정 이벤트 형식에 매핑합니다:
OneSignal 필드설명필수
nameevent_name이벤트 식별자Yes
external_iduser_id사용자 식별자Yes
timestampevent_timestamp이벤트가 발생한 시간No
propertiesevent_dataNo

예제 이벤트 테이블 스키마

-- Example Redshift event table
CREATE TABLE analytics.user_events (
    event_id BIGINT IDENTITY(1,1),
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP DEFAULT GETDATE(),
    event_data SUPER,
    session_id VARCHAR(255),
    created_at TIMESTAMP DEFAULT GETDATE()
)
DISTKEY(user_id)
SORTKEY(event_timestamp);

SQL 쿼리 모드

이벤트 데이터를 변환하기 위한 사용자 지정 SQL 쿼리를 작성하세요:
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, GETDATE())
    AND JSON_EXTRACT_PATH_TEXT(event_data, 'value')::NUMERIC > 100
ORDER BY event_timestamp DESC;

dbt 통합

Redshift와 함께 dbt를 사용하는 경우 각 dbt 실행 후에도 OneSignal이 액세스 권한을 유지하도록 하세요:

옵션 1: 세분화된 권한

dbt 프로젝트에 post-hook을 추가하여 각 모델이 빌드된 후 액세스 권한을 부여하세요:
-- In your dbt model
{{ config(
    post_hook="GRANT SELECT ON {{ this }} TO CENSUS"
) }}

옵션 2: 기본 권한(권장)

dbt 프로덕션 사용자에 대한 기본 권한을 부여하세요:
-- Must be run by Redshift superuser
ALTER DEFAULT PRIVILEGES FOR USER "<your_dbt_run_user>"
IN SCHEMA "<your_dbt_target_schema>"
GRANT SELECT ON TABLES TO CENSUS;

고급 네트워크 구성

SSH 터널 설정

프라이빗 네트워크의 Redshift 클러스터의 경우:
  1. SSH 사용자 생성: SSH 호스트에 전용 사용자 설정
  2. 터널 구성: OneSignal 통합 설정에서 “SSH 터널 사용” 활성화
  3. 키 쌍 설치: ~/.ssh/authorized_keys에 OneSignal의 공개 키 추가
  4. 연결 테스트: 터널 연결 확인

VPC 배포

AWS VPC 내의 Redshift의 경우: OneSignal은 효율적인 대량 데이터 추출을 위해 UNLOAD 명령을 사용합니다. VPC 배포에는 Redshift가 S3와 통신할 수 있도록 S3 VPC 엔드포인트가 필요합니다. S3 VPC 엔드포인트 설정:
  1. AWS 콘솔에서 VPC 서비스로 이동
  2. S3 서비스에 대한 VPC 엔드포인트 생성
  3. Redshift 서브넷과 연결
  4. 라우팅 테이블 구성

성능 최적화

배포 및 정렬 키

분석 워크로드를 위해 이벤트 테이블을 최적화하세요:
-- Distribute by user_id for user-centric queries
CREATE TABLE analytics.user_events (
    -- columns
)
DISTKEY(user_id)
SORTKEY(event_timestamp, event_name);

컬럼형 스토리지

분석을 위해 Redshift의 컬럼형 스토리지를 활용하세요:
  • 압축: Redshift가 자동으로 열을 압축합니다
  • 영역 맵: 정렬된 데이터로 쿼리 성능 향상
  • 열 지향: 이벤트 데이터에 대한 분석 쿼리에 효율적

제한 사항

  • 여러 스키마에는 별도의 권한 부여가 필요합니다
  • 교차 스키마 테이블을 참조하는 뷰에는 추가 권한이 필요합니다
  • 복잡한 저장 프로시저 액세스에는 추가 설정이 필요할 수 있습니다
  • VPC 배포에는 S3 VPC 엔드포인트 구성이 필요합니다

FAQ

OneSignal은 대규모 이벤트 데이터 세트를 어떻게 처리하나요?

OneSignal은 대규모 분석 워크로드에 최적화된 Redshift의 UNLOAD 명령을 사용하여 효율적인 대량 데이터 추출을 수행합니다.

읽기 전용 모드를 사용할 수 있나요?

예, 더 간단한 설정을 선호하고 OneSignal이 테이블을 생성하도록 허용할 수 없는 경우 북키핑 스키마 생성을 건너뛰고 읽기 전용 모드를 사용할 수 있습니다.

dbt 호환성은 어떻습니까?

OneSignal은 dbt 실행 후에도 권한이 유지되도록 특정 dbt 통합 패턴을 제공합니다. 설정에 따라 post-hook 또는 기본 권한을 사용하세요.