Connecting

Clickstream Analytics 101 서울리전 배포 본문

클라우드

Clickstream Analytics 101 서울리전 배포

팬도라 2023. 9. 19. 17:15
반응형

AWS Clickstream Analytics는 웹 및 모바일 애플리케이션(Android 및 iOS용)에서 고객의 클릭스트림 데이터를 수집하여 분석을 진행할 수 있도록 하는 솔루션으로 7월에 공개되었습니다.

FE, Application 개발자가 사용자의 인터렉션을 수신받아 처리하는 방법은 일반적으로 구글 애널리틱스를 사용하였습니다. 실시간 보고서를 활용하여 웹사이트에서 발생한 모든 활동을 모니터링 할 수 있고 방문객의 행동을 파악하여 마케팅 캠페인을 테스트하고 문제 해결 및 웹 트래픽을 모니터링 하여 목표를 달성하는데 도움이 됩니다.

AWS Clickstream Analytics를 통해 사용자 데이터를 수집, 분석, 전처리 작업에 대한 모든것을 AWS 서비스를 사용하여 운영할 수 있으며, Kinesis 또는 Amazon Redshift 등 프로비저닝된 AWS 서비스에 대한 비용만 지불합니다.

사용사례

클릭스트림 데이터는 수많은 온라인 비즈니스 분석 사용 사례에서 중추적인 역할을 하며, AWS의 클릭스트림 분석은 다음에 적용될 수 있습니다.

  • 사용자 행동 분석
    사용자 행동 분석의 클릭스트림 데이터는 웹 사이트 또는 애플리케이션에서 사용자 상호 작용의 순차적 및 시간순 패턴에 대한 통찰력을 제공하여 기업이 사용자 탐색, 선호도 및 참여 수준을 이해하여 전반적인 제품 경험을 향상하고 제품 혁신을 주도하도록 돕습니다.
  • 자사 고객 데이터 플랫폼(CDP)
    클릭스트림 데이터는 다른 비즈니스 데이터 소스(예: 주문 내역, 사용자 프로필)와 함께 고객이 사용자에 대한 포괄적인 보기를 제공하는 자사 고객 데이터 플랫폼을 만들 수 있도록 하여 기업이 고객 경험을 개인화하고 고객을 최적화할 수 있도록 합니다. 여정을 탐색하고 타겟 마케팅 메시지를 전달합니다.
  • 마케팅 분석
    마케팅 분석의 클릭스트림 데이터는 사용자의 클릭 경로 및 마케팅 캠페인과의 상호 작용에 대한 자세한 정보를 제공하므로 기업은 캠페인 효과를 측정하고 마케팅 전략을 최적화하며 전환율을 높일 수 있습니다.

현재 도쿄(ap-northeast-1), 버지니아 북부(us-east-1)에서는 정상적으로 사용할 수 있으나 서울(ap-northeast-2)에서는 배포시 일부 오류사항이 있어 본 가이드에서는 AWS Clickstream Analytics 배포 방법과 오류 해결 방안에 대해 논의합니다.

요구사항

  • 하나 이상의 Amazon VPC
  • 2개 AZ에 걸쳐 2개 이상의 퍼블릭 서브넷
  • 3개 AZ에 걸쳐 3개 이상의 프라이빗(NAT 게이트웨이 또는 인스턴스 포함) 서브넷
  • S3 버킷
  • QuickSight 구독

아키텍처

AWS Clickstream Analytics는 AWS 클라우드 계정에 AWS CloudFormation 템플릿을 배포하고 다음 설정을 완료합니다.

  • Amazon CloudFront는 Amazon S3 버킷에서 호스팅되는 프론트엔드 웹 UI 자산과 Amazon API 게이트웨이 및 AWS Lambda로 호스팅되는 백엔드 API를 배포합니다.
  • 인증에는 Amazon Cognito 사용자 풀 또는 OIDC(OpenID Connect)가 사용됩니다.
  • 웹 UI 콘솔은 Amazon DynamoDB를 사용하여 영구 데이터를 저장합니다.
  • 데이터 파이프라인의 수명 주기 관리를 오케스트레이션하는 데는 AWS 단계 함수, AWS CloudFormation, AWS Lambda 및 Amazon EventBridge가 사용됩니다.

데이터 파이프라인은 시스템 운영자가 지정한 리전에서 프로비저닝됩니다. 이 파이프라인은 애플리케이션 로드 밸런서, Amazon ECS, Amazon Managed Streaming for Apache Kafka(Amazon MSK), Amazon Kinesis 데이터 스트림, Amazon S3, Amazon EMR 서버리스, Amazon Redshift 및 Amazon QuickSight로 구성됩니다.

이 솔루션의 핵심 기능은 클릭스트림 데이터를 수집, 처리 및 분석하기 위한 데이터 파이프라인을 구축하는 것입니다. 데이터 파이프라인은 네 가지 모듈로 구성됩니다

  • 수집 모듈
    • (선택 사항) 수집 모듈은 AWS 글로벌 가속기 엔드포인트를 생성하여 클라이언트(웹 애플리케이션 또는 모바일 애플리케이션)에서 이벤트를 전송할 때의 지연 시간을 줄입니다.
    • ELB(Elastic Load Balancing)는 수집 웹 서버의 부하 분산에 사용됩니다.
    • (선택 사항) 인증 기능을 사용하도록 설정하면 ALB가 OIDC 공급자와 통신하여 요청을 인증합니다.
    • ALB는 인증되고 유효한 모든 요청을 수집 서버로 전달합니다.
    • Amazon ECS 클러스터가 수집 플릿 서버를 호스팅합니다. 각 서버는 프록시와 작업자 서비스로 구성됩니다. 프록시는 HTTP 프로토콜의 외관이며, 워커는 사용자가 선택한 데이터 싱크에 이벤트를 전송합니다.
    • Amazon Kinesis 데이터 스트림이 버퍼로 사용되는 경우, AWS Lambda는 Kinesis 데이터 스트림에서 클릭 스트림 데이터를 소비한 다음 일괄적으로 Amazon S3에 싱크합니다.
    • Amazon MSK를 버퍼로 사용하는 경우, MSK 커넥터는 클릭스트림 데이터를 Amazon S3에 일괄적으로 싱크하는 S3 커넥터 플러그인으로 프로비저닝됩니다.
    • Amazon S3를 데이터 싱크로 선택한 경우, 수집 서버는 이벤트 배치를 버퍼링하여 Amazon S3로 싱크합니다.
  • 데이터 처리 모듈
    • Amazon EventBridge는 데이터 처리 작업을 주기적으로 트리거하는 데 사용됩니다.
    • 구성 가능한 시간 기반 스케줄러가 AWS 람다 함수를 호출합니다.
    • 람다 함수는 클릭스트림 이벤트 배치를 처리하기 위해 Spark 기반의 EMR 서버리스 애플리케이션을 시작합니다.
    • EMR 서버리스 애플리케이션은 구성 가능한 트랜스포머와 보강 플러그인을 사용하여 소스 S3 버킷의 클릭스트림 데이터를 처리합니다.
    • 클릭스트림 이벤트를 처리한 후 EMR 서버리스 애플리케이션은 처리된 클릭스트림 데이터를 싱크 S3 버킷에 싱크합니다.
  • 데이터 모델링 모듈
    • 처리된 클릭스트림 데이터가 Amazon S3 버킷에 기록되면 개체 생성 이벤트가 발생합니다.
    • 1단계에서 발생한 이벤트에 대해 Amazon EventBridge 규칙이 생성되고, 이벤트가 발생하면 AWS Lambda 함수가 호출됩니다.
    • 람다 함수는 소스 이벤트를 Amazon DynamoDB 테이블에 로드할 수 있도록 유지합니다.
    • 데이터 처리 작업이 완료되면 이벤트가 Amazon EventBridge로 전송됩니다.
    • 아마존 이벤트 브리지의 사전 정의된 이벤트 규칙에 따라 EMR 작업 성공 이벤트가 처리됩니다.
    • 이 규칙은 AWS 단계 함수 워크플로우를 호출합니다.
    • 워크플로는 목록 객체 람다 함수를 호출하여 DynamoDB 테이블을 쿼리하여 로드할 데이터를 찾은 다음, 이벤트 데이터 배치에 대한 매니페스트 파일을 생성하여 로드 성능을 최적화합니다.
    • 몇 초 후 상태 확인 람다 함수가 로드 작업의 상태를 확인합니다.
    • 로드가 여전히 진행 중이면 상태 확인 람다 함수는 몇 초 더 기다립니다.
    • 모든 개체가 로드되면 워크플로가 종료됩니다.
  • 보고 모듈
    • Amazon QuickSight의 VPC 연결은 VPC 내에서 Redshift를 안전하게 연결하는 데 사용됩니다.
    • 데이터 원본, 데이터 세트, 템플릿, 분석 및 대시보드는 즉시 사용 가능한 분석 및 시각화를 위해 Amazon QuickSight에서 생성됩니다.

Deploy Clickstream Analytics on AWS solution stack

AWS 환경에서 아래 그림과 같이 VPC, Public Subnet, Private Subnet, NAT Gateway를 생성합니다.

동일 리전에 고유한 이름을 가진 S3 버킷을 생성합니다.

아래 링크로 접속하여 "Launch stack"을 클릭하여 CloudFormation을 배포합니다.

매개변수 입력에서 사용자 이메일을 입력하고 배포를 진행하면 임시 비밀번호가 포함된 이메일이 발송됩니다.
배포가 완료되면 출력 부분에서 ControlPlaneUrl 링크를 클릭하여 로그인 페이지로 이동합니다.

초기에 입력한 이메일 주소와, 임시 비밀번호를 입력하면 비밀번호를 변경해야 하며, 이후 정상적으로 Clickstream Analytics 콘솔에 접속할 수 있습니다.

이후 작업을 진행하기 이전 QuickSight 구독을 진행해야 합니다. AWS Console에서 QuickSight를 검색하여 이동합니다.

QuickSight Edition 선택 페이지에서 Enterprise를 선택 하고 계속 버튼을 클릭합니다.

추가 기능 활성화 단계를 건너뜁니다.

QuickSight 구독에 필요한 정보를 입력합니다.

QuickSight에 로그인하여 QuickSight 계정을 생성합니다.

아래와 같은 화면을 확인하면 QuickSight 가입이 완료된 것입니다.

프로젝트 생성

AWS 콘솔의 Clickstream Analytics 로 이동하여 홈 페이지 에서 "프로젝트 생성"을 클릭합니다.

팝업 창에서 프로젝트 이름을 입력합니다.

 

환경 유형은 DEV를 선택하고 넘어갑니다.

Create를 클릭 하고 프로젝트 생성이 완료될 때까지 기다리면 프로젝트 페이지로 이동됩니다.

파이프라인 구성

AWS 콘솔의 Clickstream Analytics 로 이동하여 탐색 모음 에서 "프로젝트"를 클릭한 다음 이전 단계에서 방금 생성한 프로젝트를 선택하고 페이지 오른쪽 상단에서 "세부 정보 보기"를 클릭하면 다음 페이지로 이동합니다.

프로젝트 홈페이지에서 "파이프라인 구성" 버튼을 클릭하면 프로젝트에 대한 데이터 파이프라인 생성 마법사가 나타납니다.

서울리전으로 선택하며, 이전에 생성한 VPC를 선택합니다. 이후 설정은 아래 그림과 동일하게 구성합니다.

최소 2개 이상의 퍼블릭/프라이빗 서브넷을 선택합니다.
HTTPS Enable 항목을 Disable하고 Acknowledge 항목을 클릭합니다.

Data sink 설정은 다음과 같이 구성합니다.

  • Sink type : Amazon Kinesis Data Stream(KDS)
  • Provision mode : On-demand
  • Sink maximum interval : 30
  • Batch size : 500

다음 데이터 처리를 활성화 하고 다음과 같이 입력합니다.

  • Fixed Rate : 6 Minutes
  • Event freshness : 35 Days

데이터 분석을 위한 Redshift 구성을 진행합니다. 서버리스 환경을 선택하고 기본 RPU를 선택합니다.
3개의 프라이빗 서브넷을 선택하고 나머지 구성은 아래 화면과 동일하게 구성합니다.

QuickSight 사용자 중 한 명을 대시보드의 초기 소유자로 선택합니다.

파이프라인을 검토합니다. 모든 것이 제대로 되었다면 생성 버튼을 클릭합니다.

파이프라인은 실행이 완료되는 데 약 15분 정도 소요되고 성공하면 다음과 같이 표기됩니다.

하지만 서울 리전에서는 바로 성공하지 않고 CloudFormation 배포 과정에서 다음과 같이 오류가 발생합니다.

 

오류가 발생한 CloudFormation 업데이트 -> QuickSight Template Arn 항목에 다음과 같이 입력합니다.

  • arn:aws:quicksight:us-east-1:992879540294:template/clickstream-quicksight-template-protype-v1-0-5

앱 등록

AWS 콘솔의 Clickstream Analytics 로 이동하여 탐색 모음 에서 "프로젝트"를 클릭한 다음 이전 단계에서 방금 생성한 프로젝트를 선택하고 제목을 클릭하면 프로젝트 페이지로 이동합니다.

프로젝트 홈페이지에서 "+ Add Application" 버튼을 클릭하면 파이프라인에 앱을 추가 페이지로 이동합니다.

다음과 같이 작성합니다.

  • App name: notepad
  • Description: An app to create and manage notepad
  • Android package name: com.farmerbb.notepad

앱 등록을 마무리하고 JSON 파일을 다운로드 받습니다.

파이프라인 업데이트에 3분정도 소요됩니다.

 

만약 오류가 발생한다면 CloudFormation에 RedShiftDBSchemaParam 값을 APP ID를 입력하고 업데이트 합니다.

샘플 데이터를 다운로드 받기 위해 다음과 같이 수행합니다.

git clone https://github.com/awslabs/clickstream-analytics-on-aws.git
cd clickstream-analytics-on-aws/examples/standalone-data-generator

pip3 install requests

enums.py에 APP_ID, ENDPOINT 항목을 이전에 다운로드 받은 json을 참고하여 업데이트 합니다.

 

python3 create_event.py

코드를 수행하면 모바일에서 수집되는 랜덤한 데이터가 job finished, upload 4360476 events, cost: 913100ms와 같이 생성되고 QuickSight를 통해 대시보드를 확인할 수 있습니다.

Comments