임준열

Backend Engineer
010-3309-2284 ojo228412@gmail.com
임준열 프로필 사진

Introduce

정형화되지 않은 현업 업무를 분석해 데이터 구조와 API로 구체화하고, Node.js 기반 서비스의 개발부터 배포·운영까지 직접 책임져 온 백엔드 엔지니어입니다. 전사 AX 과제 플랫폼 AXis와 통합 자산관리 시스템을 0→1로 구축하고, 출시 후 사용자 피드백과 운영 데이터를 바탕으로 기능을 지속적으로 고도화했습니다.

운영에서는 데이터 정합성·추적 가능성·관측성을 중요하게 봅니다. 약 9,200건의 IT 자산을 트랜잭션과 필드 단위 Audit Trail로 관리해 변경 경로를 추적하고 분실 처리 자산 약 1,000만 원을 회수했습니다. 또한 21개 사내 서비스가 공유하는 Local LLM Gateway를 운영하며 주간 약 2.2만 건·약 3,800만 토큰을 처리하고, 모델 요청부터 MCP Tool 실행까지 동일 Trace로 연결해 오류 원인을 추적할 수 있는 구조를 구축했습니다.

Skills

Backend
Node.jsJavaScriptREST APIJavaSpring BootJPA
Database
MySQLPostgreSQL
Infra / Ops
LinuxDockerKubernetesSaltStackGitGitHub
Platform
LiteLLMMCPOpenWebUITool Calling
Additional
VuePythonGo

Career

정규직 · 2024.07 ~ 재직 중
SKT 고객센터 운영 계열사 · AI 전략팀 매니저 — Node.js 운영 백엔드 및 AI 공통 플랫폼 구축·운영
  • 정형화되지 않은 현업 요구를 업무 흐름·상태·데이터 구조로 구체화해 AXis와 통합 자산관리 시스템의 API 설계부터 Node.js 개발·배포·운영까지 단독 수행
  • AXis를 0→1 출시한 뒤 설명회 4회에서 수집한 피드백을 바탕으로 SSO·LLM 입력 지원을 추가하고, AI 에이전트 사례를 iframe으로 직접 실행하되 사용자 권한 범위 안에서만 접근하도록 고도화
  • IT 자산 약 9,200건을 트랜잭션과 필드 단위 Audit Trail로 관리해 변경 이력의 정합성을 확보하고, 이력 추적으로 분실 처리 자산 약 1,000만 원 회수
  • 21개 서비스가 공유하는 Local LLM Gateway를 운영해 주간 약 2.2만 건·약 3,800만 토큰을 처리하고, 동일 사용량을 외부 LLM API로 처리하는 경우와 비교해 월 약 1,000만 원 비용 절감
  • MCP Tool 실행에 SSO 권한·Prepare → Commit·멱등성·Audit Trail을 적용하고, 모델 호출과 Tool 실행을 trace_id로 연결해 로그 기반으로 실패 원인을 추적

Projects 대표 3건 · 상세 설계와 운영 경험은 경력기술서에 기재

AXis — Node.js 기반 전사 AX 과제 운영 백엔드상세 ↗

단독 개발 · 2026.01 ~ 운영 중
메일·구두로 흩어진 AX 요구를 상태 기반 업무 흐름과 구조화된 데이터로 전환하고, 출시 후 사용자 피드백으로 지속 고도화
Node.js · MySQL · JavaScript · Docker · Linux · Local LLM
  • 과제 정보·사용자/관리자 권한·처리 상태를 중심으로 데이터 구조와 REST API를 설계하고 개발·배포·운영까지 단독 수행
  • 접수·조회·상태 관리 기능을 먼저 출시한 뒤 설명회 4회에서 수집한 피드백을 바탕으로 SSO·LLM 입력 지원을 순차적으로 추가
  • AI 에이전트 사례 게시판에서 사내 AI 서비스를 iframe으로 직접 실행할 수 있게 연동하고, 기존 SSO 권한을 기준으로 접근 가능한 서비스만 노출
  • 월평균 약 50건이 접수되는 전사 AX 창구로 정착 · 분기 우수 사원 수상

통합 자산관리 — 9,200건 데이터의 정합성과 변경 이력을 관리하는 운영 백엔드상세 ↗

단독 개발 · 운영 중
부서별 엑셀에 흩어진 자산을 단일 시스템으로 통합하고, 트랜잭션과 Audit Trail로 데이터와 변경 이력의 불일치를 방지
Node.js · MySQL · JavaScript · Chart.js
  • 자산 약 9,200건의 등록·조회·반납·재배정 흐름과 데이터 구조를 설계해 전사 4개 본부에서 운영
  • 수정 전·후 값을 비교해 실제 변경 필드만 저장하고, 본 데이터 UPDATE와 Audit INSERT를 동일 트랜잭션으로 처리해 이력 누락 방지
  • 변경 사용자·시점·필드를 역추적할 수 있게 만들어 분실 처리 자산 약 1,000만 원 회수 및 감사·오류 원인 추적 체계 확보

21개 서비스를 위한 Local LLM Gateway·MCP 업무 실행 플랫폼상세 ↗

3인 협업 · 2026.05 ~ 진행 중
LiteLLM · OpenWebUI · PostgreSQL · MCP · Tool Calling · DGX Spark 기반 Local LLM
  • 서비스별 직접 호출 대신 공통 Gateway를 두고 인증·로그·토큰 집계를 일원화, 1개 서비스 검증 후 21개 서비스로 단계 확산
  • 모델 요청과 MCP Tool 실행을 trace_id로 연결해 서비스·Key·Tool별 호출량·지연·오류를 PostgreSQL에서 추적
  • 쓰기 작업에 SSO 권한 검증, Prepare → Commit·멱등성 키·Audit Trail을 적용해 중복·오실행 방지
  • 주간 약 2.2만 건 · 약 3,800만 토큰 · 정상 완료율 99.97% 운영, 동일 사용량의 외부 LLM API 대비 월 약 1,000만 원 비용 절감

Education

2024.05 ~ 2026.02
학점은행제 컴퓨터공학과 학사
2017.03 ~ 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사단 기갑수색대대 대형운전병 · 병장 만기제대

경력기술서

도메인·API 설계, 데이터 정합성, 출시 후 개선, 로그·Trace 기반 운영 문제 추적을 중심으로 작성했습니다.

서비스에이스

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

AXis — Node.js 기반 전사 AX 과제 운영 백엔드

기간 · 2026.01 ~ 2026.05 구축 · 이후 운영·고도화 지속 담당 범위 · 요구사항 정리, 데이터 구조·REST API 설계, 백엔드·프론트엔드 개발, 배포, 운영, 사용자 확산 전반(단독) Node.js · MySQL · JavaScript · Docker · Linux · Local LLM
배경 · 문제

AX 과제가 메일과 구두로 들어오면서 접수 항목과 처리 상태가 담당자마다 달랐고, 진행 상황을 일관되게 추적하기 어려웠습니다.
정형화되지 않은 현업 업무를 시스템이 처리할 수 있는 데이터 구조와 API로 구체화하고, 실제 사용 과정에서 확인되는 요구를 다음 버전에 반영할 수 있는 운영 구조가 필요했습니다.

접근 · 의사결정
  • 과제 정보·사용자/관리자 권한·처리 상태를 핵심으로 데이터 구조를 정의하고 접수·조회·상태 변경 REST API를 설계
  • 기능을 한 번에 크게 만들기보다 접수·조회·상태 관리를 먼저 출시하고, 실제 사용 과정에서 확인한 요구를 후속 기능으로 반영하는 방식으로 단계 확장
  • 사용자가 1~2줄을 입력하면 Local LLM이 항목별 초안을 생성하되, 사용자가 검토·수정한 뒤 확정하도록 해 자동 생성 결과가 그대로 업무 데이터가 되지 않도록 구성
  • 기존 SSO 사용자 정보와 권한을 재사용하고, AI 에이전트 사례 게시판에서 사내 AI 서비스를 iframe으로 직접 실행하도록 연동하되 접근 가능한 서비스만 권한 범위 안에서 노출
출시 후 운영 · 개선
  • 본부별 설명회 4회에서 불편 사항과 사용 패턴을 수집하고 SSO·LLM 입력 지원·권한 기반 iframe 실행 기능을 순차적으로 반영
  • 월평균 약 50건이 접수되는 전사 AX 과제 창구로 정착
  • 요구사항 정리부터 출시·운영·확산까지 책임진 성과로 분기 우수 사원 수상

통합 자산관리 — 9,200건 데이터의 정합성과 변경 이력을 관리하는 운영 백엔드

담당 범위 · 요구사항 정리, 데이터 구조 설계, Node.js 개발, 기존 데이터 이관, 배포·운영 전반(단독) Node.js · MySQL · JavaScript · Chart.js — 자산 약 9,200건 / 전사 4개 본부
배경 · 문제

IT 자산이 부서별 엑셀로 관리되어 반납·재배정 때 기존 값이 덮어써졌고, 분실·미확인 자산의 마지막 사용자와 변경 경로를 추적할 수 없었습니다.
등록 → 재배정 → 반납 전 과정을 하나의 시스템으로 통합하면서, 현재 데이터와 변경 이력이 서로 어긋나지 않는 구조가 필요했습니다.

접근 · 의사결정
  • 자산 위치 조회를 MVP로 먼저 배포하고 반납·재배정·이력·통계 기능을 실제 운영 요구에 맞춰 단계적으로 확장
  • 수정 요청마다 변경 전 데이터를 조회해 새 값과 필드 단위 diff를 계산하고 실제로 바뀐 항목만 전·후 값, 사용자, 시점과 함께 이력 테이블에 저장
  • 본 데이터 UPDATE와 Audit INSERT를 하나의 트랜잭션으로 처리해 데이터만 바뀌고 변경 이력이 누락되는 상태를 방지
  • 애플리케이션 레벨에서 로그인 사용자 정보를 이력과 연결해 운영자가 값뿐 아니라 누가·언제·어떤 필드를 변경했는지 역추적할 수 있도록 설계
결과 · 성과
  • 자산 약 9,200건의 등록·조회·반납·재배정·이력 관리를 단일 시스템으로 통합하고 전사 4개 본부 실사용 운영
  • 이력 기반으로 마지막 사용자와 변경 경로를 추적해 분실 처리 자산 약 1,000만 원 회수 및 기한 내 자산 신고 완료
  • 필드 단위 Audit Trail을 기반으로 감사 대응과 데이터 오류 원인 추적 체계 확보
데이터 이관 · 검증

기존 엑셀 데이터를 이관하는 과정에서 일부 관리 항목이 비어 있는 레코드를 확인했습니다.
임의 값으로 보정하면 이후 통계와 변경 이력의 신뢰도가 떨어진다고 판단해 ‘미입력’ 상태로 분리·가시화하고 후속 확인 대상으로 관리했습니다.
운영 데이터 전환 시에는 값을 채우는 것보다 원본의 불확실성을 보존하고 검증 가능한 상태로 남기는 것을 우선했습니다.

21개 서비스를 위한 Local LLM Gateway·MCP 업무 실행 플랫폼

기간 · 2026.05 ~ 진행 중 · 3인 협업 담당 범위 · LiteLLM–PostgreSQL 공통 호출·관측 구조, Local LLM 연동, 자산관리·AXis 및 팀원 담당 RAG API의 MCP Tool 연계 LiteLLM · OpenWebUI · PostgreSQL · MCP · Tool Calling · DGX Spark 기반 Local LLM(SKT A.X 4.0)
배경 · 문제

서비스마다 외부 LLM API를 직접 호출하면 인증·사용량·비용·오류 로그가 분산되고, 모델 변경 시 서비스별 수정 범위도 커집니다.
여러 서비스가 하나의 호출 계층을 공유하면서도 서비스별 사용량과 오류를 분리해 추적할 수 있는 공통 Gateway가 필요했습니다.

접근 · 의사결정
  • 서비스가 모델을 직접 호출하지 않고 LiteLLM Proxy를 거치도록 구성해 API Key 인증·호출 로그·토큰 집계를 한 지점에 일원화
  • OpenAI 호환 인터페이스를 유지해 모델 교체 시 개별 서비스 코드의 수정 범위를 줄이고, SpendLogs의 토큰·응답 시간·Key·팀 정보를 PostgreSQL에 저장
  • 처음부터 전사 적용하지 않고 챗봇 1개에서 호출 흐름을 검증한 뒤 21개 서비스로 단계 확산해 적용 범위를 넓힘
  • 서비스별 전용 연동 대신 MCP를 공통 Tool 어댑터 계층으로 두고 자산관리·AXis·RAG API의 요청·응답·오류 규격을 맞춰 여러 Client에서 재사용
정합성 · 관측성
  • Safe Write — SSO 권한 검증과 Prepare → Commit, operation_id·멱등성 키로 중복·오실행 방지
  • Audit & Observability — 사용자·도구·상태·오류·지연을 기록하고 모델 SpendLogs와 trace_id로 연결
  • Multi-client — 동일 MCP Server를 OpenWebUI와 AXis Assistant에 연결해 Tool 스키마와 권한 정책을 재사용
결과 · 성과
  • 21개 서비스 실트래픽 처리 — 주간 약 2.2만 건 / 약 3,800만 토큰, 운영 로그 기준 정상 완료율 99.97%
  • 서비스·Key·팀별 사용량과 모델 호출부터 Tool 실행까지 이어지는 운영 관측 경로 확보
  • 동일 사용량을 외부 LLM API로 처리하는 경우와 비교해 월 약 1,000만 원 비용 절감 및 내부 데이터의 외부 전송 범위 축소
로그 기반 트러블슈팅

MCP 연결 자체는 정상이었지만 유사 Tool 오선택과 필수 인자 누락으로 tools/call 검증이 실패했습니다.
모델 문제로 단정하지 않고 OpenWebUI와 MCP Server 로그를 trace_id 기준으로 대조해 겹치는 Tool 설명과 느슨한 inputSchema가 잘못된 Tool 선택과 인자 누락을 유발하는 원인임을 확인했습니다.
Tool 이름·사용 조건을 구체화하고 required·enum·additionalProperties: false를 적용했으며, 권한별로 필요한 Tool만 노출해 잘못된 호출과 불필요한 재시도를 줄였습니다.

개인 프로젝트

DBOps — DB 운영·장애 추적 개인 프로젝트 GitHub ↗

개인 프로젝트 · 설계·구현 전반 Java · Spring Boot · JPA · MySQL · Vue · Docker · Python · Go · SaltStack · Kubernetes
배경 · 문제

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

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

SaltStack 이미지 태그 중단으로 python:3.10-slim 기반 실행 환경을 구성했습니다.
docker logs에서 누락 의존성을 찾아 보완하고 Dockerfile에 명시해 재현 가능한 환경으로 전환했습니다.