Work Admin
사내 관리 시스템
개요
- 사내 여러 시스템을 통합 관리하는 어드민 서비스
- 사원, 근태, 전자결재, 일정, 캔틴, 맛집, 블로그, 앱 푸시 등을 단일 코드베이스에서 운영하며, 호스트 기반 라우팅으로 여러 서브도메인을 함께 처리
주요 기능
- 사원 / 조직 Google OAuth 화이트리스트 기반 로그인, 부서 트리 구조 및 직급·권한 매트릭스 관리, 외부 시스템 단방향 동기화
- 근태 일자별 출퇴근 조회 및 필터링, 공휴일 표시, 서버에서 생성해 내려주는 XLSX 리포트
- 전자결재 라벨 및 템플릿 정의, 결재 라인 구성, 댓글 스레드 지원
- 일정 이벤트 및 공휴일 기반 캘린더 관리, 연도 단위 일괄 등록
- 푸시 FCM v1 직접 호출, 토픽 및 사용자 타겟 발송, 이미지 첨부, 발송 이력 관리
- 맛집 네이버 Cloud Geocoding 기반 주소 검색, 메뉴·사진·리뷰 CRUD
- 캔틴 매장별 실시간 주문 허브 및 자동 프린트 트리거
- 리소스 팀 및 개인 일정 관리, 프로젝트 단위 접근 권한 제어
- 백업 D1 → R2 일일 자동 백업, 수동 실행, 토큰 기반 다운로드
- 감사 로그 모든 요청을 미들웨어에서 비동기로 수집 및 기록
기술 스택
- TypeScript 기반 Cloudflare Workers 위에서 동작
- D1, R2, KV, Durable Objects, Cron Triggers를 직접 바인딩하여 사용
- 인증은 Google OAuth 2.0과 Web Crypto API 기반 JWT 서명/검증으로 처리하며, 외부 연동은 FCM, Slack Web API, 네이버 Cloud Maps Geocoding을 사용
- 실시간 영역은 Durable Object 기반 샤딩 구조 위에 WebSocket을 구성했고, 프론트엔드는 서버 렌더 HTML 위에 Tailwind와 Vanilla JS로 구성
설계 노트
- 프레임워크 없이 Raw Fetch 기반 라우팅으로 콜드 스타트와 번들 크기 최소화
- Durable Object 샤딩으로 채팅, 캔틴, QR 허브를 키 기반으로 분산하여 핫스팟 집중 방지
- 비동기 감사 로그는
ctx.waitUntil()기반으로 응답 이후 처리하여 지연 없이 추적 - FCM 토큰은 KV 캐싱으로 재발급 비용을 최소화
- 자체 백업 파이프라인을 통해 D1 데이터를 매일 R2로 자동 적재하고 단기 토큰으로 다운로드 제어