피드로 돌아가기
Dev.toFrontend
원문 읽기
SaaS 대체 가능한 로컬 기반 License Manager의 경량 아키텍처 설계
Y a des petites choses qu'on peut coder soi-meme au lieu de payer un SaaS
AI 요약
Context
고가의 Software Asset Management SaaS가 제공하는 단순한 데이터 테이블과 알림 기능을 대체하기 위해 개발된 로컬 애플리케이션. 불필요한 구독 비용을 제거하고 데이터 보안을 위해 100% Local 환경의 시스템 구축을 목표로 함.
Technical Solution
- SQLite 기반의 최소 스키마 설계로 데이터 정규화를 지양하고 소프트웨어 명칭과 만료일이라는 2개 컬럼만 유지하는 구조 채택
- 데이터 무결성 보장을 위해 '잔여 일수'를 DB에 저장하지 않고 런타임에 실시간 계산하는 Derived Data 전략 적용
- QTimer를 통한 60초 주기 폴링 설계를 통해 리소스 소모를 최소화하면서 UI의 실시간성을 확보한 상태 관리 구현
- plyer 라이브러리를 활용하여 OS별 Native Notification API를 추상화함으로써 Cross-platform 호환성 확보
- Matplotlib 기반의 데이터 시각화와 smtplib를 결합한 HTML 메일 전송 파이프라인 구축으로 외부 API 의존성 제거
- PyQt5의 QSS(Qt Style Sheets)를 통한 CSS 기반 테마 시스템을 구현하여 외부 라이브러리 없이 Dark Mode 전환 로직 완성
실천 포인트
- 상태 값 저장 시 데이터 중복이나 동기화 오류를 방지하기 위해 계산 가능한 값은 Derived Data로 처리할 것 - 단순 알림 기능 구현 시 커스텀 팝업보다 OS Native Notification을 활용해 UX 일관성을 확보할 것 - 단순 반복 작업 도구의 경우 SaaS 도입 전, 표준 라이브러리(stdlib) 기반의 로컬 도구로 대체 가능한지 비용 대비 효율을 분석할 것