엑셈
경력근거: 모델·이미지·의존성의 오프라인 번들링, 컨테이너 레지스트리 기반 반입 체계
※ 실제 산출물이 아닌 AI 예측 시안입니다.
'모델·이미지·의존성의 오프라인 번들링, 컨테이너 레지스트리 기반 반입 체계 및 고객사 보안 절차를 고려한 배포 파이프라인 설계' 라는 공고 문장이 이 산출물의 정의 그대로이고, '외부 API가 불가한 환경에서의 오픈웨이트 모델 선정·벤치마킹' 요구가 로컬 모델 비교표로 구현됩니다. 데이터베이스 성능 관리 솔루션을 고객사 환경에 납품해 온 엑셈의 사업 구조에서만 이 반입·배포 역량이 채용의 중심 축이 됩니다. 이 포트폴리오가 보여주는 것은 폐쇄망 가정의 배포 파이프라인 구축·구동이며, 실제 GPU 서빙 최적화나 금융·공공 규제 심사 실무 경험은 주장하지 않습니다. 모르는 깊이는 면접에서 모른다고 말하는 편이 낫습니다.
공고가 모델·이미지·의존성의 오프라인 번들링과 컨테이너 레지스트리 기반 반입 체계 설계를 담당 업무로 명시합니다. 이 파이프라인이 그 업무를 축소 재현한 실물입니다.
공고가 외부 API 가 불가한 환경에서의 오픈웨이트 모델 선정과 양자화 트레이드오프 판단을 요구합니다. 로컬 모델 두 종의 크기·응답 품질 비교표가 그 판단 근거 문서가 됩니다.
공고가 일회성 패치가 아니라 재사용 자산과 플레이북으로 정리해 제품팀에 전달하는 역할을 요구합니다. 반입 절차를 체크섬 매니페스트와 운영 가이드 문서로 남기는 구성이 같은 태도입니다.
고객사 폐쇄망을 로컬 Kubernetes(kind) 클러스터와 네트워크 차단으로 가정하고, FastAPI 기반 RAG 서비스와 로컬 오픈웨이트 모델을 오프라인 번들(컨테이너 이미지·모델 가중치·파이썬 의존성)로 꾸려 반입·배포·구동하는 파이프라인입니다. 반입물 전체를 체크섬 매니페스트로 검증하고, 배포 직후 스모크 테스트가 검색·응답 흐름을 자동 확인합니다.
고객사 보안 담당자가 지켜보는 반입 심사 자리에서, USB 로 가져간 번들이 한 번에 서고 어떤 파일이 왜 들어왔는지 목록으로 소명되기를 바라는 배포 엔지니어입니다. 현장에서 pip install 이 안 되는 걸 그날 알게 되는 상황을 다시 겪고 싶지 않은 사람입니다.
반입물을 체크섬 매니페스트로 고정하고 설치·기동·검증을 스크립트 한 벌로 묶으면, 폐쇄망 배포의 성패가 현장 임기응변이 아니라 반입 전에 결정되는 구조로 바뀝니다.
온프레미스 GPU 없이 로컬 kind 클러스터로 폐쇄망을 가정하고 시작합니다. CPU 로 도는 소형 오픈웨이트 모델(llama.cpp 기반)과 FastAPI RAG 서비스를 오프라인 번들로 반입해, 외부 네트워크 차단 상태에서 설치 스크립트 한 벌로 기동·질의 응답까지 도는 완결품입니다.
번들 전 파일 체크섬 매니페스트 검증, 배포 직후 스모크 테스트 자동화, 이미지 누락·체크섬 불일치 같은 반입 실패 시나리오별 복구 절차 문서가 남은 상태입니다.
로컬 모델 두 종(크기·양자화 수준이 다른)의 응답 품질·자원 사용 비교표와, 고객사 내부팀에 넘기는 운영 가이드(기동·중지·로그 확인·장애 1차 대응)가 붙은 상태입니다.
외부 네트워크를 차단한 클러스터에서 반입 번들 설치부터 RAG 질의 응답까지 스크립트 한 벌로 완주해 보입니다(실제 실행 결과가 증명입니다).
번들 전 파일이 체크섬 매니페스트와 100% 일치함을 반입 전 검증 단계에서 보여줍니다(자동 검증, 전 파일 대상).
이미지 누락·체크섬 불일치·의존성 빠짐 같은 반입 실패 5종을 일부러 만들어도 배포 전 검증이 전부 잡아내고 복구 절차 문서로 이어집니다.
이 파이프라인은 로컬 kind 클러스터와 CPU 소형 모델로 폐쇄망을 가정한 구동 증명이며, 실제 고객사 GPU 자원 최적화와 보안 심사 통과는 엑셈 현장 환경이 있어야 검증됩니다. 이 포트폴리오는 그 현장 투입 절차를 바로 시작할 수 있는 상태로 만듭니다.
구동 증명은 로컬 kind 클러스터 기준이라 실제 고객사 Kubernetes 배포판·보안 정책과 차이가 있습니다. 면접에서는 가정 범위를 먼저 밝히고 데모 동작과 이전 절차로 설명합니다.
쉬운 시나리오만 통과하는 함정을 피하려고 이미지 누락·체크섬 변조·의존성 빠짐 같은 반입 실패 케이스를 일부러 만들어 검증 단계가 잡는지 확인합니다.
CPU 소형 모델의 응답 품질은 데모 수준입니다. GPU 서빙(vLLM 류)과 대형 모델 운영은 실장비가 필요한 도입 단계 과제로 분리합니다.
이 포트폴리오는 배포 파이프라인 구축을 보여줄 뿐 금융·공공 규제 심사 실무나 GPU 최적화 실전 경험은 주장하지 않습니다. 모르는 영역은 면접에서 모른다고 말합니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
반입 번들의 구성물 목록입니다. 체크섬 검증의 기준이며 누락·불일치 탐지 시나리오의 입력입니다.
| item_id | item_type | filename | sha256 | size_mb | required |
|---|---|---|---|---|---|
| B-001 | container_image | rag-api_1.0.0.tar | a3f1c2d4e5b697801234567890123456789012… | 412.5 | true |
| B-002 | container_image | llm-server_1.0.0.tar | b4e2d3c5f6a708912345678901234567890123… | 890 | true |
| B-003 | container_image | postgres_16-alpine.tar | c5f3e4d6a7b819023456789012345678901234… | 95.2 | true |
| B-004 | container_image | redis_7-alpine.tar | d6a4f5e7b8c920134567890123456789012345… | 18.9 | true |
| B-005 | container_image | elasticsearch_8.14.tar | e7b5a6f8c9d031245678901234567890123456… | 640.3 | false |
다음 JSON Schema 를 그대로 만족하는 반입 번들 매니페스트 행을 20개 더 만들어 주세요: {"type":"object","properties":{"item_id":{"type":"string"},"item_type":{"type":"string","enum":["container_image","model_weight","python_wheel","config","script"]},"filename":{"type":"string"},"sha256":{"type":["string","null"]},"size_mb":{"type":["number","null"]},"required":{"type":"boolean"}},"required":["item_id","item_type","filename","required"]} 쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라: (1) sha256 이 null 인 미서명 항목 3건(반입 심사에서 지적돼야 함), (2) size_mb 가 null 이거나 0.01 이하 극소·2000 이상 극대 경계값 4건, (3) required false 인 선택 항목과 그것만 빠졌을 때 통과해야 하는 구성, (4) 같은 구성요소의 버전만 다른 파일명 쌍 2쌍(구버전 잔존 탐지).{"type":"object","properties":{"item_id":{"type":"string"},"item_type":{"type":"string","enum":["container_image","model_weight","python_wheel","config","script"]},"filename":{"type":"string"},"sha256":{"type":["string","null"]},"size_mb":{"type":["number","null"]},"required":{"type":"boolean"}},"required":["item_id","item_type","filename","required"]}폐쇄망 안에서 RAG 가 검색할 사내 운영 문서 더미입니다. 스모크 테스트의 질의 대상입니다.
운영 DB 는 매일 새벽 2시에 전체 백업을 수행한다. 백업본은 별도 스토리지에 14일 보관하며, 복구 훈련은 분기 1회 실시한다.
야간 배치가 실패하면 재시도는 최대 2회까지 자동 수행된다. 2회 실패 시 당직 엔지니어에게 문자 알림이 발송된다.
다음 JSON Schema 를 그대로 만족하는 사내 운영 문서를 20건 더 만들어 주세요: {"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"}},"required":["title","body"]} title 은 'OPS-## 제목' 형식의 폐쇄망 고객사 운영 규정으로 쓸 것. 쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라: (1) 신·구버전이 상충하는 문서 쌍 2쌍(구버전 잔존), (2) 다른 문서를 참조만 하고 답이 없는 문서 2건, (3) 수치 기준(보관 일수·임계치)이 서로 다른 유사 문서 2건, (4) 답이 문서에 없는 질의를 만들 수 있도록 좁은 주제만 다루는 문서 구성.{"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"}},"required":["title","body"]}| Python | 번들 빌드·체크섬 검증·스모크 테스트 스크립트와 RAG 서비스 구현 언어입니다 |
| FastAPI | 폐쇄망 안에서 도는 RAG 질의 API 서버입니다 |
| Django | 공고의 백엔드 프레임워크 요건 중 하나로, 관리 화면이 필요한 확장 시점의 대안으로 비교 문서에 넣습니다 |
| Flask | 스모크 테스트 결과를 보여주는 초경량 상태 페이지에 씁니다 |
| PostgreSQL | 문서 메타데이터와 배포 이력을 저장합니다. 오프라인 이미지로 함께 반입합니다 |
| Redis | 질의 결과 캐시로 반입 번들에 포함해 폐쇄망 안 구성만으로 동작함을 보입니다 |
| Elasticsearch | 키워드 검색 축으로, 벡터 검색과 함께 하이브리드 검색을 구성합니다 |
| ClickHouse | 질의 로그 적재 확장 지점으로 아키텍처 문서에 표기합니다 |
| Kubernetes | kind 클러스터로 고객사 폐쇄망 환경을 가정해 배포 대상으로 씁니다 |
| Docker | 모든 구성요소를 이미지로 만들어 tar 로 저장·반입하는 번들링 단위입니다 |
| LLM | 로컬 오픈웨이트 모델이 검색된 문단을 근거로 답을 만듭니다. 외부 API 호출은 전 구간에서 없습니다 |
| RAG | 사내 문서 검색·근거 인용 응답이라는 서비스 골조입니다 |
✓ pass → 여기서 멈춰도 완결입니다. 더 키우려면 체크섬 검증·실패 복구 절차로 넘어갑니다.
✓ pass → 모델 비교표와 운영 이전 문서 작성으로 확장합니다.