개요
시간에 따라 원본 과목 데이터가 변경됩니다.
원본 과목 데이터는 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 |
개요
시간에 따라 원본 과목 데이터가 변경됩니다.
원본 과목 데이터는 SJPT(학사정보시스템)에서 크롤링해서 얻은 데이터를 의미합니다.
올클 DB에서 관리하는 과목 데이터는 사본 데이터라 할 수 있습니다.
문제 상황
매학기마다 학교는 SJPT에 과목을 등록합니다. 시간이 지남에 따라 원본 과목 데이터는 다음 이유로 변경됩니다.
교수명변경,과목명변경 등)해결해야 하는 이유
해결 아이디어
다음과 같이 원본 과목 데이터를 크롤링하여 동기화하면 어떨까요?
subject.isDeleted = true설정교수명,과목명등 변경 시 해당 필드 수정매일 오전 9시 30분에 위와 같이 동기화하고, 변경된 내용을 집계하여 추적할 수 있으면 좋겠습니다.
오전 9시 30분인 이유는, 수강신청 시간(오전 10시)가 되기 전에 직원들이 출근해서 과목 데이터를 변경할 수 있어서 입니다.
오전 9시 30분 ~ 오전 10시 50분 사이에 동기화 작업을 하면 되겠습니다.
변경된 내용을 집계하는 것은 진행하면 좋을 작업인데요. 집계 리포트에 포함될 내용은 아래와 같습니다.
📊 과목 변경 집계 리포트 (예시)
isDeleted = true처리됨🔍 정보 변경 세부 집계
⏰ 동기화 수행 정보
/logs/subject-sync-2025-08-01.log