Portfolio Content Strategy
- 결정일:
2026-08-03 - 상태:
approved - 목적: 신규 대표 프로젝트와 기존 실무 사례가 서로 다른 역량을 증명하도록 포트폴리오를 구성
확정된 방향
이 포트폴리오는 한 종류의 결과물만으로 구성하지 않습니다.
- 신규 대표 프로젝트는 AI Agent를 기업 업무시스템에 안전하게 연결하는 역량을 증명합니다.
- 기존 업무 사례 게시물은 Java/Spring, DB/SQL, 인증, 배포와 운영의 실무 깊이를 증명합니다.
최종 포지셔닝은 다음과 같습니다.
Java/Spring 기반 엔터프라이즈 백엔드 경험을 중심에 두고, 오픈웨이트 LLM과 AI Agent를 기존 업무 트랜잭션에 안전하게 연결할 수 있는 백엔드·플랫폼 엔지니어
ML 모델 연구, 학습 또는 파인튜닝을 핵심 정체성으로 두지 않습니다. AI는 기존 백엔드 역량을 대체하는 분야가 아니라 확장하는 기능입니다.
Track A. 신규 대표 프로젝트
OpsMate Local
- 상태:
implemented,tested-component - 형식: 실행 가능한 독립 서비스
- 역할: AI Agent 응용과 안전한 업무 실행 설계 증명
- 기술 중심: Java 21, Spring Boot 3.5, Thymeleaf/HttpSession, JPA/H2·PostgreSQL/Flyway, 오픈웨이트 LLM gateway, 서버 주도 정책 조회 포트, Docker/Caddy
첫 번째 수직 범위는 전체 ERP가 아니라 다음 흐름으로 제한합니다.
자연어 구매 요청
-> 정책 근거 검색
-> 구매요청 초안
-> 승인 또는 반려
-> 승인된 요청만 발주 생성
-> 감사 이벤트 기록
필수 통제는 다음과 같습니다.
- Spring 서비스가 RBAC, 상태 전이와 업무 규칙을 최종 검증
- 서버가 정책 조회 포트를 먼저 호출하고 사용자 요청과 조회 결과만 모델에 전달
- LLM은 정책 조회 포트를 포함한 도구를 직접 실행하지 않으며 DB, 임의 URL 또는 승인 상태에 접근하지 않음
- 모델 출력은 고정 JSON Schema와 서버 측 업무 규칙으로 검증
- 승인되지 않은 발주와 중복 발주 차단
- 모델 미연결, 타임아웃 또는 잘못된 출력 시 모델 의존 초안 생성을 저장 전
fail-closed - 외부 유료 API로 자동 우회하지 않음
- 공개 방문자별 workspace 격리·TTL과 API/CSRF/session 보안 경계
- 동일 모델 요청 single-flight, workspace·전체 quota, queue/follower와 동시 실행 제한
- one-shot migration과 장기 실행 runtime DB 역할 분리
- immutable image digest 기반 open, normal/emergency close와 reopen 절차
- 감사로그, 테스트와 재현 가능한 실행 절차 제공
수직 기능, 공개 웹, PostgreSQL migration·역할 분리, model guard와 배포·중단 자산은 구현됐고 2026-08-04 전체 clean verify에서 54개 테스트가 성공했습니다. 승인된 실제 모델 E2E, 공개 URL·외부 smoke, host egress allowlist·edge/WAF rate limit과 앱·모델 양쪽 호스트 close/reopen rehearsal은 검증하지 않았습니다. 따라서 프로젝트 전체를 verified 또는 운영 완료로 표현하지 않습니다.
Track B. 기존 업무 사례집
- 상태: 독립 샘플 검증 1건, 원본 검토·비식별 초안 4건
- 형식: 문제 해결 게시물 + 공개 가능한 최소 재현 코드
- 역할: Java/Spring 실무 깊이, 기술적 판단, 검증과 운영 경험 증명
사례 게시물은 기술 목록이 아니라 다음 질문에 답해야 합니다.
- 어떤 문제가 있었는가
- 어떤 제약이 있었는가
- 내가 담당한 범위는 무엇인가
- 어떤 대안을 검토했는가
- 왜 해당 설계를 선택했는가
- 어떤 코드와 테스트로 검증했는가
- 결과와 한계는 무엇인가
후보와 검토 상태는 case-study-index.md에서 관리합니다.
두 트랙의 역할 분리
| 결과물 | 주로 증명하는 것 | 증명하지 않는 것 |
|---|---|---|
| OpsMate Local | 서버 주도 정책 조회, 구조화된 AI 초안, 승인 통제와 로컬 모델 장애 처리 | 과거 회사 시스템의 운영 성과 |
| 기존 업무 사례 | Java/Spring, SQL, 인증, 배포, 장애와 운영 판단 | 회사 원본 코드의 공개 또는 전체 팀 성과 |
면접에서는 두 트랙을 다음 문장으로 연결합니다.
기존 실무 사례로 엔터프라이즈 백엔드의 깊이를 증명하고, OpsMate Local로 그 기반 위에 AI Agent를 안전하게 통합하는 현재 역량을 증명한다.
회사 업무 사례 공개 규칙
회사 소유 비공개 저장소는 증거 확인에만 사용합니다.
- 회사 저장소명, 고객명, 내부 URL, 원본 커밋 메시지와 파일 경로를 공개하지 않음
- 회사 소스, diff, SQL, 설정과 데이터를 복사하지 않음
- 본인 귀속과 담당 범위를 원본에서 먼저 확인
- 게시물은 비식별 문제·제약·판단·검증 중심으로 새로 작성
- 코드를 보여줄 필요가 있으면 합성 데이터와 일반화한 도메인으로 독립 재구현
- 원본 검토, 공개 안전성 검토와 재현 코드 검증이 끝나기 전에는 게시 완료로 표시하지 않음
개인 공개 저장소도 게시 전에 자격증명, 개인정보, 라이선스와 README-구현 일치 여부를 검사합니다.
결과물 위치
03_portfolio/case-studies/<slug>.md
02_projects/case-study-samples/<slug>/
02_projects/opsmate-local/
evidence/company-github/: 비식별 근거와 주장 관리03_portfolio/case-studies/: 채용 담당자가 읽는 문제 해결 게시물02_projects/case-study-samples/: 회사 코드와 독립된 재현 샘플02_projects/opsmate-local/: 신규 대표 프로젝트
실행 상태와 Work별 완료 조건은 ../WORKS.md, 공통 검수 기준은 review-checklist.md에서 관리합니다.
다음 실행 순서
- OpsMate Local 최신 변경분의 전체
clean verify, container와 문서 검수를 완료 - 승인된 사설 GPU 모델 호스트에서 실제 모델 구조 출력·p95·실패 E2E 검증
- public host의 egress allowlist와 edge/WAF rate limit을 적용하고 외부 URL smoke 수행
- 앱·모델 양쪽 호스트의 normal/emergency close와 same-digest reopen rehearsal 수행
- GitHub Pages 문구·링크·모바일 렌더링을 다시 확인
case-study-index.md의 다음 Java/Spring 후보를 독립 샘플로 재현