임준열

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

Introduce

SK텔레콤 고객센터 운영사인 서비스에이스 AI 전략팀에서 Java·Spring Boot 기반 사내 업무 시스템과 AI 공통 플랫폼을 개발·운영하고 있습니다. 요구사항 정리부터 데이터·API 설계, TypeScript 화면 개발, 배포·운영까지 담당하는 백엔드 엔지니어입니다.

사내 AX 활용 과제의 접수·진행 상황을 관리하는 플랫폼과 전사 IT 자산관리 시스템을 단독으로 구축했습니다. 부서별로 관리하던 약 9,200건의 자산을 하나의 시스템으로 통합하고, 자산의 사용자와 변경 이력을 추적해 분실 처리된 약 1,000만 원 상당의 자산을 회수했습니다.

또한 3인 협업으로 21개 사내 서비스가 이용하는 AI 공통 플랫폼을 구축·운영했습니다. 서비스별 인증·사용량·오류 기록을 한곳에서 관리하고, 요청 처리 과정을 로그로 연결해 오류가 발생한 지점을 추적할 수 있도록 구성했습니다.

Skills

Backend
Java Spring Boot JPA REST API
Frontend
TypeScript Vue Chart.js
Database
MySQL PostgreSQL
Infra / Ops
Linux Docker Kubernetes SaltStack Git
AI Platform
LiteLLM MCP OpenWebUI Tool Calling
Additional
Python Go

Career

정규직 · 2024.07 ~ 재직 중
SKT 고객센터 운영 계열사 · AI 전략팀 매니저 — Java·Spring Boot 기반 전사 업무 시스템 및 AI 공통 플랫폼 구축·운영
  • 업무 시스템 단독 개발 — AXis·통합 자산관리의 요구사항 정리, 데이터·API 설계, 백엔드·화면 개발, 배포·운영 담당
  • 운영 데이터 정합성 — 자산의 현재 상태와 변경 이력을 함께 반영하고, 사용자·시점·변경 내용을 역추적할 수 있는 구조 구현
  • AI 공통 플랫폼 협업 — 3인 협업으로 Gateway·MCP 연동 규격을 맞추고, 여러 서비스의 인증·호출·오류 기록을 공통화

Projects

AXis — 전사 AX 과제 운영 플랫폼상세 ↗

단독 개발 · 2026.01 ~ 운영 중
과제 접수·조회·상태 변경을 하나의 업무 흐름으로 구현하고 SSO·LLM 입력 지원·사내 AI 서비스 연동으로 확장
Java · Spring Boot · MySQL · TypeScript · Docker · Linux · SSO
  • 담당 — 데이터·REST API 설계, Java 업무 로직, TypeScript 화면 연동, 배포·운영 전반
  • 성과 — 월평균 약 50건 접수 · 본부 설명회 4회 · 분기 우수 사원 수상

통합 자산관리 — 자산 상태와 변경 이력 관리상세 ↗

단독 개발 · 운영 중
자산 CRUD부터 필드 단위 변경 비교, 트랜잭션, 조회 인덱스, 데이터 이관까지 구현
Java · Spring Boot · JPA · MySQL · TypeScript · Chart.js
  • 핵심 구현 — 자산 정보 변경과 Audit Trail 저장을 동일 트랜잭션으로 묶고 예외 시 전체 롤백
  • 성과 — 전사 4개 본부 · 자산 약 9,200건 운영 · 분실 처리 자산 약 1,000만 원 회수

Local LLM Gateway·MCP — 21개 서비스 공통 플랫폼상세 ↗

3인 협업 · 2026.05 ~ 진행 중
공통 호출·요청 대기열·업무 Tool 연동을 구성하고 PostgreSQL 로그와 Trace로 운영 상태를 추적
LiteLLM · PostgreSQL · MCP · OpenWebUI · Local LLM
  • 담당 — 공통 호출·관측 구조, MCP 인터페이스 연계, 권한·멱등성·실행 이력 관리
  • 성과 — 주간 약 2.2만 건·약 3,800만 토큰 · 정상 완료율 99.97% · 월 약 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와 데이터 처리, 트랜잭션, 화면 연동, 운영 개선을 실제 구현 과정에 따라 정리했습니다.

서비스에이스

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

AXis — 전사 AX 과제 운영 플랫폼

기간 · 2026.01 ~ 2026.05 구축 · 이후 운영·고도화 지속 담당 · 요구사항 정리, 데이터·API 설계, 백엔드·화면 개발, 배포·운영·사용자 확산 전반(단독) Java · Spring Boot · MySQL · TypeScript · Docker · Linux · SSO · Local LLM
해결한 문제

메일·구두로 들어오는 AX 과제의 접수 항목과 처리 기준이 담당자마다 달라 진행 상황을 추적하기 어려웠습니다. 과제 정보와 처리 상태를 공통 데이터로 관리하고, 운영 중 확인한 요구를 단계적으로 반영할 수 있는 시스템을 구축했습니다.

구현 과정
  1. 데이터 구조와 업무 상태 정의

    과제 정보, 사용자·관리자 권한, 처리 상태를 먼저 정리했습니다. 접수·조회·상태 변경에 필요한 데이터와 API를 정의하고, 처리 상태를 기준으로 진행 상황을 확인할 수 있게 설계했습니다.

  2. Spring Boot REST API와 Java 업무 로직 구현

    과제 접수·조회·상태 변경 기능을 REST API로 구현했습니다. 화면에서 받은 과제 정보를 MySQL에 저장·조회하고, 처리 상태를 갱신하는 업무 로직을 Java·Spring Boot 백엔드에서 처리했습니다.

  3. TypeScript 화면과 API 연결

    과제 작성·목록 조회·진행 상태 확인 화면을 개발하고 백엔드 API와 연결했습니다. 사용자와 관리자가 동일한 과제 데이터를 기준으로 접수와 후속 처리를 진행하도록 구성했습니다.

  4. SSO 사용자 정보와 접근권한 적용

    기존 SSO 사용자 정보를 재사용하고 로그인 사용자의 권한 범위에서 기능을 제공했습니다. AI 사례 게시판에서는 사내 AI 서비스를 iframe으로 실행하되 접근 가능한 서비스만 노출했습니다.

  5. LLM 입력 보조와 사용자 검토 흐름 구현

    사용자가 1~2줄을 입력하면 Local LLM이 항목별 초안을 생성하도록 연동했습니다. 생성 결과는 사용자가 검토·수정한 뒤 확정하도록 구성했습니다.

  6. 기본 기능 출시 후 피드백 반영

    접수·조회·상태 관리 기능을 먼저 배포하고, 본부별 설명회 4회에서 수집한 불편 사항을 후속 배포에 반영했습니다. SSO·LLM 입력 지원·권한 기반 AI 서비스 연동을 순차적으로 확장했습니다.

운영 결과
  • 월평균 약 50건이 접수되는 전사 AX 과제 창구로 정착
  • 설계부터 개발·배포·사용자 확산까지 수행한 성과로 분기 우수 사원 수상

통합 자산관리 — 자산 상태와 변경 이력 관리

담당 · 요구사항 정리, 데이터·API 설계, 백엔드·화면 개발, 기존 데이터 이관, 배포·운영 전반(단독) 운영 규모 · 전사 4개 본부 · 자산 약 9,200건 Java · Spring Boot · JPA · MySQL · TypeScript · Chart.js
해결한 문제

부서별 엑셀에서 자산을 관리해 반납·재배정 때 이전 값이 덮어써졌고, 마지막 사용자와 이동 경로를 확인하기 어려웠습니다. 자산의 현재 상태와 변경 이력이 함께 남도록 등록·조회·반납·재배정 업무를 통합했습니다.

구현 과정
  1. Spring API와 JPA·MySQL 기반 자산 데이터 처리

    자산 등록·조회·반납·재배정 기능을 REST API로 구현했습니다. JPA·MySQL 기반으로 자산 정보를 조회·저장하고, 현재 상태와 변경 이력을 구분해 관리할 수 있도록 데이터 구조를 설계했습니다.

  2. Java에서 변경 필드 비교와 Audit Trail 생성

    수정 요청을 받으면 기존 데이터를 조회해 새 값과 필드별로 비교했습니다. 실제 변경된 항목만 전·후 값, 로그인 사용자, 변경 시점과 함께 이력으로 만들어 누가 어떤 값을 바꿨는지 추적할 수 있게 했습니다.

  3. Spring 트랜잭션 경계와 예외 시 롤백

    자산 정보 UPDATE와 Audit Trail INSERT를 하나의 업무 단위 트랜잭션으로 묶었습니다. 처리 중 예외가 발생하면 전체를 롤백해 자산 값만 변경되거나 이력만 남는 부분 반영을 방지했습니다.

  4. MySQL 조회 조건에 맞춘 인덱스 구성

    자산번호·사용자·상태·변경 시점 등 화면에서 반복되는 조회 조건과 정렬 기준을 중심으로 인덱스를 구성했습니다. 조회 빈도와 등록·수정 시 인덱스 유지 비용을 함께 고려해 적용 범위를 정했습니다.

  5. TypeScript 운영 화면과 통계 구현

    등록·조회·반납·재배정 화면을 백엔드 API와 연결하고, 자산 정보와 변경 이력을 확인할 수 있게 구성했습니다. 자산 현황 통계는 Chart.js로 시각화했습니다.

  6. 기존 엑셀 데이터 이관과 누락 값 검증

    누락된 관리 항목을 ‘미입력’ 상태로 구분해 가시화하고 후속 확인 대상으로 관리했습니다. 원본 데이터의 불확실성을 보존해 이후 통계와 변경 이력을 검증할 수 있도록 했습니다.

운영 결과
  • 전사 4개 본부에서 자산 약 9,200건의 등록·조회·반납·재배정·이력 관리
  • 마지막 사용자와 변경 경로를 추적해 분실 처리 자산 약 1,000만 원 회수 및 기한 내 자산 신고 완료
  • 사용자·시점·변경 필드를 기준으로 감사 대응과 데이터 오류 원인 추적 체계 확보

Local LLM Gateway·MCP — 21개 서비스 공통 플랫폼

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

서비스마다 LLM을 직접 호출하면서 인증·사용량·오류 로그가 분산됐고, 요청이 몰리면 제한된 추론 자원의 처리량을 초과했습니다. 공통 호출 계층을 두고 요청량을 제어하며, 모델 요청과 업무 실행을 하나의 경로로 추적하도록 구성했습니다.

구현 과정
  1. LiteLLM Proxy로 공통 호출 계층 구성

    모델 요청이 공통 Gateway를 거치도록 구성해 API Key 인증·호출 로그·토큰 집계를 일원화했습니다. OpenAI 호환 인터페이스를 유지하고 챗봇 1개에서 검증한 뒤 21개 서비스로 적용 범위를 넓혔습니다.

  2. 요청 대기열과 동시 실행량 제어

    추론 서버의 처리 가능량을 초과하는 요청은 대기열에 보관하고 처리 가능한 범위만 전달했습니다. PostgreSQL 로그의 요청량과 지연을 대조해 요청 대기와 모델 추론의 병목을 구분했습니다.

  3. 업무 REST API를 MCP Tool로 연결

    자산관리·AXis·RAG 연동에 필요한 요청·응답·인증·오류 규격을 3인이 합의했습니다. MCP를 공통 Tool 어댑터로 두고 OpenWebUI와 AXis Assistant에서 동일한 Tool 계약과 권한 정책을 재사용했습니다.

  4. 쓰기 작업의 권한 확인과 중복 실행 방지

    SSO 권한 검증 후 Prepare → Commit 순서로 작업하도록 구성했습니다. operation_id와 멱등성 키를 적용하고 사용자·도구·처리 상태를 Audit Trail에 남겨 중복·오실행을 방지했습니다.

  5. PostgreSQL 로그와 trace_id로 호출 경로 추적

    토큰·응답 시간·Key·팀 정보를 PostgreSQL에 저장하고, 모델 호출과 MCP Tool 실행을 동일한 trace_id로 연결했습니다. 서비스·Key·Tool별 호출량·지연·오류를 조회해 실패 구간을 추적했습니다.

  6. Tool 호출 실패를 로그로 분석하고 스키마 개선

    유사 Tool 오선택과 필수 인자 누락이 발생했을 때 Client·MCP Server 로그를 같은 Trace로 대조했습니다. Tool 이름·사용 조건을 명확히 하고 required·enum·additionalProperties: false를 적용해 호출 검증을 강화했습니다.

운영 결과
  • 21개 서비스의 실트래픽 처리 — 주간 약 2.2만 건·3,800만 토큰, 운영 로그 기준 정상 완료율 99.97%
  • 동일 사용량을 외부 LLM API로 처리하는 경우와 비교해 월 약 1,000만 원 비용 절감
  • 서비스별 사용량 집계와 모델 호출부터 업무 Tool 실행까지 이어지는 오류 추적 경로 확보

개인 프로젝트

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

담당 · 개인 프로젝트 · 설계·구현 전반 Java · Spring Boot · JPA · MySQL · Vue · Docker · Python · Go · SaltStack · Kubernetes
해결한 문제

여러 MySQL 인스턴스의 상태 확인과 계정·권한 작업을 개별 CLI로 수행하면 결과가 흩어지고 실패한 요청을 추적하기 어려웠습니다. 인스턴스 등록부터 작업 실행·상태 점검·이력 조회까지 관리하고, 작업 실패 후에도 요청 기록이 남는 구조를 구현했습니다.

구현 과정
  1. Spring Boot 기반 운영 API와 관리 데이터 구성

    인스턴스 등록·상태 점검·계정 및 권한 작업·실행 이력 조회 기능을 구현했습니다. JPA·MySQL 기반 관리 데이터와 실제 작업 대상 DB를 분리하고, 실행 중 등록한 인스턴스에도 연결할 수 있도록 구성했습니다.

  2. 요청 기록과 작업 실행의 트랜잭션 분리

    요청을 먼저 PENDING으로 기록한 뒤 대상 DB 작업을 실행했습니다. 실행 트랜잭션과 이력 저장 경계를 분리해 작업이 실패해도 요청 정보와 실패 원인을 확인할 수 있게 했습니다.

  3. Java 입력 검증과 인스턴스별 예외 처리

    정규식과 권한 enum 화이트리스트로 허용된 작업만 실행하도록 제한했습니다. 인스턴스마다 예외를 처리하고 성공·실패 상태를 별도로 기록해 한 DB의 접속 실패가 전체 점검을 중단하지 않도록 했습니다.

  4. 주기적 상태 점검과 이력 조회

    30초 주기 Health Check 결과를 상태 이력으로 남겨 장애·복구 시점을 확인했습니다. 인스턴스·상태·실행 시점을 기준으로 이력을 조회하도록 구성하고, Go CLI에서는 goroutine으로 여러 인스턴스를 병렬 점검했습니다.

  5. Docker 실행 환경과 복구·배포 흐름 검증

    SaltStack 이미지 태그 중단 시 python:3.10-slim 기반 실행 환경을 구성했습니다. docker logs로 누락 의존성을 찾아 Dockerfile에 반영하고, SaltStack 멱등 배포와 Kubernetes Pod 재기동 흐름을 검증했습니다.

검증 결과
  • 인스턴스 등록 → 상태 점검 → 계정·권한 작업 → 실행 이력 조회의 운영 흐름 구현
  • MySQL 3개 인스턴스를 대상으로 장애·복구 감지와 지표 수집 흐름 검증
  • 작업 실패 후에도 요청 기록·실패 상태를 확인할 수 있는 이력 보존 구조 구현