Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REFACTOR] 상태 polling과 analytics 상관관계 분석 #134

Open
2 tasks
Klomachenko opened this issue Nov 21, 2024 · 0 comments
Open
2 tasks

[REFACTOR] 상태 polling과 analytics 상관관계 분석 #134

Klomachenko opened this issue Nov 21, 2024 · 0 comments
Assignees

Comments

@Klomachenko
Copy link
Collaborator

Klomachenko commented Nov 21, 2024

Description

피드백 및 추가 이슈

  • refetch 2초로 두게 되었을 때의 비용에 대한 계산
    • 단순 aws 청구 비용이 아니라 사용되는 리소스에 대한 계산이 필요

[사용되는 리소스]

  • 네트워크 리소스 : 데이터 전송량(대역폭)
    • 2초마다 refetch시 많은 요청이 네트워크를 점유하여 트래픽에 영향을 미칠 수 있음
  • 서버 리소스 : CPU/메모리 사용량
    • 서버가 동시 처리 가능한 요청의 한계를 초과할 경우 성능 저하
  • 클라이언트 리소스 : 브라우저 성능
    • 짧은 간격으로 서버와 클라이언트가 통신할 경우, CPU와 메모리를 지속적으로 사용하여 애플리케이션 응답 저하를 통한 사용자가 앱을 사용하는 경험에 부정적 영향을 미칠 수 있음
  • 데이터베이스 리소스 : DB 쿼리 부하
    • 2초마다 요청 발생시 DB의 I/O 작업이 많아짐 → 특정 테이블, 인덱스에서 병목현상 발생 가능성 있음

analytics

  • 프로그램 출석 상태가 참여상태일 때 평균적인 동시 접속자를 알아낸다면?
    • 모든 접속자의 컴퓨터에서 2초마다 refetch를 보냈을 때 사용되는 리소스 양을 수치화
    • 수치화 한 양이 우리의 가용 자원 내에서 수용이 가능한지 판단

refetch 요청의 limit timer 관련

  • 주간발표가 시작되고 refetch 요청이 2초마다 가는 것을 최초 5분 동안만 가능하게 하자 라고 하였음
    • 사용자가 출석 상태가 참여상태일 때, 보통 몇 분 안에 출석하기 버튼을 누르는지에 대해서 파악

    • 해당 파악한 내용으로 가설을 세우고 논리적으로 분석하자

      예) 보통 3분 안에 출석하기 버튼을 누르므로 limit timer를 3분으로 놓고 그 동안만 2초마다 요청을 보내자 등

To Do

  • 프로그램 출석 상태 참여상태일 때 평균적인 동시 접속자 수 파악
    평균적으로 몇명이 refetch 요청을 보내는지를 파악할 수 있음
    모든 접속자의 컴퓨터에서 2초마다 refetch를 보냈을 때 사용되는 리소스 양을 수치화
  • refetch 요청 limit timer 파악
    출석하기 버튼을 보통 몇분 안에 다들 누르는지를 통해 limit timer를 파악하고, 나아가 지각을 몇분부터 지각으로 할 지도 파악할 수 있음

ETC

구글 애널리틱스를 활용한 분석 가능성

평균 동시 접속자 파악

  • 방법
    • 구글 애널리틱스의 실시간 보고서 및 사용자 활동 로그를 통해 특정 시간 동안의 동시 접속자를 추적 가능.
    • 유저 ID 또는 세션 데이터를 기반으로 특정 시간대에 “참여 상태”로 접속한 사용자를 필터링.
  • 적용
    • GA4에서는 “사용자 속성”이나 “이벤트 속성”을 설정해, 참여 상태에 있는 사용자의 접속 시간을 추적.
    • 이 데이터를 통해 평균 동시 접속 사용자 수와 이들이 서버에 미칠 부하를 추산 가능.

출석 버튼 클릭 패턴 파악

  • 방법
    • 버튼 클릭 이벤트를 이벤트 트래킹으로 설정.
    • 예: onClick 이벤트를 감지해 click_attend_button과 같은 사용자 이벤트 생성.
    • 이벤트 발생 시각 데이터를 통해 사용자가 출석 버튼을 클릭하는 평균 시간을 계산.
  • 적용
    • 분석 결과를 바탕으로 가설 설정
    • 예: 사용자가 참여 상태로 전환한 후 평균 3분 내에 출석 버튼을 누른다 → limit timer를 3분으로 설정.

refetch 요청이 서버에 미치는 영향 추산
구글 애널리틱스만으로 직접 리소스 사용량을 측정할 수는 없지만, 아래 데이터를 통해 간접적으로 추산 가능:

  • 이벤트 카운팅
    • 2초마다 refetch 요청이 발생하는 경우, 각 사용자의 요청 횟수를 집계 / 이를 통해 특정 시간 동안의 총 요청량 계산 가능.
  • 사용자 세션 추적
    • 특정 사용자 세션에서 발생한 요청 수를 합산하여 평균 요청 수 계산 / 이 데이터를 기반으로 네트워크/서버 리소스 사용량을 추정 가능.

추가적으로 필요한 설정

1. 커스텀 이벤트 설정

구글 애널리틱스에서 필요한 데이터를 분석하려면 커스텀 이벤트를 설정해야 합니다.

  • 이벤트 이름 예:

  • status_changed_to_attend

  • click_attend_button

  • refetch_request

2. 사용자 속성 정의

  • 참여 상태를 사용자 속성으로 정의:

  • 예: user_status = "attend"

  • 상태 변화 시 커스텀 이벤트를 통해 추적.

3. 보고서 커스터마이징

  • 대시보드를 설정해 특정 이벤트(출석 클릭, 상태 변경)와 연결된 데이터를 실시간으로 분석.

  • 커스텀 보고서를 통해 사용자별 평균 요청 횟수, 클릭 타이밍, 동시 접속자 수를 확인.

구글 애널리틱스만으로 해결할 수 없는 부분

  • 구글 애널리틱스는 네트워크 대역폭, 서버 CPU/메모리 사용량 등의 시스템 리소스 데이터를 직접 제공하지 않습니다. 이 부분은 다음 방법으로 해결해야 합니다:

  • 서버 로그 및 APM(Application Performance Monitoring) 도구(e.g., New Relic, Datadog) 활용.

  • 네트워크 모니터링 도구를 통해 트래픽 분석.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant