# 로그 설계를 위한 데이터 기초 지식

  1. 데이터의 종류
  • 데이터베이스에 저장되는 서비스 데이터
  • 사용자 행동 데이터
  1. 데이터의 Source : 어디에서 데이터가 발생하는가?
  • 앱 / 웹 / 서버
  1. 데이터의 Target : 어디에 저장할 것인가?
  • 데이터베이스, 파일
  1. API
  2. 배포의 자유로움
  3. 운영 환경(Production)과 개발 환경(Dev)
  4. 데이터의 타입

# 데이터의 종류

  • 데이터베이스 데이터(서비스 로그)
    • 서비스가 운영되기 위해 필요한 데이터
    • 고객이 가입한 날, 어떤 물건을 구입했는지
    • 서비스에서 고객에게 보여준다면 대부분 데이터베이스에 저장하고 보여줌
  • 사용자 행동 데이터(유저 행동 로그)
    • 서비스에서 유저의 활동
    • 더 좋은 제품을 만들기 위해 필요한 데이터
    • Click, View 등
    • 고객에게 보여줄 필요가 없고, 분석을 위해 활용하는 경우가 많음

# 데이터의 Source : 어디에서 데이터가 발생하는가?

  • 클라이언트
    • 서버에게 통신할 수 있는 기기
    • 스마트폰일 수도 있음
    • 회사마다 기준이 다를 수 있으나, 앱(APP) + 웹(WEB) 모두 클라이언트로 볼 수 있음
    • 클라이언트 로그 : 사용자가 어떤 행동을 했는가, UX 관점
      • “어떤 화면에 진입했는가?” / “어떤 버튼을 클릭했는가” / “백그라운드로 빠졌다”
  • 서버
    • 클라이언트와 통신해 정보(데이터)나 서비스(기능)를 제공하는 컴퓨터 시스템
    • 서버에서 정보를 제공하기 위해 데이터를 저장하는 데이터베이스에 접근해 데이터를 조회

# 데이터의 Target : 어디에 저장할 것인가?

  • DBMS(Database)
    • 서비스에서 활용하기 위한 데이터를 저장하는 장소
    • 예 : 배달 가게, 배달 가게 메뉴 및 가격, 좌표, 배달 가게의 평점, 유저의 과거 주문건, 좋아요 누른건 등
    • 분석 용도로 활용할 수 있으나, 분석 용도보다 서비스에서 바로 활용되거나 고객에게 보이는 목적(운영 용도)
    • OLTP(온라인 트랜잭션 처리) : 거래(Transaction) 발생, 데이터 수정, 빠르게 처리
    • MySQL, Oracle, AWS RDS(Aurora), PostgreSQL
  • 로그
    • 서비스에서 직접적으로 활용되진 않고, 분석 목적 또는 머신러닝 모델 목적으로 쌓음
    • 실제 DB에 영향을 주지 않음
  • 데이터 웨어하우스
    • 데이터 분석을 위해 사용됨
    • OLAP(온라인 분석 처리) : 데이터 분석에 초점
    • AWS Redshift, GCP BigQuery, Snowflake 등
  • NoSQL
    • 데이터베이스 중 관계형 데이터베이스가 아닌 비관계형 데이터베이스
    • Not only SQL로 SQL만을 사용하지 않는 시스템
    • 엑셀 표 같이 저장하는 RDBMS와 다르게 Key Value로 구성
    • MongoDB, CouchDB 등
{“고향”: “인천”,
 “연령대”: “30대”
 “다닌 회사” : [{“name”: “A사", “기간”: “3년”},
                     {“name”: “B사", “기간": “4년”}] 

# API(Application Programming Interface)

  • 정보를 주고 받을 때 사용되는 인터페이스(약속, 형식)

# 배포의 자유로움

  • 회사마다 제품을 어떻게 개발했는지가 다르며, 그에 따라 배포 방법이 달라짐
    • 웹(WEB)만 있는 경우
    • 앱(APP)만 있는 경우
    • 하이브리드, 웹과 앱을 같이 사용하는 경우
  • 웹, 서버 : 배포가 자유로움
  • 안드로이드 : 거의 자유로움
  • iOS : 시간이 1~2일 소요

# 운영 환경(Production)과 개발 환경(Dev)

  • 개발할 때는 운영 환경(Production 환경)과 개발 환경(Dev)을 나눠서 개발함
  • 배포 순서(회사마다 개발 프로세스가 다를 수 있음)
      1. 개발 배포(Dev, Staging)
      1. 운영 배포(Prod)
  • 개발 환경에 배포한 경우 => 개발 환경 데이터베이스에 저장됨(DB의 분화)
  • 데이터, 로그 확인도 개발 환경에서 확인 필요
    • 개발 환경에서 잘 기록된다면 운영 환경에서도 잘 기록되었을 것

# 데이터의 타입

  • STRING : 문자열, 따옴표로 감싸서 사용. “카일”, “1”
  • INTEGER : 숫자(정수), 따옴표로 감싸지 않음. 1
  • FLOAT : 숫자(부동 소수점), 1.23
  • TIMESTAMP : 특정 기준일을 토대로 시간을 숫자로 표현한 것. 1670901502
    • UTC TIMESTAMP : 1970년 1월 1일 자정을 0 밀리초로 기준으로 그 후로 몇 밀리초가 지닜는지 계산
    • 서버에서 시간을 다룰 때 대부분 TIMESTAMP
  • DATETIME : 사람이 익숙한 날짜. 2022-12-12 12:18:34
    • DATETIME이 사람이 이해하긴 좋지만, 위치에 따라 시간이 다름(시차)
  • 타임존 : 영국의 그리니치 천문대를 기준으로 지역에 따른 시간 차이를 조정하기 위한 구분선
    • 한국 : GMT+9(기준점 : 1970년 1월 1일 09:00:00)
    • UTC TIMESTAMP와 한국은 9시간 차이가 존재(UTC 00:00:00 = 한국의 09:00:00)

# 데이터 로그 설계 기초 지식 총 정리





CC-BY-NC-ND-4.0 Licensed | Copyright 2023-present. 카일스쿨