17 KiB
17 KiB
tags
| tags | ||||||
|---|---|---|---|---|---|---|
|
260312 외부 NAS -> 내부 NAS 컴퍼니엑스 실시간동기화 리서치
상위 원칙
- Infra Project Identity
- Core Infrastructure Principles
- Operational Guardrails
- 공통 작성 원칙: 0_VALUE Writing Principles
관련 문서
- 외부 NAS -> 내부 NAS 컴퍼니엑스 실시간 동기화 아이디어
- 외부 NAS -> 내부 NAS 컴퍼니엑스 동기화 리서치
- 외부 NAS -> 내부 NAS 컴퍼니엑스 동기화 운영계획
- Company X 상태기록 강화 및 재개 실행
목적
실시간에 가까운 동기화가 현재 구조에서 왜 필요한지, 그리고 지금 근거로 어디까지 말할 수 있는지 좁힌다.- 이 문서는 실시간 동기화 방식을 확정하는 문서가 아니라,
why를 분리해 다음plans가 무엇을 고정해야 하는지 정리하는 것을 목표로 한다.
리서치 질문
- 이미 검증된 배치/재개 동기화 구조만으로도 운영 기준을 만족하는가
- 실시간 또는 짧은 주기 동기화가 필요한 이유는 무엇인가
- 현재 근거만으로 이벤트 기반 실시간 동기화를 말할 수 있는가
- 지금 시점에서 닫을 수 있는 질문과 아직 닫을 수 없는 질문은 무엇인가
Facts
1. 외부 NAS -> 내부 NAS 기본 동기화 구조는 이미 운영 가능 수준까지 검증됐다
- 외부 NAS
/6.Company X를 내부 NAS/mnt/nas/workspace/6.Company X로 동기화하는 구조 자체는 이미 검증됐다. - 2026-03-12 최종 실행 기준
downloaded=18481,skipped=34352,failed=0,files_seen=52833,downloaded_bytes=83980539725가 기록됐다. - 즉
실시간여부와 별개로,외부 원본 -> 내부 기준 저장소 -> 서버는 내부 NAS만 사용구조는 이미 성립한다.
근거:
- 260307_external_nas_companyx_sync_research.md
- 260311_external_nas_companyx_sync_운영계획.md
- 260312_companyx_sync_상태기록강화_및_재개실행.md
2. 현재 검증된 접근 경로는 DSM API 기반 조회/다운로드다
- 외부 NAS 직접 SMB(Server Message Block)
139/445접근은 현재 직접 사용 경로가 아니다. - 현재 검증된 외부 접근은 Synology DSM(DiskStation Manager) File Station API다.
- 따라서 지금 사실 기준에서 검증된 방식은
외부 이벤트 push가 아니라원격 조회 후 필요한 파일을 가져오는 pull구조다.
2026-03-12 21:01 KST 실측값:
- DSM 로그인:
4.124초 - 루트 목록 조회
/6.Company X:0.059초, 응답 크기3401B, 항목16개 - 대표 사진 폴더 목록 조회
/6.Company X/7. 사진/220308_X코스_5기 발표 사진:0.084초, 응답 크기5559B, 항목20개 - 샘플 파일 다운로드
Thumbs.db12,288B:0.175초 - 샘플 파일 다운로드 엑셀
151,832B:0.131초 - 샘플 파일 다운로드 JPG
457,889B:0.233초 - 샘플 파일 다운로드 PDF
20,147,273B:0.731초, 약26.27 MiB/s
근거:
3. 현재 구현 스크립트는 주기 실행/재개 실행에는 맞지만, 외부 변화 이벤트 수신 구조는 아니다
- 현재 스크립트
/home/admin/infra/scripts/bin/companyx_external_nas_sync.py는 DSM API로 폴더를 재귀 조회하고 파일을 내려받는다. - 상태 파일, 실패 로그, 삭제 후보 로그, 요약 파일을 남기며 장시간 재개 실행도 가능하다.
- 하지만 코드와 현재 문서 기준으로는 외부 NAS 변화 이벤트를 받아 즉시 실행하는 webhook, queue, daemon 구조는 확인되지 않았다.
2026-03-12 21:01 KST 전체 트리 --dry-run 실측값:
- 실행 시작:
2026-03-12 21:01:21 KST 3분 45초경과 시점에도 전체 스캔이 종료되지 않았다.- 중단 직전 상태 파일 기준
directories_seen=2744,files_seen=12913,failed=1,termination_signal=SIGTERM이었다. - 같은 시점
downloaded=12912,downloaded_bytes=136,138,945,147로 기록됐는데, 이는--dry-run에서 실제 저장 대신내려받아야 할 파일로 계산된 누적치다. - 즉
전체 트리 재조회 자체가 분 단위 작업이며, 최소한 현재 구조를 그대로 두고는거의 즉시 반영을 가정하기 어렵다.
근거:
- /home/admin/infra/scripts/bin/companyx_external_nas_sync.py
- 260311_companyx_external_nas_sync_스크립트구현_및_대표검증.md
- 260312_companyx_sync_상태기록강화_및_재개실행.md
4. 실시간 동기화 필요성은 구조 성립 여부가 아니라 최신성 요구 수준에서 나온다
- 기존 아이디어 문서에서도 핵심 문제는
내부 NAS 최신 반영 시점이 아직 실행 주기에 의존한다는 점이었다. - 즉 실시간 동기화의 질문은
가능하냐보다내부 NAS 반영 지연을 얼마나 줄여야 하느냐에 가깝다. - 현재까지는 전체 동기화 성공과 재개 가능성은 검증됐지만,
몇 분 이내,거의 즉시,일 단위중 어떤 최신성 목표가 필요한지는 아직 확정되지 않았다.
근거:
5. 현재 근거만으로는 이벤트 기반 실시간 동기화를 검증했다고 말할 수 없다
- 실동작으로 검증된 것은
대표 경로 동기화,전체 트리 완주,재실행 건너뛰기,상태 기록이다. - 외부 NAS 변화 발생 직후 자동 감지, 즉시 실행, 중복 트리거 제어, 이동/삭제 이벤트 처리 같은 항목은 아직 직접 검증 기록이 없다.
- 따라서
실시간 동기화 가능보다는실시간에 가까운 주기 동기화 후보를 검토할 근거가 생겼다가 현재 사실 범위에 더 맞다.
6. Search API는 부분적으로 동작하지만, 현재 NAS에서 전체 트리 증분 검색 대체재로 바로 쓰기는 어렵다
- 2026-03-12 21:07 KST 실측에서
SYNO.FileStation.Search자체 호출은 성공했다. - 작은 대표 폴더
/6.Company X/7. 사진/220308_X코스_5기 발표 사진에서는 정확 파일명 검색이start 0.060초 + list 0.078초로 성공했고,mtime_from/mtime_to조건도 정상 동작했다. - 같은 대표 폴더에서
mtime_window_hit은total=19,mtime_window_miss는0건으로 나와 시간 조건 필터도 확인됐다. - 하지만 루트
/6.Company X전체 재귀 검색에서는Thumbs.db,창업기획자 등록절차 및 운영 안내(26.2월).hwp같은 실제 존재 파일명을 줘도finished=true와 빈 결과만 반환됐다. - 즉 현재 NAS에서는
Search API = 사용 불가는 아니지만,전체 루트 증분 검색을 신뢰할 수 있는 상태도 아니다.
2026-03-12 21:07~21:09 KST 실측값:
- 작은 폴더 정확 파일 검색:
start 0.060초,list 0.078초,total=1 - 작은 폴더
mtime적중 검색:start 0.063초,list 0.072초,total=19 - 작은 폴더
mtime비적중 검색:start 0.060초,list 0.074초,0건 - 루트 전체
Thumbs.db검색:start 0.060초,list 0.073초,0건 - 루트 전체 특정 HWP 검색:
start 0.058초,list 0.079초,finished=true, 결과 없음
7. 해시 기반 판정은 수정시각 + 파일 크기보다 직접 측정 기준으로 훨씬 느리다
- 2026-03-12 21:19 KST 기준
/mnt/nas/workspace/6.Company X에서 대표 파일 4개와 임의 표본 20개, 총24개파일48,437,603B를 대상으로 비교했다. - 같은 파일 집합에서
stat(파일 크기 + 수정시각)평균은0.927ms였다. - 같은 파일 집합에서
sha256평균은617.713ms였다. - 즉 이 표본에서는 해시 계산이
수정시각 + 파일 크기조회보다 약666.4배느렸다. - 대표 파일별로도
Thumbs.db 75.6배, 엑셀149.5배, JPG286.8배, 20MB PDF518.8배로 모두 해시 쪽이 현저히 느렸다. - 따라서 현재 운영 질문이
변경 여부 판정 속도라면, 해시는 기본 증분 기준보다 표본 검증용으로 두는 것이 맞다.
2026-03-12 21:19 KST 실측값:
- 전체 표본
24개,48,437,603B stat평균:0.927mssha256평균:617.713ms- 비율:
sha256 / stat = 666.4배 Thumbs.db12,288B:stat 0.015ms,sha256 1.137ms,75.6배- 엑셀
151,832B:stat 0.018ms,sha256 2.750ms,149.5배 - JPG
457,889B:stat 0.022ms,sha256 6.202ms,286.8배 - PDF
20,147,273B:stat 0.351ms,sha256 181.927ms,518.8배
8. 내부 NAS DSM API 로그인은 가능하지만, 알림/webhook 제어 API는 현재 노출되지 않았다
- 2026-03-12 21:49 KST 기준 내부 NAS
192.168.0.101:5001은 DSM HTTPS로 응답했다. - 같은 시각 내부 NAS 계정으로 DSM API 로그인도 성공했다.
- 다만 API 목록 조회 기준
SYNO.Core.Notification,SYNO.Core.Notification.Advanced는 현재 NAS에서 노출되지 않았다. - 즉
내부 NAS 관리자 계정으로 DSM API 로그인 가능과파일 변경 webhook/API 제어 가능은 같은 뜻이 아니다. - 현재 확인 범위에서는 내부 NAS도 파일 접근 API(
SYNO.FileStation.List)는 가능하지만, 알림/webhook 설정을 API로 제어할 직접 경로는 확인되지 않았다.
2026-03-12 21:49 KST 실측값:
- API 정보 조회:
SYNO.API.Auth,SYNO.Core.Desktop.Initdata,SYNO.Core.User,SYNO.FileStation.List노출 확인 - DSM API 로그인:
auth.cgi경유success=true - 파일 공유 조회:
docker,home,homes확인 - 알림 관련 API:
SYNO.Core.Notification*미노출
9. 전체 루트 1분 제한 실측 기준 현재 전수 조회는 약 23분대로 추정된다
- 2026-03-12 22:15 KST 기준 전체 루트
/6.Company X를 대상으로60초제한 실행을 했다. - 이 실행은
SIGTERM으로 종료됐고, 그 시점 summary 기준directories_seen=436,files_seen=2276,skipped=2275,failed=1이었다. - 기존 전체 완주 기록의 총량
directories_seen=10549,files_seen=52833을 기준으로 단순 비례 추정하면 현재 전체 전수 조회 시간은 약23.4분이다. - 이 값은 엄밀한 완료 실측이 아니라
1분 표본 기반 예측이지만, 현재 구조에서10분 이내 전체 전수 조회를 기본 가정으로 두기 어렵다는 근거로는 충분하다.
2026-03-12 22:15~22:16 KST 실측값:
- 제한 시간:
60초 directories_seen=436files_seen=2276skipped=2275downloaded=0failed=1termination_signal=SIGTERM- 예상 전체 시간:
약 23.2~23.4분
10. 1차 폴더와 2차 폴더 메타만 훑는 비용은 매우 낮다
- 2026-03-12 23:00 KST 기준
/6.Company X루트 1회 조회만5회반복 측정한 결과 평균은60.14ms였다. - 같은 시각
/6.Company X루트와 그 아래 1차 폴더14개를 각각 non-recursive로 조회해2차 폴더까지확인한 결과 평균은983.861ms였다. - 즉
전체 파일 전수조회 약 23분대와 비교하면,1차 폴더 메타 확인과2차 폴더 메타 확인은 운영 루프에 넣기 충분히 가볍다. - 이 경로는 전체 파일을 매번 훑는 방식이 아니라, 상위 폴더 메타를 이용해
어느 영역을 더 내려가야 할지후보를 좁히는 데 적합하다.
2026-03-12 23:00 KST 실측값:
- 루트 1회 조회
5회평균:60.14ms - 루트 엔트리:
16개 - 1차 폴더 수:
14개 - 루트 + 1차 폴더
14개조회, 총15회 API 호출평균:983.861ms - 2차 레벨 확인 결과:
2차 폴더 110개,2차 파일 36개 - 응답 총량:
39,499B
Interpretation
1. 이 아이디어의 핵심 why는 구조 성립이 아니라 최신성 목표 정의다
- 기본 동기화 구조는 이미 검증됐기 때문에, 실시간 아이디어의 초점은
무엇을 만들 수 있나가 아니라왜 더 빠른 반영이 필요한가다. - 즉 다음 단계에서 먼저 닫아야 할 질문은 도구 선택보다
허용 가능한 반영 지연이다.
2. 현재 근거로 가장 보수적인 해석은 계층형 탐색 + 짧은 주기 pull이 1차 후보라는 것이다
- 현재 검증된 외부 접근이 DSM API pull 방식이고, 이벤트 수신 경로는 확인되지 않았다.
- 따라서 지금 근거만 놓고 보면
외부 변화 감지 -> 즉시 push보다짧은 주기 재조회 -> 증분 동기화가 더 직접적인 운영 후보다. - 이것은 권장안 확정이 아니라, 현재 검증 범위에 더 가까운 해석이다.
- 다만 2026-03-12 실측 기준 전체 트리
dry-run이3분 45초를 넘어도 끝나지 않았으므로, 현재 구조 그대로는1분 미만같은 촘촘한 polling은 비현실적일 가능성이 높다. - 반대로 단일 목록 조회가
0.06~0.08초, 20MB PDF 1건 다운로드가0.73초였으므로, 범위를 더 좁히거나 상위 폴더를 분할하면짧은 주기 후보를 다시 따져볼 여지는 있다. - Search API는 작은 폴더에서는 매우 빠르지만, 루트 전체 재귀 검색에서는 실제 존재 파일도 놓쳤으므로 현재 단계에서 전체 스캔 대체재로 가정하면 안 된다.
- 따라서 지금 가장 보수적인 운영 해석은
30분마다 2차 폴더까지 메타 확인 -> 바뀐 폴더만 3차 이하로 하강 -> 파일까지 내려가 증분 동기화다. - 같은 맥락에서 증분 기준도 해시보다
수정시각 + 파일 크기가 훨씬 빠르므로, 짧은 주기 운영에서는 해시를 기본 판정 기준으로 올리지 않는 것이 맞다. - 내부 NAS도 현재 확인 기준으로는
파일 변경 webhook을 API로 바로 붙일 근거가 없으므로, 실시간 문제를 webhook 전제로 풀면 안 된다. - 그리고 현재 1차 폴더 확인은 약
60ms, 2차 폴더 확인은 약1초, 전체 파일 전수조회는 약23분대로 추정되므로,빠른 계층형 탐색 + 일일 전수보정이 비용 대비 가장 현실적이다.
3. 실시간성 수준을 정하지 않으면 plans가 과도하게 넓어진다
1분 이내,10분 이내,업무시간대만 5분 주기,야간 1회는 모두 다른 운영안이다.- 최신성 목표가 없으면 polling 주기, 실패 복구, 동시 실행 방지, 삭제 정책, 경보 기준이 함께 흔들린다.
- 따라서 이 리서치의 결론은
실시간 구현이 아니라실시간 요구 수준을 먼저 고정해야 한다는 데 있다.
Unresolved
- 최신성 목표
- 내부 NAS 반영 지연을 몇 분 이내로 요구하는지 아직 미확정
- 외부 변화 감지 방식
- DSM API 폴링 외에 webhook 또는 이벤트 기반 경로가 실제로 가능한지 미검증
- DSM Search API를 루트 전체 증분 검색에 신뢰할 수 있는지 미확정
- 내부 NAS DSM에서 알림/webhook API를 별도 활성화하거나 제어할 수 있는지 미확정
- 운영 비용
- 짧은 주기 재조회 시 DSM 세션, API 호출량, 장시간 중복 스캔 비용이 어느 정도인지 미확정
- 전체 해시 재계산 비용을 운영 주기에 포함할 수 있는지 미확정
- 변경 유형별 정책
- 삭제, 이동, 부분 업로드, 파일 교체가 짧은 주기 동기화에서 어떻게 보일지 미확정
- 실행 방식
- 2차 폴더 메타 확인 후 바뀐 폴더만 하강하는 계층형 탐색을 어떤 상태 파일 구조로 남길지 미확정
현재 결론
외부 NAS -> 내부 NAS동기화 자체는 이미 운영 가능 수준으로 검증됐으므로, 실시간 아이디어의 쟁점은가능성이 아니라필요한 최신성 수준이다.- 현재 직접 검증된 경로는 DSM API 기반 pull이므로, 지금 사실 범위에서 말할 수 있는 가장 강한 결론은
짧은 주기 증분 동기화 후보를 검토할 수 있다까지다. - 이벤트 기반 실시간 동기화는 아직 직접 검증되지 않았고, 전체 루트 전수 조회도 현재 예측상
23분대이므로, 다음 단계는30분마다 2차 폴더 메타 확인 -> 바뀐 폴더만 하강 동기화 -> 하루 1회 파일 전수조회를 고정하는plans문서가 맞다.