270 lines
17 KiB
Markdown
270 lines
17 KiB
Markdown
**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 재발 오류)의 원인과 개선안을 적었다 | ( ) |
|
|
| 실제 부대·업체·재고 정보를 사용하지 않았다 | ( ) |
|
|
| 충돌 병합과 보급 조치 결정을 군수관·지휘관이 하도록 설계했다 | ( ) |
|