본문으로 건너뛰기

시스템 아키텍처 (System Architecture)

본 2FA 스마트 도어락 시스템은 하드웨어 제어, 백엔드 로직, 데이터 저장소 및 Vision AI 모듈이 유기적으로 결합된 구조로 설계되었다.

아키텍처 개요 (Architecture Overview)

전체 시스템은 크게 사용자 인터페이스를 담당하는 하드웨어 레이어, 인증 로직을 처리하는 백엔드 서버 레이어, 그리고 상태를 모니터링하는 웹 대시보드로 구성된다.

하드웨어 입력NFC Reader & Keypad마이크로컨트롤러Arduino (Serial)릴레이 / 도어락백엔드 서버Python FastAPIVision 모듈YOLOv8 / OpenCV데이터베이스SQLite웹 대시보드

구성 요소별 역할 (Component Responsibilities)

모듈역할 및 책임주요 기술
마이크로컨트롤러NFC 및 키패드 하드웨어 상태를 폴링(Polling)하고, 원시 입력을 Serial 통신으로 백엔드에 전달한다. 서버의 명령에 따라 릴레이를 제어한다.Arduino Uno/Nano, C++
백엔드 API전체 인증 흐름을 제어한다. 1차 인증(NFC/PIN) 확인 후 Vision 모듈을 호출하며, 최종 승인 시 Arduino에 잠금 해제 명령을 전송한다.Python, FastAPI, PySerial
Vision 모듈카메라로부터 프레임을 캡처하여 얼굴을 탐지하고, 등록된 사용자 프로필과 비교하여 2차 인증을 수행한다. YOLOv8 모델을 사용하여 실시간 추론을 수행한다.OpenCV, YOLOv8
데이터베이스사용자 자격 증명(해싱된 PIN, NFC UID) 및 수정 불가능한(Immutable) 출입 로그를 안전하게 저장한다.SQLite
웹 프런트엔드시스템의 현재 상태, 인증 결과 요약 및 실시간 헬스 체크 지표를 시각화하여 제공한다.React, Docusaurus

데이터 및 제어 흐름 (Data vs Control Flow)

데이터 흐름 (Data Flow):

  1. 입력 데이터: 하드웨어에서 발생한 원시 데이터(UID, 키 입력)가 Arduino를 거쳐 백엔드로 전달된다.
  2. 이미지 처리: 백엔드는 1차 인증 성공 시 Vision 모듈을 활성화한다. Vision 모듈은 서버 내부에서 카메라 프레임을 처리하며, YOLOv8을 통해 얼굴의 특징점을 추출하고 저장된 데이터와 대조한다.
  3. 결과 기록: 인증의 모든 성공 및 실패 결과는 SQLite 데이터베이스에 로그 형태로 영구 저장된다.

제어 흐름 (Control Flow):

  1. 중앙 집중식 의사결정: Arduino는 독자적인 출입 결정 권한이 없으며, 모든 결정은 백엔드 서버에서 수행된다.
  2. 명령 하사: 모든 인증 단계가 통과된 경우에만 백엔드에서 UNLOCK Serial 명령을 Arduino에 전송한다.
  3. 하드웨어 실행: Arduino는 수신된 명령에 따라 물리적 릴레이 스위치를 작동시킨다. 이는 소프트웨어 장애 시에도 잠금 상태를 유지하는 Fail-Secure 설계를 보장한다.

데이터 흐름도 (Data Flow Diagram)

하드웨어FastAPI 백엔드SQLite 로그UID/PIN 입력UNLOCK 명령로그 영구 저장