You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.7 KiB
4.7 KiB
[4단계] 보안, 확장성 및 예외 전략 (Security & Scalability)
본 문서는 누수 시험 시스템의 비기능적 요구사항(보안, 가용성, 성능 확장성 및 예외 장애 대응 정책)을 정의한 아키텍처 가이드라인입니다.
1. 보안 및 인가 전략 (Security & Encryption)
1.1 계정 보안 및 비밀번호 해시화
- 전송 보안: 클라이언트(WPF)와 중앙 API 서버 간의 모든 데이터 전송은 HTTPS(TLS 1.2 이상) 프로토콜을 필수로 사용하여 스니핑 공격을 차단합니다.
- 비밀번호 저장: 데이터베이스 내
Users.Password필드는 솔트(Salt)를 포함한 PBKDF2-SHA256 또는 BCrypt 알고리즘으로 단방향 해시 처리하여 데이터베이스 노출 시에도 비밀번호 복호화를 불가능하게 합니다. - 인증 관리: API 호출 시 Stateless한 JWT (JSON Web Token) 방식을 적용하고, 토큰 만료 시간은 8~12시간으로 제한하여 탈취 위험을 최소화합니다.
1.2 장비 통신 물리 보안 및 인가
- 공장 폐쇄망 내부 IP 화이트리스트(IP Whitelisting) 정책을 적용하여, 사전 인가된 장비 제어 PC 및 관리 포트 외의 서버 접근을 원천 차단합니다.
2. 가용성 및 트래픽 성능 확장 전략 (Scalability)
2.1 로컬 버퍼링 & 재시도 (Network Failover)
공장 내 네트워크 불안정으로 인해 중앙 데이터베이스 또는 API 서버 접속이 일시 차단될 경우, 실시간 EOL 공정이 중단되지 않도록 하는 전략입니다.
graph TD
Test[검사 완료] --> Check{네트워크 정상?}
Check -->|Yes| DB[MSSQL 또는 API 업로드 성공]
Check -->|No| Local[로컬 이중화 파일 저장]
Local --> Queue[비동기 재전송 큐 삽입]
Queue --> Scheduler[백그라운드 복구 스케줄러]
Scheduler --> Retry{연결 복구됨?}
Retry -->|Yes| Sync[벌크 업로드 및 로컬 캐시 정리]
Retry -->|No| Wait[대기 후 재시도]
- Offline Fallback: 네트워크 장애 감지 시
EolDatabaseService및LogParser는 로컬 CSV 파일 쓰기 모드로 즉시 Fallback을 수행합니다. - Background Sync: 네트워크 복구 감지 시, 로컬 CSV에만 남겨진 계측 미송신 데이터를 백그라운드 스레드에서 순차적으로 읽어와 REST API 또는 Bulk Copy를 통해 최종 SQL 데이터베이스에 누락 없이 업로드합니다.
2.2 쿼리 성능 최적화 및 인덱스 관리
- 장비 데이터 파티셔닝:
EOL테이블의 크기가 수천만 건 이상 비대해질 경우를 대비해Production_Date연/월 단위로 파티셔닝(Partitioning)하여 쿼리 검색 범위를 국소화합니다. - 배치(Batch) 처리: 이력 조회 대용량 엑셀 다운로드나 검색 시 DB 락(Lock) 점유 시간을 낮추기 위해
WITH (NOLOCK)힌트 적용 및 대량 삽입 시 배치 쿼리를 권장합니다.
3. 예외 장애 처리 및 통합 로깅 정책 (Exception & Logging)
3.1 하드웨어 예외 처리 가이드라인
- 시리얼 통신 끊김: Sentinel C28 또는 ADLINK 보드 통신 시 타임아웃 발생 시, 스레드가 멈추지 않도록 비동기 타임아웃 토큰(
CancellationToken)을 활용해 강제 반환 후 로그 파일에 기록하고 UI 화면 상태바에 적색 경고를 표시합니다. - 포트 오동작 복구: 예외 복구를 위해 포트 리커버리 타이머(
ReconnectTimer)를 동작시켜, 물리 케이블 재연결 시 윈도우가 자동으로 재연결을 수립(Auto-Reconnection)할 수 있도록 설계합니다.
3.2 통합 로깅 정책 (Standard Logging Policy)
모든 모듈의 예외와 동작 이력은 파일 로거(FileLogger) 및 중앙 서버 로거에 표준 규격으로 정주되어 기록되어야 합니다.
로깅 레벨 정의 (Logging Levels)
- INFO: 시스템 정상 기동, 포트 오픈 성공, 로그인 성공 등 일반적인 이벤트 추적용.
- WARNING: 센서 ID 읽기 일시 실패 후 재시도 성공, 타임아웃 1회 발생, 스펙 교차 검증 불일치 등 경고성 사항.
- ERROR: 데이터베이스 연결 실패(Fallback 동작 실행됨), 시리얼 포트 바인딩 실패, 하드웨어 오작동 등 기능적 오류.
- FATAL: 복구 불가능한 시스템 크래시, 프로그램 비정상 종료 등 즉각적인 조치가 필요한 상황.
표준 로그 포맷 규격
[yyyy-MM-dd HH:mm:ss.fff] [LOG_LEVEL] [Class_Name.Method_Name] Message (Details...)
예: [2026-06-24 10:15:45.302] [ERROR] [Board4251Service.SendCommandAsync] Timeout waiting for response (Retry 3/3). Command: x00c_001101:ow2800326003e