이현태 프로필 사진

이현태백엔드 개발자

커머스와 구독 서비스의 백엔드를 개발합니다. 경력 2년 9개월

로그가 성공이라고 해도 데이터로 다시 확인합니다

  • 커머스와 구독 서비스의 백엔드를 TypeScript와 Node.js로 개발했습니다.
  • 거래소 미거래 상품 회수 배치를 배포하기 전에 두 테이블을 대조하는 검증 쿼리를 준비했습니다. 첫 운영 실행 뒤 이 쿼리로 로그에는 성공으로 남은 복원 누락 4건이 드러났고, 두 쓰기를 한 트랜잭션으로 묶도록 고쳤습니다.
  • 예약 지급에서 포인트만 지급되고 쿠폰이 빠지는 문제는 흩어진 DB 연결을 한 커밋 단위로 묶어 고쳤습니다. 스케줄러가 멈춘 원인은 node-schedule 내부까지 추적해 회귀 테스트와 함께 수정 PR을 보냈습니다.

Blog: node-schedule이 멈춘 이유를 라이브러리 내부까지 따라간 기록

2025.12 ~ 2026.04
5개월

에이치투비즈

백엔드 개발자 / 계약직 / FE 1명, BE 1명

랜덤 상품 상자 서비스 보물선의 백엔드 단독 개발과 운영

Express, MyBatis, MariaDB, node-schedule, AWS

예약 지급에서 쿠폰만 누락되는 문제 수정

  • 포인트만 지급되고 쿠폰이 누락되는 장애를 추적해, 스케줄러와 지급 함수의 DB 연결이 분리된 지점 확인
  • 호출자의 연결을 지급 함수에 전달해 포인트와 쿠폰을 함께 커밋하거나 롤백하도록 수정. 기존 호출부는 수정 없이 동작
  • 조치 후 부분 지급이 다시 발견된 기록 없음

지급 배치의 DB 연결 대기 조정

  • 대량 지급 중 일반 요청까지 DB 연결을 기다리는 문제에서, 두 종류의 커넥션 풀이 함께 사용되고 대기 제한이 없던 것을 확인
  • 지급을 병렬에서 순차 처리로 전환하고 연결 대기를 30초로 제한. 조치 후 연결 획득 시간 초과 오류가 다시 기록되지 않음

미거래 상품 회수와 운영팀 배포 검증

  • 장기 방치 상품 관련 CS를 계기로 조사. 판매중 4,070건 중 77%가 3개월 이상 미거래임을 확인해 보관함 회수 배치 개발
  • 서버 3개의 조회 영향을 점검하고 대조 쿼리 5종 준비. 운영팀 검증에서 로그에는 성공으로 남은 복원 누락 4건을 찾아 보정하고, 회수와 복원을 한 트랜잭션으로 수정

예약 스케줄러 무응답 원인 추적

  • 숫자 문자열 연도 입력에서 node-schedule의 종료 조건이 동작하지 않는 원인을 추적하고, 호출부 입력 정규화로 우회
2025.04 ~ 2025.11
8개월

인휴먼즈

소프트웨어 엔지니어

B2B 구독 서비스, 얼굴 변환 기술 검증, 사내 부하 테스트 플랫폼 개발 (구독과 얼굴 변환은 출시 전 종료)

NestJS, Express, FastAPI, TypeORM, MySQL, PostgreSQL, InfluxDB, PortOne, WebRTC, ZeroMQ, k6, Docker, Helm, ArgoCD, AWS ECS

B2B 구독의 결제와 해지 흐름 설계

NestJS, TypeORM, MySQL, PortOne

  • 해지 신청과 이용 종료 시점이 다른 구독을 6개 상태와 결제 주기별 이력으로 관리
  • PG 예약은 갱신 실행, 웹훅은 결과 반영, 배치는 해지와 연체 종료를 담당. 다음 예약 실패 시 첫 결제 취소 요청 구현
  • 개발용 AWS ECS 배포 경로 구축

WebRTC 기반 얼굴 변환 영상 전송

FastAPI, aiortc, WebRTC, ZeroMQ, msgpack, Docker

  • 사용자 PC의 영상 처리를 서버로 옮기는 기술 검증에서 브라우저 → 서버 워커 → 브라우저 왕복 경로 설계와 개발
  • 영상은 Media Track, 설정은 DataChannel로 전달. 시그널링, MQ, 워커를 ZeroMQ로 연결하고 msgpack 메시지 전송과 컨테이너 구성
  • 흑백 변환으로 전송 경로 확인. AI 모델은 동료 담당이며 모델 연동 동작까지 확인

k6 부하 테스트 플랫폼 구축

Next.js, Express, NestJS, k6, PostgreSQL, InfluxDB, Helm, ArgoCD

  • 문서로 비교하던 테스트 조건과 결과를 웹에서 다루도록 시나리오 작성부터 실행과 결과 조회까지 연결. 3인 팀에서 백엔드와 인프라 담당
  • 부하 생성 자원을 화면 및 측정 대상과 분리하기 위해 제어 화면, 실행기, 부하 대상 서버로 구성
  • 실행 이력은 PostgreSQL, 측정값은 k6에서 InfluxDB로 직접 저장
  • Helm과 ArgoCD로 배포를 구성하고 CI에서 이미지 태그 갱신. 부하 대상 서버를 별도 노드에 배치하도록 설정
2023.03 ~ 2024.10
1년 8개월

21세기전파상

백엔드 개발자

중고 전자기기 커머스의 사용자 API, 운영 백엔드, 배치 등 4개 서버 개발과 유지보수

Express, NestJS, Sequelize, TypeORM, MySQL, Redis, AWS, Toss Payments

상품 목록의 반복 주문 집계 변경

  • 추천순 조회의 실행 계획에서 후보 상품마다 최근 3개월 주문 집계가 반복되는 구조 확인
  • 집계를 CTE로 분리하고 LEFT JOIN으로 참조하도록 쿼리 변경. 퇴사 후 재현 환경의 실행 계획에서 반복 집계가 한 번의 사전 집계로 바뀐 것을 확인

장바구니와 결제 시점의 재고와 가격 재검증

  • 재고가 한 개인 중고 상품의 상태가 바뀌는 상황에 대응해, 장바구니 조회와 결제 승인 직전에 가격과 재고 재확인
  • 구매 시 재고 차감, 취소 시 복원 연결. 같은 결제 결과가 주문에 두 번 반영되지 않도록 저장된 결제 이력을 조회해 차단

중고 기기의 매입 접수부터 정산까지 상태 관리

  • 여러 서버에서 수일간 처리하는 매입을 운영 백엔드의 16개 상태로 정의
  • 상태 변경 함수에서 단계별 필수 입력을 검사하고 변경 주체와 사유 기록. 시간 경과 배치와 배송 웹훅을 상태 변경에 연결
  • 기존 Redis Pub/Sub 경로에 매입과 주문 이벤트를 연결해 알림 발송을 배치 서버에서 처리

외부 서비스 연동과 협업

  • 토스페이먼츠 전환 시 기존 결제의 취소와 환불 경로 연동. 배송완료 8일 후 자동 구매확정 배치를 동료와 함께 개발
  • NestJS TypeORM CommonJS에서 패키지를 불러오지 못하는 exports 조건을 수정하고 CJS와 ESM 로딩 검증. PR 병합. PR / 글
  • node-schedule 숫자 문자열 연도 입력의 무한 루프를 수정하고 회귀 테스트 2개를 포함한 PR 제출. PR / 글
  • Trail of Bits Skills 잘못된 UTF-8 캐시로 반복 실패하는 결함을 재현하고 캐시 복구 처리와 회귀 테스트 추가. PR 병합. PR / 글
  • Archify 다이어그램 비교 시 달러 기호가 변형되는 문자열 치환 오류 수정. 회귀 테스트 6개 추가, dev 브랜치 병합. PR / 글
언어와 런타임
  • TypeScript
  • JavaScript
  • Node.js
  • Python
백엔드
  • NestJS
  • Express.js
  • FastAPI
ORM
  • Prisma
  • TypeORM
  • Sequelize
  • MyBatis
데이터베이스
  • PostgreSQL
  • Redis
  • MariaDB
  • MySQL
  • InfluxDB
인프라
  • AWS (EC2, ECS, RDS, S3, SES, CloudFront)
  • Docker
  • GitHub Actions
  • AWS CodeBuild / CodeDeploy
영상과 메시징
  • WebRTC (aiortc)
  • ZeroMQ
  • msgpack
테스트
  • Jest
  • SuperTest
  • k6
2022.09 ~ 2023.02
메가존 아이티 평생교육원
컴퓨터 공학 학사
2014.03 ~ 2020.02
인덕대학교
소프트웨어학과 전문학사