Skip to content

시간에 따라 변경되는 과목 데이터를 동기화한다.  #97

@3Juhwan

Description

@3Juhwan

개요

시간에 따라 원본 과목 데이터가 변경됩니다.

원본 과목 데이터는 SJPT(학사정보시스템)에서 크롤링해서 얻은 데이터를 의미합니다.
올클 DB에서 관리하는 과목 데이터는 사본 데이터라 할 수 있습니다.

문제 상황

매학기마다 학교는 SJPT에 과목을 등록합니다. 시간이 지남에 따라 원본 과목 데이터는 다음 이유로 변경됩니다.

  • 과목이 폐강될 수 있습니다.
  • 과목이 신설될 수 있습니다.
  • 과목의 세부 정보가 변경될 수 있습니다. (eg. 교수명 변경, 과목명 변경 등)
  • 그외에 파악하지 못한 변경이 있을 수 있습니다.

해결해야 하는 이유

  • 과목 데이터는 올클 서비스에서 가장 중요한 데이터입니다.
  • 사용자에게 최고의 서비스를 제공하기 위해서는 최선 과목 데이터가 확보되어야 합니다.
  • 원본 과목 데이터를 확보하지 못한다면,
    • 삭제된 과목을 사용자에게 노출할 수 있습니다.
    • 신설된 과목을 사용자에게 서비스할 수 없습니다.

해결 아이디어

다음과 같이 원본 과목 데이터를 크롤링하여 동기화하면 어떨까요?

처리 조건 동작 내용
폐강된 경우 soft delete 수행 → subject.isDeleted = true 설정
신설된 경우 새 과목 추가 (insert)
과목 정보 변경 교수명, 과목명 등 변경 시 해당 필드 수정
기타 변경 사항 모든 변경 사항은 로그를 통해 모니터링

매일 오전 9시 30분에 위와 같이 동기화하고, 변경된 내용을 집계하여 추적할 수 있으면 좋겠습니다.
오전 9시 30분인 이유는, 수강신청 시간(오전 10시)가 되기 전에 직원들이 출근해서 과목 데이터를 변경할 수 있어서 입니다.
오전 9시 30분 ~ 오전 10시 50분 사이에 동기화 작업을 하면 되겠습니다.

변경된 내용을 집계하는 것은 진행하면 좋을 작업인데요. 집계 리포트에 포함될 내용은 아래와 같습니다.

📊 과목 변경 집계 리포트 (예시)

구분 건수 비고
전체 과목 수 2,400 동기화 시점 기준
신설된 과목 수 45 DB에 없던 과목 신규 추가
폐강된 과목 수 30 isDeleted = true 처리됨
정보 변경 과목 수 78 교수명, 과목명 등 주요 정보 수정
기타 변경 감지 12 원인 미상의 데이터 차이 → 로그 기록

🔍 정보 변경 세부 집계

변경 필드 변경된 과목 수 예시
교수명 변경 55 과목 ID: 12345 → 교수 A → B
과목명 변경 23 과목 ID: 67890 → “정보보호론” → “정보보안론”

⏰ 동기화 수행 정보

항목 내용
동기화 실행 시각 2025-08-01 09:30
동기화 소요 시간 약 2분 35초
로그 파일 경로 /logs/subject-sync-2025-08-01.log

Metadata

Metadata

Assignees

No one assigned

    Labels

    개선프로덕트에 개선이 필요해요.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions