EN
프로젝트로 돌아가기
근태관리 시스템

근태관리 시스템

레거시 보안 시스템과의 boundary 분리, explicit handler 기반 도메인 자동화, 부분 데이터 위에서의 idempotency를 결정 기준으로 잡은 사내 근태관리 v1

2024년 2월 - 2024년 5월 3개월

기술 스택

PythonDjangoPostgreSQLMSSQLNGINXDockerNCP

개요

기존 출입통제·지문 단말기 시스템(MSSQL에 출퇴근 원본 로그를 적재하는 보안 솔루션) 위에, 사용자·관리자가 직접 사용할 수 있는 사내 근태관리 서비스를 새로 얹은 v1 프로젝트입니다. 출근 계획(WorkPlan)·실제 출퇴근(WorkLog)·지각/조퇴 집계(TardyLog / LeftEarlyLog)·재택 근무를 한 도메인 모델 위에서 다루도록 설계해, 보안 시스템에만 머물러 있던 출퇴근 데이터를 사내 운영 도구로 끌어올리는 것이 목표였습니다.

레거시 MSSQL이 read-only 시스템이며 Django 측 PostgreSQL과 따로 살아야 한다는 점, 단말기 데이터가 항상 완전하지 않다는 점(지문 누락·새벽 퇴근·반차) 두 가지를 전제로 — 두 DB를 끌어안는 ORM 통합 대신 단방향 boundary API, 시그널 자동화 대신 결정적 explicit handler, 부분 데이터 위에서도 깨지지 않는 idempotent 갱신 세 축을 골라 v1을 만들었습니다.

기술 스택

역할

PM 1·FE 1·BE 2 팀에서 백엔드 2인 중 한 명. v1(2024.02–2024.05) 한 사이클의 이종 DB 연계, 출퇴근 도메인 모델, 출근계획 생성, 지각/조퇴/재택 처리, NCP 배포까지 백엔드 핵심 도메인을 담당했습니다. 이후 v2 고도화에는 참여하지 않았으며, 이 글은 v1 범위(origin/main)의 설계 결정에 한정합니다.

주요 기여

트러블슈팅

의의

레거시 보안 시스템과 새 도메인 모델 사이의 boundary를 흐리지 않으면서 출퇴근 데이터를 사내 서비스로 끌어올린 사례입니다. “DB를 합치지 않고 API로 잇는다”, “자동화는 가능하지만 결정적으로 해야 한다”, “부분 데이터에서도 깨지지 않는다” 세 가지를 v1의 결정 기준으로 삼고, 그 위에 idempotency·시간 경계·외부 API 실패 같은 디테일을 풀어낸 것이 가장 만족스러웠습니다.

모든 프로젝트 보기
Close