jayeon@portfolio~/projects%cat projects/ooair.md
⏺ 전자결재 — 변경에 강한 데이터 기반 결재선 (단독)
문제: 업무·등급마다 결재선이 다르고 조직·정책 변경이 잦음. 코드 고정은 불가.
설계: 업무×등급 조합 단위로 관리자 포털에서 결재선 설정, 결재 생성 시 결재선 스냅샷 복제. 방문·주차·차량·권한 등 여러 결재 유형이 같은 엔진을 재사용.
효과: 운영 중 결재선이 바뀌어도 진행 중 문서는 영향 없음. 변경 대응을 개발→운영 설정으로 이전.
⏺ 방문예약·QR 출입증 — 예약→결재→암호화 QR 발급 (단독)
문제: 오프라인 임시 출입증은 대기·수기 확인이 많고, 방문 시간대·구역별 권한을 매번 조정하기 번거로움.
설계: 방문 예약→전자결재 승인→방문 당일 암호화 QR 발급을 한 흐름으로 연결. 승인 단계에서 출입 시간대·구역을 지정하면 게이트가 시간 기반 출입을 강제하고, QR은 방문 당일에만 발급하며 방문 기간 밖 요청은 거부.
효과: 상시 권한·수기 출입증 없이 예약 기반으로 출입을 통제. QR 당일 발급·기간 검증으로 사전 공유·재사용 위험을 차단.
⏺ 알림 — 외부 연동 비동기화 + 추적성 (단독)
문제: 외부 메시징 솔루션이 비동기·수신 시점 성공만 응답. 미수신 클레임 원인 규명 곤란.
설계: 알림 API 전체 비동기 설계로 핵심 트랜잭션 분리 + 발송 요청 이력 별도 저장.
효과: 결재 승인이 알림에 영향받지 않음. 미수신 시 "요청 누락 vs 외부 발송 문제" 즉시 구분.
⏺ 메뉴·권한 — 역할 기반(RBAC) 접근 제어 (단독)
문제: 서비스·화면이 늘면서 역할별 노출 메뉴·접근 범위를 코드에 고정하기 어려움.
설계: 메뉴·역할·역할-메뉴·사원-역할 모델로 RBAC 구성. 사원 단위로 역할→접근 가능 메뉴를 해석해 평면·트리 두 형태로 제공.
효과: 역할 설정만으로 화면 노출·접근을 운영에서 제어. 관리자·모바일 UI가 동일 데이터로 다른 형태를 사용.
⏺ 출입 게이트 — 다계층 권한 관리 + 외부 연동 복원력 (협업)
문제: 사람 단위 권한 부여는 조직 개편 같은 대량 변경에 취약하고, 외부 출입통제 솔루션 호출 실패 시 하드웨어와 DB 권한이 어긋남.
설계: 개인·팀·부서 3계층 권한 모델로 대량 변경을 지원하되, 상위 권한 회수 시 개인 권한으로 이미 커버되는 출입은 남기는 선택적 회수. 팀·부서 대량 처리 중 외부 호출이 실패하면 DB 권한을 개인 단위로 낮추고 담당자에게 비동기 통보 후 수동 재시도를 허용(개인 단위는 트랜잭션 롤백).
효과: 대량 권한 변경 시 의도치 않은 출입 차단 방지. 외부 연동 장애에도 게이트 접근이 유지되고 데이터 손실 없이 복구.
⏺ 출입이력 수집 배치 — 장애 복구 안전장치 (협업)
문제: 외부 솔루션 장애로 이력 누락 시 조회 불가, 상시 감시 어려움.
설계: (1) 다음 주기 실패 구간 재수집 (2) 실패 시 알림 서비스 연동으로 담당자 통보 (3) 수동 복구 API.
효과: 자동 인지·복구로 운영 안정성 확보.
```mermaid
graph LR
subgraph "4개 단독 서비스 (김자연 설계)"
A[방문예약 서비스] --> B[전자결재 서비스]
B --> C[출입증QR 서비스]
D[알림 서비스]
end
B -->|결재 완료 이벤트| D
C -->|QR 발행| E[모바일 앱]
D -->|이메일/SMS| F[외부 메시징 솔루션]
G[출입이력 수집 배치] -->|API 폴링| H[외부 출입통제 솔루션]
I[관리자 포털] -->|결재선 설정| B
J[SSO 인증] -->|인증| A
``````mermaid
sequenceDiagram
participant 담당자
participant 전자결재서비스
participant DB
participant 배치
담당자->>전자결재서비스: 결재 생성 요청
전자결재서비스->>DB: 결재선 설정 조회
전자결재서비스->>DB: 결재선 스냅샷 복제 저장
Note over 전자결재서비스,DB: 이후 결재선 변경 영향 없음
loop 출입이력 수집 배치
배치->>외부출입통제솔루션: 이력 수집 API 호출
alt 실패
배치->>배치: (1) 다음 주기 실패 구간 재수집
배치->>담당자이메일: (2) 자동 통보
Note over 배치: (3) 수동 복구 API 별도 제공
end
end
```2024.03 — 2025.09 · 미로아이티㈜ (정규직)
OO항공 출입보안 시스템 구축
오프라인 임시 출입증 절차를 온라인 방문예약→결재→QR 출입증으로 전환한 MSA 출입보안 시스템. 10개 백엔드 서비스 중 4개를 단독 설계·개발(약 93개 API)했고, 시스템의 중심인 출입 게이트 서비스를 협업으로 개발.
Java 17Spring BootJPAQueryDSLPostgreSQLSSO
전자결재 — 변경에 강한 데이터 기반 결재선 (단독)
- 문제
- 업무·등급마다 결재선이 다르고 조직·정책 변경이 잦음. 코드 고정은 불가.
- 설계
- 업무×등급 조합 단위로 관리자 포털에서 결재선 설정, 결재 생성 시 결재선 스냅샷 복제. 방문·주차·차량·권한 등 여러 결재 유형이 같은 엔진을 재사용.
- 효과
- 운영 중 결재선이 바뀌어도 진행 중 문서는 영향 없음. 변경 대응을 개발→운영 설정으로 이전.
방문예약·QR 출입증 — 예약→결재→암호화 QR 발급 (단독)
- 문제
- 오프라인 임시 출입증은 대기·수기 확인이 많고, 방문 시간대·구역별 권한을 매번 조정하기 번거로움.
- 설계
- 방문 예약→전자결재 승인→방문 당일 암호화 QR 발급을 한 흐름으로 연결. 승인 단계에서 출입 시간대·구역을 지정하면 게이트가 시간 기반 출입을 강제하고, QR은 방문 당일에만 발급하며 방문 기간 밖 요청은 거부.
- 효과
- 상시 권한·수기 출입증 없이 예약 기반으로 출입을 통제. QR 당일 발급·기간 검증으로 사전 공유·재사용 위험을 차단.
알림 — 외부 연동 비동기화 + 추적성 (단독)
- 문제
- 외부 메시징 솔루션이 비동기·수신 시점 성공만 응답. 미수신 클레임 원인 규명 곤란.
- 설계
- 알림 API 전체 비동기 설계로 핵심 트랜잭션 분리 + 발송 요청 이력 별도 저장.
- 효과
- 결재 승인이 알림에 영향받지 않음. 미수신 시 "요청 누락 vs 외부 발송 문제" 즉시 구분.
메뉴·권한 — 역할 기반(RBAC) 접근 제어 (단독)
- 문제
- 서비스·화면이 늘면서 역할별 노출 메뉴·접근 범위를 코드에 고정하기 어려움.
- 설계
- 메뉴·역할·역할-메뉴·사원-역할 모델로 RBAC 구성. 사원 단위로 역할→접근 가능 메뉴를 해석해 평면·트리 두 형태로 제공.
- 효과
- 역할 설정만으로 화면 노출·접근을 운영에서 제어. 관리자·모바일 UI가 동일 데이터로 다른 형태를 사용.
출입 게이트 — 다계층 권한 관리 + 외부 연동 복원력 (협업)
- 문제
- 사람 단위 권한 부여는 조직 개편 같은 대량 변경에 취약하고, 외부 출입통제 솔루션 호출 실패 시 하드웨어와 DB 권한이 어긋남.
- 설계
- 개인·팀·부서 3계층 권한 모델로 대량 변경을 지원하되, 상위 권한 회수 시 개인 권한으로 이미 커버되는 출입은 남기는 선택적 회수. 팀·부서 대량 처리 중 외부 호출이 실패하면 DB 권한을 개인 단위로 낮추고 담당자에게 비동기 통보 후 수동 재시도를 허용(개인 단위는 트랜잭션 롤백).
- 효과
- 대량 권한 변경 시 의도치 않은 출입 차단 방지. 외부 연동 장애에도 게이트 접근이 유지되고 데이터 손실 없이 복구.
출입이력 수집 배치 — 장애 복구 안전장치 (협업)
- 문제
- 외부 솔루션 장애로 이력 누락 시 조회 불가, 상시 감시 어려움.
- 설계
- (1) 다음 주기 실패 구간 재수집 (2) 실패 시 알림 서비스 연동으로 담당자 통보 (3) 수동 복구 API.
- 효과
- 자동 인지·복구로 운영 안정성 확보.