Files
2026-10-08 16:43:48 +09:00

17 KiB

DAT10 실습가이드 - 데이터 마이닝 기반 공급망 재난 식별 SaaS

구 분 실습가이드 [교육용가상자료]

1. 실습 개요

본 실습은 교육용 가상 보급소 5곳의 오프라인 재고 기록을 동기화하고, 병합된 자료에서 공급망 재난 징후를 식별하는 SaaS를 미션 단위로 구현하는 과정이다. 미션마다 정답 코드(DAT10_정답코드.md)의 해당 코드를 웹 파이썬 실행기에 붙여 넣어 실행하고, 출력된 수치가 평가 기준을 충족하는지 확인한 뒤 파라미터를 바꿔 보는 도전 과제를 수행한다. 미션별 코드는 서로 독립적이어서 어느 미션부터 실행해도 동작한다.

과제 DAT10 데이터 마이닝 기반 공급망 재난 식별 SaaS
난이도·유형 고급 / 코딩형
예상 소요시간 미션 10개, 총 27.5시간
준비물 DAT10_정답코드.md, 웹 파이썬 실행기(numpy·pandas·scipy·scikit-learn·matplotlib 사용 가능), 결과 기록용 문서

2. 진행 방법

  • 정답코드 md에서 해당 미션의 코드 블록 전체를 복사해 실행기에 붙여 넣고 실행한다(부분 복사 시 가상 자료 생성 함수가 빠져 오류가 난다).

  • 실행 결과를 md의 '실행 결과 예시'와 비교한다. 난수 시드가 고정되어 같은 값이 나오지만, 처리 시간(초·ms)과 처리 속도, 스레드 큐 상태는 실행 환경에 따라 달라진다.

  • 도전 과제는 코드 상단의 파라미터(접촉 횟수, 임계값, 가중치, 배치 크기 등)를 바꿔 다시 실행하고 변화와 이유를 기록한다.

  • 그래프 글자는 영문, 표·출력은 한글이다. 한글이 깨지면 실행기 글꼴 문제이며 결과에는 영향이 없다.

  • 자료는 모두 가상이며 파일을 읽거나 쓰지 않고 메모리 안에서만 동작한다(SQLite도 메모리 DB). 서명 키는 데모용 값이다. 병합 확정과 보급 조치는 군수관·지휘관이 결정한다.

  • 미션 3·5·8은 3~5초 정도 걸릴 수 있다. 실행이 끝날 때까지 기다린다.

3. 미션 진행 요약

미션 난이도·시간 핵심 확인 결과
M1. 전술 통신 두절 환경에서의 야전 군수 재고 관리 요구사항 분석 및 로컬 DB 스키마 설계 초급
1.5시간 필드 12개 정의 완성도 100%, 정상 2,100건 오류 0건, 개인 식별 필드 0개
M2. 오프라인 데이터 입력 유효성 검증 및 로컬 SQLite 트랜잭션 전처리 모듈 구현 초급~중급
2시간 입력 8,250줄: 통과 8,166줄, 중복 ID 198줄 제거, 해석 실패·허용값 오류 84줄 격리
M3. 오프라인 단말 간 1차 피어투피어(P2P)/USB 재고 데이터 교환 Baseline 기능 구현 중급
2.5시간 완전성: 전체 전송 22.8%, 델타 82.5%, 델타+우선순위 83.7%(시험 3개 평균 24.0% / 82.1% / 84.6%)
M4. 네트워크 복구 시 클라우드 중앙 서버와의 양방향 데이터 충돌 해결(CRDT) 동기화 고도화 중급
3시간 수렴 성공, 서버 재고와 정답 차이 0(갱신 유실 0건), LWW는 5,142개 유실, 성질 시험 4종 모두 200/200
M5. 오프라인 위변조 방지 암호화 해시 및 데이터 무결성 검증 엔진 개발 중급~고급
3시간 전체 해시 비교 오경보율 33.3% -> 계층 검증 0.0%(100% 감축), 악성 6종 탐지율 100%, 미탐 없음
M6. 오프라인/온라인 전환 상태 및 재고 변동 내역 실시간 대시보드 UI 구현 중급
2.5시간 갱신 지연 최대 1ms 미만(목표 1초), 조작 응답 최대 1ms 안팎(목표 100ms), 렌더링 4개 패널 수백 ms
M7. 동기화 충돌 발생 시 군수관 수동 병합(Conflict Resolution) HITL 워크플로우 설계 고급
3시간 충돌 12건(영향 큼 5건), 고위험 평균 대기 선입선출 5.5h -> 위험도 우선 0.8h, 병합 11건·반려 4건·피드백 5건
M8. 7일간 통신 단절 후 대량 재고 트랜잭션 일괄 동기화 스트레스 테스트 고급
3.5시간 전체 6회 실행: 다운 0건, 유실 0건, 재고 차이 0, 위조 전부 격리 예
M9. AAR 기반 동기화 누락 및 데이터 충돌 사례 분석 및 동기화 룰셋 재튜닝 고급
3시간 현행 규칙 정확도 45.5%, 오류 653건(D4 동시 수정 놓침 29.5%, D3 27.1%, D1 21.3% 순)
M10. 오프라인 동기화 야전 재고 관리 SaaS 최종 패키징 및 야전 배포 가이드 완성 최고급
3.5시간 설치 5/5 통과, E2E 4/4 성공(공급 중단 업체 탐지 4/4, 다른 업체 오경보 0건), 자체 점검 11/11, 커버리지 100%(15/15), 매뉴얼 7/7장

미션 1. 전술 통신 두절 환경에서의 야전 군수 재고 관리 요구사항 분석 및 로컬 DB 스키마 설계

난이도·시간 초급 · 1.5시간

| 진행 순서 | 1) M1 코드를 실행해 스키마 필드 12개의 정의 완성도와 정상 자료 2,100건의 검증 결과를 확인한다. 2) 주입 오류 8종의 검출 결과와 제약 조건 시험 5건(중복 ID·외래 키·CHECK)의 차단 결과를 읽는다.

3) 요구사항 검증표 12개가 각각 어떤 구조(필드·제약·테이블)로 충족되는지 짚고 입출력 명세를 정리한다.

| 확인할 결과 | 필드 12개 정의 완성도 100%, 정상 2,100건 오류 0건, 개인 식별 필드 0개

주입 오류 8종 중 8종 검출, 제약 조건 5/5 차단, 요구사항 12/12 충족
도전 과제 스키마에 기상·위치오차 같은 필드를 하나 추가하고 검증 오류가 0건으로 유지되는지, 요구사항 표에 어떤 항목이 더 필요한지 적는다.
제출물 스키마 JSON과 요구사항 검증표 출력, 데이터 명세 요약

미션 2. 오프라인 데이터 입력 유효성 검증 및 로컬 SQLite 트랜잭션 전처리 모듈 구현

난이도·시간 초급~중급 · 2시간

| 진행 순서 | 1) M2 코드를 실행해 입력 8,250줄의 파싱·검증 결과(통과·격리·중복 제거 건수)를 확인한다. 2) 고정 임계값과 구분별 동적 임계값의 이상 판정·오탐을 비교한다.

3) SQLite 배치 적재의 롤백·행 단위 격리와 멱등 시험, 전처리 오류율·처리 속도를 읽는다.

| 확인할 결과 | 입력 8,250줄: 통과 8,166줄, 중복 ID 198줄 제거, 해석 실패·허용값 오류 84줄 격리

고정 임계값 오탐 105건 -> 동적 임계값 0건(이상 수량 34/34 검출), 적재 7,933건, 오류율 0.00%, 속도 1,000건/초 이상(실행 환경별 수만 건/초)
도전 과제 BATCH 크기를 500에서 50으로 바꿔 롤백 시 격리되는 행이 어떻게 달라지는지, 처리 속도가 어떻게 달라지는지 비교한다.
제출물 전처리 코드, 전후 건수 표, 동적 임계값 설명

미션 3. 오프라인 단말 간 1차 피어투피어(P2P)/USB 재고 데이터 교환 Baseline 기능 구현

난이도·시간 중급 · 2.5시간

| 진행 순서 | 1) M3 코드를 실행해 접촉 56회의 조건(방향별 80건, 손실 5%)과 세 방식(전체·델타·델타+우선순위)의 완전성·효율 표를 읽는다. 2) 우선순위 가중치 탐색 결과와 시험 시드 3개 평균을 확인한다.

3) 7일 내 완전 수렴 여부와 접촉 1회 지연을 확인하고 한계를 정리한다.

| 확인할 결과 | 완전성: 전체 전송 22.8%, 델타 82.5%, 델타+우선순위 83.7%(시험 3개 평균 24.0% / 82.1% / 84.6%)

기본 정확도 84.6%(목표 75% 달성), 7일 내 90% 도달 못함, 모든 트랜잭션을 가진 노드 0/5
도전 과제 접촉 횟수(CONTACTS_PER_DAY)를 8에서 12로 올리고 완전성이 100%에 가까워지는 접촉 수를 찾는다.
제출물 교환 Baseline 코드, 방식별 비교표, 한계 설명

미션 4. 네트워크 복구 시 클라우드 중앙 서버와의 양방향 데이터 충돌 해결(CRDT) 동기화 고도화

난이도·시간 중급 · 3시간

| 진행 순서 | 1) M4 코드를 실행해 노드 5곳과 서버의 병합 결과(수렴, 재고 차이, 병합 지연)를 확인한다. 2) LWW 병합과 CRDT의 유실량 차이, 멱등·교환·결합·재전송 시험 200쌍 결과를 읽는다.

3) 충돌 탐지 4개 규칙의 재현율·정밀도·오경보 패턴 표를 비교하고 마지막 규칙이 선택된 이유를 적는다.

| 확인할 결과 | 수렴 성공, 서버 재고와 정답 차이 0(갱신 유실 0건), LWW는 5,142개 유실, 성질 시험 4종 모두 200/200

충돌 탐지 재현율: 시간 근접 4.9%, 값 비교 100%(정밀도 67.9%), 버전 벡터 v1 100%(88.3%), 버전 벡터+값 v2 100%(100%)
도전 과제 시간 근접 규칙의 창을 1시간에서 24시간으로 늘려 재현율과 오경보가 어떻게 바뀌는지, 시계 어긋남 사례가 왜 여전히 어려운지 적는다.
제출물 CRDT 코드, 규칙별 탐지 비교표, 오경보 패턴 분석

미션 5. 오프라인 위변조 방지 암호화 해시 및 데이터 무결성 검증 엔진 개발

난이도·시간 중급~고급 · 3시간

| 진행 순서 | 1) M5 코드를 실행해 악성 6종과 정상 변형 3종의 탐지·오경보 결과를 확인한다. 2) 신뢰도 가중치 매트릭스와 변형별 등급 분포를 읽고 즉시 Low로 보는 항목의 이유를 적는다.

3) 20회 반복 점검의 등급 일관성과 불확실성 표시 예를 확인한다.

| 확인할 결과 | 전체 해시 비교 오경보율 33.3% -> 계층 검증 0.0%(100% 감축), 악성 6종 탐지율 100%, 미탐 없음

등급 일관성 평균 100%(목표 90%), 정상 변형은 High, 악성은 Low
도전 과제 가중치 W에서 체인·서명 비중을 낮추고 같은 ID 충돌 비중을 높였을 때 등급 분포가 어떻게 달라지는지 비교한다.
제출물 무결성 엔진 코드, 탐지·오경보 비교표, 신뢰도 기준 설명

미션 6. 오프라인/온라인 전환 상태 및 재고 변동 내역 실시간 대시보드 UI 구현

난이도·시간 중급 · 2.5시간

| 진행 순서 | 1) M6 코드를 실행해 168회 갱신의 지연과 시점별(12·72·168시간) 오프라인·미동기·경보 현황을 확인한다. 2) 상태판·재고 경보 품목·변동 내역 출력과 조작 4종의 응답 시간을 읽는다.

3) 주간·야간 대비비와 렌더링 4개 패널 그래프를 확인하고 경보 강조가 직관적인지 평가한다.

| 확인할 결과 | 갱신 지연 최대 1ms 미만(목표 1초), 조작 응답 최대 1ms 안팎(목표 100ms), 렌더링 4개 패널 수백 ms

168시간 시점 보급소 E 오프라인·미동기 400건, 긴급 6종·주의 3종, 경보 7건, 주간·야간 색상 대비 4.5 이상 달성
도전 과제 OUT의 오프라인 구간을 바꿔 경보 건수가 어떻게 달라지는지, 긴급 기준(소진 일수 < 납기 절반)을 조정하면 경보가 어떻게 달라지는지 비교한다.
제출물 대시보드 모델 코드, 지표 출력, 렌더링 그래프

미션 7. 동기화 충돌 발생 시 군수관 수동 병합(Conflict Resolution) HITL 워크플로우 설계

난이도·시간 고급 · 3시간

| 진행 순서 | 1) M7 코드를 실행해 충돌 12건과 영향 큼 건수, 검토 큐의 선입선출·위험도 우선 대기시간을 확인한다. 2) 처리 결과표에서 군수관 병합·지휘관 승인·반려 재기안·한도 초과 종결 건을 확인한다.

3) 우회 시도 14건의 차단 결과와 로깅 성공률, 해시 체인 검증, 변조 탐지를 읽는다.

| 확인할 결과 | 충돌 12건(영향 큼 5건), 고위험 평균 대기 선입선출 5.5h -> 위험도 우선 0.8h, 병합 11건·반려 4건·피드백 5건

우회 시도 14/14 차단, 처리 요청 115건 = 감사 로그 115건(로깅 성공률 100%), 이력 무결성 100%, 임의 수정 탐지
도전 과제 IMPACT_CUT을 0.25에서 0.15로 낮추면 지휘관 승인 건이 몇 건 늘어나는지, 군수관 대기가 어떻게 달라지는지 비교한다.
제출물 HITL 워크플로우 코드, 결과표, 우회 시도 차단 결과, 감사 로그 검증 출력

미션 8. 7일간 통신 단절 후 대량 재고 트랜잭션 일괄 동기화 스트레스 테스트

난이도·시간 고급 · 3.5시간

| 진행 순서 | 1) M8 코드를 실행해 100·200·500% 부하의 처리 시간·처리량·응답 시간을 최적화 전후로 비교한다. 2) 500% 상세표의 중복 거부, 위조 격리, 작업자 오류 재처리, 사후 검증 되돌림, 유실 건수를 확인한다.

3) 병목 프로파일과 기능 축소 정책, 반복 실행 후 메모리 증가를 읽는다.

| 확인할 결과 | 전체 6회 실행: 다운 0건, 유실 0건, 재고 차이 0, 위조 전부 격리 예

500%(10,500건)에서 중복 확인을 목록에서 집합으로 바꿔 약 10배 이상 단축, 사후 검증 되돌림으로 표본 점검 중 통과한 위조 반영분 정정, 메모리 증가 5MB 미만
도전 과제 HIGH_WATER(기능 축소 전환 큐 길이)를 8에서 2로 낮춰 축소 배치와 사후 되돌림 건수가 어떻게 달라지는지, 유실이 생기지 않는지 확인한다.
제출물 스트레스 시험 코드, 부하별 비교표, 병목 분석과 기능 축소 정책 설명

미션 9. AAR 기반 동기화 누락 및 데이터 충돌 사례 분석 및 동기화 룰셋 재튜닝

난이도·시간 고급 · 3시간

| 진행 순서 | 1) M9 코드를 실행해 AAR 사례 1,200건의 현행 정확도와 원인별(D1~D6) 오류 분포를 확인한다. 2) 재튜닝된 파라미터와 AAR 사례 재실행 결과, 시험 3,000건 정확도 향상폭, 재발 오류를 읽는다.

3) 회귀 테스트 8개 결과와 YAML 문자열, 지속 학습 연계를 확인한다.

| 확인할 결과 | 현행 규칙 정확도 45.5%, 오류 653건(D4 동시 수정 놓침 29.5%, D3 27.1%, D1 21.3% 순)

시험 3,000건 44.7% -> 93.0%(+48.3%p, 목표 10%p 달성), 같은 AAR 사례 재발 오류 49건(목표 0건 미달), 회귀 테스트 4/8 -> 8/8
도전 과제 구형 기록(버전 벡터 없음) 비율 8%를 0%로 바꾸면 재발 오류가 어떻게 달라지는지, 재입력(D2b) 오류를 줄일 규칙을 제안한다.
제출물 AAR 분석·재튜닝 코드, 원인 분류표, 전후 비교와 회귀 테스트, 튜닝 YAML

미션 10. 오프라인 동기화 야전 재고 관리 SaaS 최종 패키징 및 야전 배포 가이드 완성

난이도·시간 최고급 · 3.5시간

| 진행 순서 | 1) M10 코드를 실행해 설치 스크립트 5단계 점검과 End-to-End 시나리오 4종 결과를 확인한다. 2) 자체 점검 11항목과 함수 커버리지, 매뉴얼 작성률을 읽는다.

3) 브리핑 요약의 수치와 공급망 재난 징후 후보 업체가 앞선 출력과 일치하는지 확인하고 사람이 해야 할 일을 정리한다.

| 확인할 결과 | 설치 5/5 통과, E2E 4/4 성공(공급 중단 업체 탐지 4/4, 다른 업체 오경보 0건), 자체 점검 11/11, 커버리지 100%(15/15), 매뉴얼 7/7장

브리핑(seed 7): 반영 1,847건, 중복 거부 60건, 격리 25건, 미동기 177건, 검토 큐 6건(충돌 5, 공급 징후 1) 모두 PENDING
도전 과제 CONF의 supply_ratio_cut를 0.3에서 0.6으로 올려 공급 징후 오경보가 생기는지, 오프라인 노드가 늘면 어떻게 되는지 비교한다.
제출물 통합 파이프라인 코드, 점검 결과 출력과 브리핑 요약

4. 최종 점검표

점검 항목 확인
미션 1~10 코드가 모두 오류 없이 실행되었다 ( )
각 미션의 확인할 결과를 기록했다 ( )
도전 과제 결과와 이유를 기록했다 ( )
미달 항목(M9 재발 오류)의 원인과 개선안을 적었다 ( )
실제 부대·업체·재고 정보를 사용하지 않았다 ( )
충돌 병합과 보급 조치 결정을 군수관·지휘관이 하도록 설계했다 ( )