임준열

Backend Engineer
임준열 프로필 사진

Introduce

SKT 고객센터 운영사 서비스에이스에서 전사 운영 플랫폼과 사내 AI 인프라를 구축·운영하는 백엔드 엔지니어입니다.
IT 자산 약 6,200건을 Audit Trail 기반 플랫폼으로 통합해 분실 처리 자산 약 1,000만 원을 회수했고, Local LLM 공통 호출 구조를 구축해 7개 사내 서비스의 주간 약 4,200건 요청을 운영하고 있습니다.

반복 업무를 REST API로 표준화하고, 작업이 실패하더라도 “누가 · 언제 · 무엇을 · 어디까지” 실행했는지가 남는 상태·이력 구조를 설계합니다.

Skills

Backend
JavaSpring BootJPAMyBatisREST API
Database
MySQLPostgreSQL
Infra / Ops
LinuxDockerKubernetesSaltStackPythonGo
AI Platform
LiteLLMOpenWebUILocal LLMMCP
Web / Tools
VueJavaScriptGitGitHub

Career

정규직 · 2024.07 ~ 재직 중
SKT 고객센터 운영 계열사 · AI 전략팀 매니저 — 전사 운영 플랫폼 및 AI 인프라 구축·운영
  • LiteLLM Proxy와 PostgreSQL을 기반으로 사내 Local LLM 공통 호출·사용량 추적 구조 구축, 7개 서비스 운영 연동
  • 통합 자산관리와 AXis를 요구사항 정의부터 단독으로 개발·배포·운영해 전사 실사용 서비스로 정착
  • IT 자산 6,200건을 필드 단위 변경 이력(Audit Trail) 구조로 통합하고, 이력 추적으로 분실 처리 자산 약 1,000만 원 회수
  • AXis 월평균 약 50건 접수 체계를 정착시키고 Local LLM 초안 생성을 적용해 등록 부담 완화 · 분기 우수 사원 수상

Projects 대표 2건 · 그 외 프로젝트는 다음 장 경력기술서에 기재

Local LLM 기반 사내 AI 운영 인프라 전환상세 ↗

2026.05 ~ 진행 중
LiteLLM · OpenWebUI · PostgreSQL · pgvector · BGE-M3 · RAG · DGX Spark 기반 Local LLM · MCP
  • 외부 LLM API 의존 구조를 사내 장비 기반으로 전환하고 LiteLLM Proxy에서 인증·로그·토큰 집계를 일원화
  • BGE-M3 임베딩과 pgvector 기반 RAG 파이프라인 및 관리 플랫폼을 구축해 문서·사이트의 수집·청킹·임베딩·재수집 흐름을 운영화
  • 요청 단위로 모델·토큰 수·응답 시간·호출 Key를 PostgreSQL에 기록해 서비스·팀별 사용량 추적 체계 구축
  • 사내 서비스 7개 연동 — 주간 약 4,200건 · 약 1,000만 토큰 · 운영 로그 기준 정상 응답률 99.6%

DBOps — Mini DBMS 운영 관리 플랫폼 상세 ↗ GitHub ↗

개인 프로젝트
여러 MySQL 인스턴스의 상태·계정·권한 작업과 실행 이력을 한곳에서 관리
Java · Spring Boot · MySQL · Vue · Docker · Python · Go · SaltStack · Kubernetes
  • 운영 메타데이터는 Meta DB, 실제 계정·권한 작업은 Target DB로 분리하고 런타임 동적 연결 구조 구현
  • 분산 트랜잭션 대신 PENDING → SUCCESS / FAILED 상태 모델과 독립 이력 트랜잭션으로 실패한 요청도 추적
  • 권한 enum 화이트리스트, 인스턴스 단위 예외 격리, 30초 헬스체크로 보안성과 장애 영향 범위 통제

Education

2026.02
학점은행제 컴퓨터공학과 학사
2021.02
인덕대학교 기계설계학과 전문학사
2023.03 ~ 2023.08
쌍용강북교육센터 Java·Spring 기반 AWS 클라우드 융합 개발 과정 수료 · 896시간

Certificate

2025.12
정보처리기사
2024.11
컴퓨터활용능력 1급
2023.07
SQLD SQL 개발자

Military

2017.10 ~ 2019.06
육군 8사단 기갑수색대대 대형운전병 · 병장 만기제대

경력기술서

문제 정의, 설계 판단, 운영 결과를 중심으로 작성했습니다.

서비스에이스

2024.07 ~ 재직 중 · AI 전략팀 (매니저)

Local LLM 기반 사내 AI 운영 인프라 전환

LiteLLM · OpenWebUI · PostgreSQL · pgvector · BGE-M3 · RAG · MCP · DGX Spark 기반 Local LLM(SKT A.X 4.0)
배경 · 문제

외부 LLM API 사용 증가로 비용 부담이 커졌고, 사용자·서비스별 사용량을 분리해 추적할 수 없었습니다.
내부 정보가 포함된 질의가 외부 API를 경유하는 문제도 있어, 사내 장비에서 구동되는 Local LLM과 공통 운영 계층을 구축했습니다.
저는 LiteLLM–PostgreSQL 운영 데이터 구조와 OpenWebUI–LiteLLM–Local LLM 호출 흐름의 연동·검증을 담당했습니다.

접근 · 의사결정
  • 서비스가 모델을 직접 호출하지 않고 LiteLLM Proxy를 거치도록 구성해 API Key 인증·호출 로그·토큰 집계를 한 지점에 일원화
  • OpenAI 호환 인터페이스를 채택해 기존 서비스는 엔드포인트 중심으로 변경하고, 모델 교체 시 각 애플리케이션의 수정 범위를 최소화
  • LiteLLM SpendLogs 기반으로 모델·프롬프트/응답 토큰·응답 시간·호출 Key·팀 정보를 요청 단위로 PostgreSQL에 저장
  • 챗봇 1개로 호출 흐름을 검증한 뒤 AXis·RPA 포털·VOC 대시보드 등 7개 사내 서비스로 단계 확산
  • 문서와 사이트를 수집·청킹한 뒤 LiteLLM 공통 호출 경로의 BGE-M3로 임베딩하고, PostgreSQL pgvector에 원문·출처·청크 메타데이터와 함께 저장하는 RAG 파이프라인 구축
  • 수집 대상 등록·재크롤링·문서 상태 관리를 한 화면에서 수행할 수 있는 RAG 관리 플랫폼을 구현해 지식 데이터 갱신 과정을 운영 업무로 표준화
결과 · 성과
  • 7개 서비스가 API Key 단위로 실트래픽 처리 — 주간 약 4,200건 / 약 1,000만 토큰, 운영 로그 기준 정상 응답률 99.6%
  • Key·팀별 사용량과 응답 시간을 추적할 수 있는 운영 모니터링 체계 확보
  • 문서·사이트를 운영자가 직접 등록하고 갱신할 수 있는 RAG 관리 체계를 마련해 지식 데이터 확장과 재수집 작업을 단순화
  • 질의의 외부 LLM API 전송 경로를 제거해 내부 데이터의 외부 노출 가능성을 축소하고 외부 LLM API 사용료 0원 달성
트러블슈팅 · 배운 점

크롤링 문서와 청크가 누적되면서 의미가 비슷한 후보가 증가해, 정답 청크가 존재하더라도 최종 Top-K 밖으로 밀리는 검색 품질 저하가 발생했습니다.
실패 질의의 검색 순위를 추적해 정답이 넓은 후보군에는 포함되지만 최종 결과에서 탈락하는 것을 확인하고, 임베딩 누락이 아닌 후보 간 경쟁과 중복 청크의 순위 잠식 문제로 원인을 좁혔습니다.
1차 검색에서 후보를 Top 50까지 확보한 뒤 완전·유사 중복을 제거하고 문서별 청크 수를 제한했으며, bge-reranker-v2-m3로 상위 후보를 재평가해 최종 Top 6만 LLM에 전달하도록 검색 단계를 분리했습니다.
검색 후보를 무작정 프롬프트에 늘리는 대신 Recall을 확보하는 검색 단계와 Precision을 높이는 재정렬 단계를 분리해야 데이터가 증가해도 검색 품질을 안정적으로 유지할 수 있음을 확인했습니다.

AXis — 전사 AX 과제 접수·관리 플랫폼

Java · Spring Boot · MySQL · Vue · Docker · Linux · Local LLM
배경 · 문제

전사 AI 전환 수요가 메일·구두 요청·부서별 논의로 흩어져 있었고, 접수 기준이 없어 과제를 일관되게 분류하기 어려웠습니다.
제안자가 배경·개선안·기대 효과를 직접 작성해야 해 자발적인 등록도 저조했습니다.
수요를 구조화된 데이터로 접수하고 처리 상태까지 관리하는 플랫폼을 구축했습니다.

접근 · 의사결정
  • 단순 게시판이 아니라 제안 → 접수 → 검토 → 상태 관리 프로세스를 기준으로 사용자와 관리자의 역할·화면·API 접근 흐름 분리
  • 과제명·업무 영역·배경·개선안·기대 효과·처리 상태를 컬럼 단위로 구조화해 접수 후 재분류 수작업을 줄이고 상태 이력 확장 기반 확보
  • 사용자가 1~2줄을 입력하면 Local LLM이 항목별 초안을 생성하고, 사용자가 검토·수정한 뒤 확정하도록 해 자동화와 책임 있는 입력 사이의 균형 확보
  • Docker 기반 실행 환경과 Linux 운영 로그를 검증하고 본부별 설명회 4회를 통해 실제 사용 흐름 정착
결과 · 성과
  • 월평균 약 50건의 AX 과제가 접수되는 전사 운영 체계로 정착
  • LLM 초안 생성으로 등록 부담을 낮추면서 제안 데이터의 항목별 완성도 확보
  • 플랫폼 구축과 운영 확산 기여로 분기 우수 사원 수상

통합 자산관리 시스템 — 사내 IT 자산 운영 플랫폼

Java · Spring · MySQL · JavaScript · Apache POI · Chart.js — 자산 약 6,200건 / 전사 4개 본부
배경 · 문제

IT 자산이 부서별 엑셀로 관리되어 반납·재배정 때 기존 값이 덮어써졌고, 분실·미확인 자산의 마지막 사용자와 변경 경로를 추적할 수 없었습니다.
등록 → 재배정 → 반납 전 과정을 단일 플랫폼으로 통합하고, 모든 변경이 사용자·시점·필드 단위로 남는 구조로 전환했습니다.

접근 · 의사결정
  • 현업이 가장 먼저 필요로 한 자산 위치 조회를 MVP로 배포하고, 피드백에 따라 반납·재배정·엑셀 연동·통계 기능을 단계적으로 확장
  • 수정 전 데이터를 조회해 새 값과 필드 단위 diff를 계산하고 변경된 항목만 전·후 값과 함께 이력 테이블에 저장
  • 본 데이터 UPDATE와 이력 INSERT를 하나의 트랜잭션으로 처리해 본 데이터만 바뀌고 이력이 빠지는 상황 방지
  • DB 트리거가 아닌 애플리케이션 레벨 이력화를 선택해 로그인 세션의 사번을 변경자로 기록하고, 오류 발생 시 이력 기준으로 원인 추적·복구 가능하도록 설계
결과 · 성과
  • 자산 약 6,200건의 등록·조회·반납·재배정·이력 관리를 단일 시스템으로 통합, 전사 4개 본부 실사용 운영
  • 이력 기반 추적으로 분실 처리 자산 약 1,000만 원 회수 및 기한 내 자산 신고 완료
  • 필드 단위 Audit Trail을 기반으로 감사 대응과 데이터 오류 원인 추적 체계 확보
트러블슈팅 · 배운 점

기존 데이터를 일괄 이관하는 과정에서 도입연도 등 일부 관리 항목이 비어 있었습니다.
임의 값으로 보정하면 통계와 이력의 신뢰도가 함께 무너지므로, 누락값을 ‘미입력’ 상태로 분리해 가시화하고 운영 과정에서 보완하도록 설계했습니다.
데이터 이관은 값을 옮기는 작업이 아니라 기존 데이터 품질을 드러내고 관리 기준을 다시 세우는 과정이라는 점을 배웠습니다.

개인 프로젝트

DBOps — Mini DBMS 운영 관리 플랫폼 GitHub ↗

Java · Spring Boot · MySQL · Vue · Docker · Python · Go · SaltStack · Kubernetes
배경 · 문제

여러 MySQL 인스턴스의 상태 확인과 계정·권한 작업을 개별 CLI로 수행하면 결과가 분산되고, 실패 시 어떤 요청이 어디까지 실행됐는지 추적하기 어렵습니다.
인스턴스 등록부터 상태 점검, 권한 작업, 실행 이력 조회까지 하나의 플랫폼에서 관리하고 실패한 요청도 사라지지 않는 운영 구조를 구현했습니다.

접근 · 의사결정
  • 인스턴스 정보와 작업 이력은 Meta DB, 실제 계정·권한 명령은 Target DB로 분리하고 런타임에 등록되는 DB를 위한 동적 연결 구조 구현
  • 서로 다른 DB의 작업을 하나의 트랜잭션으로 묶는 대신 요청을 먼저 PENDING으로 기록하고 결과에 따라 SUCCESS / FAILED로 전이
  • 이력 저장을 독립 트랜잭션으로 분리해 Target DB 명령이 실패해도 요청 내용과 오류 원인이 남도록 설계
  • 사용자명·호스트 정규식 검증과 권한 enum 화이트리스트로 임의 SQL 실행을 제한하고, 인스턴스 단위 예외 격리로 한 대상의 장애가 전체 수집을 중단하지 않도록 구성
  • 30초 주기 헬스체크와 상태 이력으로 장애·복구 시점을 추적하고, Go CLI에서는 goroutine으로 여러 인스턴스를 병렬 점검
결과 · 성과
  • 인스턴스 등록 → 상태 점검 → 계정·권한 작업 → 실행 이력 조회로 이어지는 DB 운영 흐름 구현
  • MySQL 3개 인스턴스를 대상으로 장애·복구 감지와 지표 수집 흐름 검증
  • SaltStack 설정 배포의 멱등성과 Kubernetes Pod 재기동(self-healing) 흐름 검증
트러블슈팅 · 배운 점

사용하려던 SaltStack 공개 이미지 태그가 더 이상 제공되지 않아 python:3.10-slim을 기반으로 실행 환경을 직접 구성했습니다.
컨테이너가 기동 직후 종료되는 문제는 docker logs의 Traceback을 기준으로 distro, pycryptodomex, cryptography 등 누락 의존성을 확인해 해결했습니다.
이후 베이스 이미지와 런타임 의존성을 Dockerfile에 직접 명시해 외부 이미지 정책에 덜 의존하는 재현 가능한 환경으로 전환했습니다.