f34f770375e978e6

김영민

6년 경력 백엔드 개발자

M.agomdole@gmail.comG.github.com/bearmettW.resume.metts.today/print-port

자기소개

Node.js·TypeScript 기반 6년 경력의 백엔드 개발자입니다. 교육 서비스·B2B 보안 솔루션·사내 운영 시스템을 거치며, 실무자가 겪는 불편에서 업무 흐름·데이터 구조·운영 제약을 분석해 제품과 자동화 도구를 만들어 운영 부담과 개발팀 의존을 줄여왔습니다.

  • CMS를 구축해 콘텐츠 등록을 1주일에서 당일로 단축하고, 개발팀 개입 없이 운영팀이 자체 운영하도록 전환
  • 취소·환불·구독을 결제·라이선스·구독 상태 모델 정합성 문제로 재정의해, 운영팀이 관리자 도구에서 직접 처리할 수 있도록 개발 (개발팀 수동 대응 제거)
  • 20년 레거시 PHP/SVN 15개 저장소를 단일 Git으로 통합하고 배포·DB를 자동화해 긴급 패치 대응 90% 단축
  • LLM이 생성한 수학 수식 깨짐을 노출 전 자동 보정하는 파서 개발 — 테스트 500건 정상 렌더링

저는 요청을 티켓으로만 보지 않고 실제 화면·데이터 흐름까지 확인해, 복잡한 요구사항을 운영팀이 직접 다룰 수 있게 바꿉니다. 나아가 반복되던 운영 대응을 시스템이 처리하도록 전환해, 사업·제품 변화에 유연하게 대응할 수 있는 소프트웨어를 만들어왔습니다.

기술 역량

Backend / API
Node.js, TypeScript, NestJS, Express, FastAPI, REST API
Database
PostgreSQL, MySQL, Redis, Elasticsearch, Prisma, TypeORM
Cloud / DevOps
AWS, GCP, Docker, Git, GitHub Actions, Bitbucket Pipelines, Jenkins
Frontend
Next.js, React, React Native
System / Native
Linux, C/C++, Lua

경력

(주)스마트러닝코리아팀장 / 개발기획본부

2025.03 ~ 2026.02

스마트러닝코리아는 학습자에게는 EBS 콘텐츠 기반 영어 학습 서비스를, 학원에는 비대면 결제, 운영 관리 ERP를 제공하는 교육 회사입니다. 저는 개발팀(3명) 팀장으로서 운영팀 요구 파악부터 DB 모델링, API, 관리자 화면, 운영 이관까지 단독 책임지고 CMS·구독/결제 관리·PHP/SVN 레거시 통합을 설계·개발했습니다.

  • 운영팀이 직접 등록하는 영어 교육 CMS 구축

    문제
    운영팀이 SFTP와 DB를 직접 다루며 콘텐츠 오류와 개발팀 등록 요청이 반복됨.
    해결
    운영팀에 익숙한 엑셀 업로드 방식은 유지하면서 입력 검증·권한·상태 관리를 더해, 거부감 없이 쓸 수 있는 CMS로 구축.
    성과
    콘텐츠 등록 1주일 -> 당일, 개발팀 개입 없이 자체 운영.

    Next.js · Prisma · PostgreSQL · TypeScript

  • 15개 SVN 저장소 통합과 수동 배포 자동화

    문제
    유료/테스트/무료 버전별 SFTP 파일 배포와 DB 마이그레이션을 수동 처리해, 배포에 하루가 걸리고 반영 누락이 반복됨.
    해결
    15개 SVN 저장소를 단일 Git 저장소로 통합하고, GitHub Actions로 파일 배포와 DB 마이그레이션을 하나의 파이프라인으로 자동화.
    성과
    수동 배포·DB 마이그레이션을 자동화해 신규 개발 66%, 긴급 패치 대응 시간 90% 단축.

    PHP 5.3/5.6 · SVN · Git · Docker · GitHub Actions · Nginx

(다음 장에 계속)

(주)스마트러닝코리아팀장 / 개발기획본부(이어서)

  • 반복 발생하던 취소·환불·구독 변경을 운영팀이 직접 처리하도록 전환

    문제
    취소·환불·라이선스 회수를 운영팀이 직접 처리할 수 없어, 건건이 개발팀 수작업에 의존.
    해결
    단순 취소 자동화가 아니라 결제·라이선스·구독 상태 모델 불일치로 재정의하고, 처리 흐름을 관리자 도구에 구현.
    성과
    취소/환불/구독 변경을 운영팀이 관리자 도구에서 직접 처리하도록 전환, 개발팀 수동 대응 제거.

    Next.js · Prisma · PostgreSQL · TypeScript

  • 출석 데이터 누적으로 생긴 쿼리 병목 개선

    문제
    출석 데이터가 누적돼 거대해진 테이블에서 단일 요청이 20N+1 규모의 쿼리와 슬로우 쿼리를 유발해, 응답이 2,000ms를 초과하고 장애로 이어짐.
    해결
    API 호출을 추적해 병목을 찾고, 인덱스 추가·조인 최적화·쿼리 분할 재조합으로 재구성하고, Spring Cache(Caffeine)로 읽기 캐시와 무효화를 설계.
    성과
    응답을 2,000ms 초과에서 200ms 미만으로 단축하고, 동일 원인의 장애 재발을 막음.

    Java · Spring · MySQL · Spring Cache(Caffeine)

주식회사비엔제트(BnZ)백엔드 개발자 / 개발팀

2024.03 ~ 2025.03

BnZ는 학원 교사와 학생을 대상으로 LLM 기반 수학 문제 풀이·오답 관리 서비스를 만드는 교육기술 스타트업입니다. 저는 백엔드 개발자로서 Express -> TypeScript 마이그레이션과 테스트 커버리지 0% -> 50% 개선을 주도했고, API·서버에 더해 수식 보정 파서·의미 기반 검색 등 핵심 기능 모듈을 단독으로 설계·구현했습니다.

  • LLM이 생성한 수학 수식이 깨지는 오류를 보정하는 파서 개발

    문제
    새 문제 유형마다 LaTeX 오류가 반복되고 정규식 추가가 다른 유형을 깨뜨림.
    해결
    유형별 변환 규칙을 분리한 모듈화 파서로 교체.
    성과
    테스트 케이스 500건 정상 렌더링, 서비스 노출 전 수식 오류를 규칙 단위로 보정 가능한 구조.

    TypeScript · LaTeX · Vitest

  • 숫자만 바뀐 유사 문제까지 구분하는 의미 기반 문제 검색

    문제
    유사 문제 찾기 요청이 키워드 일치만으로는 정확도를 확보하기 어려움.
    해결
    의미 검색 문제로 재정의하고 기존 Elasticsearch 위에 임베딩+키워드 검색 구성.
    성과
    숫자만 바뀐 문제와 단원이 다른 문제를 의미 기반으로 구분하는 검색 흐름 구현.

    TypeScript · Vector Search · Elasticsearch

  • 선생님이 한글(HWP)에서 수식을 직접 수정하도록 만든 LaTeX → hwpx 변환 엔진

    문제
    LaTeX로 렌더링한 수식이 이미지로만 삽입돼, 선생님이 한글(HWP)에서 수식을 직접 수정할 수 없었음.
    해결
    hwpx→LaTeX 오픈소스를 역으로 활용하는 방안을 검토했으나 유즈케이스 한계를 확인하고, Python/FastAPI 기반 LaTeX→hwpx 변환 엔진을 직접 설계.
    성과
    LaTeX 수식을 한글 수식 문법으로 변환해, 선생님이 한글(HWP)에서 직접 편집할 수 있게 함.

    Python · FastAPI · pytest

비트맥스 주식회사웹서버 파트장 / 틀로나 개발팀

2023.04 ~ 2024.03

비트맥스(맥스트)는 현실 세계를 기반으로 사용자가 가상 토지를 소유하는 메타버스 '틀로나'를 개발하던 회사입니다. 저는 웹서버 파트장으로서 잦은 기획 변경마다 강결합된 도메인이 광범위하게 영향받던 구조를 회원·아이템·토지 소유권 단위로 분리하고 팀 간 변경 맥락을 정리해 병합 주기 7일 -> 1~2일, CBT 버그 0건을 달성했습니다.

  • 강결합 도메인 분리로 병합 주기 7일 -> 1~2일 단축

    문제
    기능 간 강결합과 변경 영향 범위가 불명확해, 작은 수정에도 병합까지 7일이 걸림.
    해결
    DDD로 강결합된 회원·아이템·토지 소유권 도메인의 의존을 분리하고, 도메인 행위 중심 API로 재설계.
    성과
    병합 주기 7일 -> 1~2일, 병목 파트 해소, CBT 버그 0건.

    NestJS · DDD · TypeORM · ArgoCD