서버사이드

개요

서버사이드에서 수집하는 유저의 행동로그를 수집하는 파이프라인에 로그를 기록하는 방법과 로그 규약에 대한 가이드 입니다.

연동 기본 규약

로그 규약

로그 시스템은 게임과 관련된 모든 로그를 통합 수집/관리/분석 하는 시스템으로 대량 로그 특성상 반드시 준수해야 하는 규칙이 있습니다.

  • 로그는 반드시 건당 단일 JSON Type 이어야 합니다. ( JSON root는 배열이 아니어야 합니다.)

  • JSON은 로그 데이터 구별을 위해 반드시 아래 필드가 있어야 합니다. (인사이트랩에서 제공하는 로그 명세서 규칙을 따르니, 보다 자세한 정보는 로그 명세서를 참고 바랍니다.)

    • log_type 로그를 구별하기 위한 로그 이름

      • 로그 이름은 대문자로 한다.

      • 모든 서버 유저 행동 로그는 log_type을 지정하여 다른 로그와 충돌이 발생하지 않도록 합니다.

    • service_id

      • 게임에 부여되는 Service ID가 로그에 포함 되어야 합니다.

    • cre_time

      • 로그 발생 시간을 ISO 8601 표준 시간으로 기록합니다. (예: 2024-02-07T14:00:00.000Z)

환경 변수

연동 인프라는 Endpoint가 변경 될 수 있어 빌드의 배포 시점에 주입이 가능하도록 되도록 환경 변수를 통해 입력 받는 것을 추천합니다.

HUBLOG_KINESIS_STREAM_NAME     # 로그 스트림 이름
SERVICE_ID                     # 서비스ID

개발 환경

온프레미스 환경에서 개발 진행 시 아래 샘플 데이터로 테스트 진행 하실 수 있습니다.

저장 한 로그를 확인 할 수 있는 환경은 기술PM이 접속 환경 조사 후 접근 허용 처리 후 전달 드립니다.

HUBLOG_KINESIS_STREAM_NAME =    # 기술 PM이 정보를 전달 해 드립니다
HUBLOG_KINESIS_REGION =         # 기술 PM이 정보를 전달 해 드립니다.
SERVICE_ID =                    # 기술 PM이 정보를 전달 해 드립니다.

연동 기술

Kinesis

Amazon Kinesis는 스트리밍 데이터를 처리하는 솔루션입니다. Kinesis를 통해 유입되는 로그 스트림을 처리하여 실시간 조회 환경과 분석 시스템으로 이관됩니다.

레퍼런스 참고 자료

레코드를 기록하는 API 가이드

Go v2 SDK 가이드

샘플 코드

아래 샘플 코드는 표준 입력에서 데이터를 읽어와 AWS Kinesis 스트림에 전송하는 간단한 예제입니다.

소스코드: https://github.com/harlow/kinesis-consumer/blob/master/examples/producer/main.go

Kinesis Data Stream API는 최대 처리량이 제한이 있습니다.

  • PutRecords API는 요청 당 최대 500개의 Record를 처리 할 수 있습니다.

  • 각 레코드는 최대 1MiB까지 가능하며, 요청 당 전체 최대 용량은 5MiB입니다.

파티션 키

파티션 키는 레코드를 데이터 스트림의 다른 샤드에 격리하는 기준 값입니다. 여러 샤드 균등하게 분리하기 위해 랜덤키나 회원 번호등 해싱 하였을 때 비교적 균등하게 분포되는 값을 활용합니다.

일반적으로 회원 번호(IMID)나 세션 키와 같이 동일 샤드에서 처리 순서 보장의 이점이 있는 값을 사용하는 것을 추천합니다.

유저 행동 로그 조회

실시간 조회 환경

OpenSearch Dashboard를 통해 유저 행동 로그를 실시간으로 조회 할 수 있습니다.

OpenSearch Dashboard 는 기술PM이 접속 환경 조사 후 접근 허용 처리 후 전달 드립니다.

Last updated