이력서 PDF 받기포트폴리오 보기

허정석

Backend Developer · 3년 7개월 경력

e-mail[email protected]Blogvelog.io/@jungseokheoGitHubgithub.com/heojungseok

소개

맥락을 먼저 파악하는 백엔드 개발자, 허정석입니다.

저는 사람들의 의견을 최대한 많이 듣고, 상대가 무엇을 필요로 하는지 빠르게 알아채려고 합니다. 그렇게 모은 의견과 근거를 정리해 방향을 설명하고, 서로 생각이 다른 부분을 조율하는 방식을 좋아합니다. 조율한 결론은 근거와 함께 기록해 둡니다.

좋은 개발은 운영과 유지보수 부담이 적은 개발이라고 생각합니다. 절약한 리소스는 비즈니스 성장과 확장에 다시 투자할 수 있습니다. 그래서 새 기술을 도입하기 전에 지금 구조로 풀 수 있는지부터 확인하고, 부족할 때 다른 기술을 검토합니다.

구현은 규칙 문서로 기준을 정해 에이전트에 맡기더라도, 프로덕트에 무엇이 맞는지 판단하고 검증하는 일은 직접 합니다. 이 판단에 가장 중요한 것이 맥락 파악이고, 저는 그 맥락을 함께 일하는 동료들과 이야기하며 맞춰 갑니다. 동료들에게 필요한 개발자가 되기 위해 노력하고 있습니다.

경력

주식회사 퍼닌 (Funin Co., Ltd.)2022.04 ~ 2025.10 (3년 7개월)
Backend Developer | AI Biz 본부 선임 | 정규직

'하이러닝'은 경기도교육청 AI 기반 LMS로, 2025년 4월 기준 2,640개 학교와 교사⁠·학생 약 94만 명이 사용합니다. SI 업체 소속 개발자로 이 프로젝트에 참여해 백엔드 성능 개선, 외부 콘텐츠 연동, 학습 기능 개발과 프론트엔드 전환을 맡았습니다.

JavaSpringSpring BootMyBatisPostgreSQL
하이러닝 성능 최적화 및 운영 안정화2024.01 ~ 2025.10
성능⁠·운영 개선 담당, 후반부 팀 리드 겸임
배경

2023년 9월 시범 운영 이후 1년 만에 사용 학교가 162개교에서 2,470개교로 늘면서, 오전 수업 시작 시간대(서비스 피크 TPS 3,000+) ‘나의 수업 목록’ 조회 지연과 Primary DB 과부하로 피크 시간 안정성 확보 필요.

피크 시간대 지연 API를 측정으로 골라 응답 시간 단축
  • 수업 목록 쿼리 실행 시간 5초 → 팀 기준 1.3초 이내(74% 이상 단축). 복합 인덱스 선행 컬럼과 조회 조건의 불일치를 EXPLAIN ANALYZE로 확인해 인덱스를 재설계하고, 불필요한 조인과 컬럼 형변환을 제거
  • 교사용 설문 상세 API 응답 시간 4초 이상 → 1초대. APM 호출과 VoC로 찾은 문항⁠·보기별 반복 조회를 일괄 조회로 전환
DB 연결과 보안 취약점을 정비하고 팀을 이끌며 운영 위험 축소
  • 데이터 변경이 섞인 트랜잭션이 Replica로 라우팅되지 않게 readOnly 적용 단위를 메서드가 아닌 API 호출 경로 전체로 정하고, 조회 전용 API에만 적용하는 기준 수립
  • 선언적 트랜잭션(AOP) 대상에서 빠진 수동 트랜잭션의 모든 종료 경로에 commit⁠·rollback을 명시해, DB 커넥션이 반납되지 않는 커넥션 풀 고갈 위험 차단
  • CSAP 정기 점검에서 검출된 학생 정보 평문 노출과 파라미터 위변조 취약점을 조치하고, 오탐과 서비스 책임 범위 밖 항목은 소명
  • 결원이 생겨도 업무가 이어지도록 개발과 팀 리드를 겸임하며 주 3회 스크럼과 업무 문서화⁠·공유 규칙 운영
비즈니스 임팩트

지연 API 5개 이상 개선과 조회 API 28개의 Replica 분산으로 피크 시간대에도 정상적인 수업 진입이 가능하도록 서비스 안정성 강화.

CSAP 정기 점검에서는 크리티컬⁠·최우선 순위 항목을 중심으로 검출 항목의 95% 이상을 조치하거나 소명.

EBS 외부 API 연동 및 대용량 데이터 동기화 시스템 구축2023.10 ~ 2023.12
설계⁠·구현 단독 담당
배경

교육과정 변경 시 사용자가 이전 커리큘럼 기반 콘텐츠를 보게 되는 문제.

배치 전용 실행 환경⁠·메시지 브로커 없이 외부 콘텐츠 10만+ 건을 재처리 가능하게 반영할 파이프라인 필요.

단계를 나누고 원본을 보존해 외부 장애에도 재처리 가능한 동기화 구조 설계
  • 외부 장애가 번지지 않고 실패한 단계만 다시 돌리도록 [1단계] 원천 적재 → [2단계] 검증 → [3단계] 내부 반영을 실행 API별 트랜잭션으로 분리
  • 2~3단계가 실패해도 외부 재호출 없이 재처리할 수 있게 EBS API 응답 원본을 호출 기록과 연결해 보존하고, 외부 작업 지시를 내부 콘텐츠 상태와 대조해 실제 반영할 대상만 선별
대용량 반영 중 메모리 부족을 청크 처리로 해소하고 판별 쿼리로 불일치 원인 구분
  • 초당 2,000건 이상 처리 확인. 10만+ 건 반영 중 발생한 Heap OOM을 1만 건 단위 Chunk Processing과 선택적 AOP 로깅으로 해소
  • 교육과정별 문항⁠·단원 건수를 대조하는 판별 쿼리로 연동 결과의 불일치 원인을 구분해, 원본 데이터 문제는 EBS 보정 요청으로, 내부 문제는 내부 수정으로 연결
비즈니스 임팩트

교육과정 개편 2회와 EBS API 버전 변경 1회에도 같은 동기화 구조로 외부 콘텐츠 10만+ 건을 반영해 현행 콘텐츠를 제공하고 이전 커리큘럼 노출 위험 완화.

정합성 검증으로 원천 데이터 오류를 검출해 EBS 측 원본 보정 3~4회로 연결.

LMS 플랫폼 고도화(하이러닝⁠·뉴쎔)2022.07 ~ 2024.07
담당 기능 개발, 프론트엔드 전환 리드
Vue.jsJSPjQuery
배경

뉴쎔 LMS를 바탕으로 하이러닝을 구축하며 뉴쎔에 없던 콘텐츠 기능을 외부 AI 업체⁠·EBS와 연계해 새로 구성해야 했고, jQuery 레거시 화면을 구버전 병행 없이 전면 리뉴얼해 2023년 9월 신규 오픈해야 하는 상황.

평가 기능을 공통 스키마로 통합하고 AI 추천 출제 흐름을 연결해 문제집 학습 기능 구축
  • 뉴쎔의 과제, 퀴즈, 설문을 유형 코드로 구분하는 공통 스키마와 API로 통합하고, 문제집 수만, 문항 수십만 규모의 정답률⁠·완료 집계 API 구현
  • 외부 AI 추천 결과를 내부 문항 정보와 결합해, 교사의 문제집 생성부터 학생의 응시⁠·결과 확인까지 한 흐름으로 연결. 직접, 선택, 랜덤, AI 추천 출제의 단계별 상태 관리
  • 외부 AI가 준 랜덤 문항이 다른 학생에게 이미 배정된 문항이면 저장이 실패해 응시 화면이 멈추던 문제의 재현 경로 특정. 유니크 제약 범위에 학생 식별자를 포함하도록 변경 설계
응답 규격과 화면 컴포넌트를 공통화해 전면 재작성 없이 프론트엔드 전환
  • 화면마다 다르던 학습 행동 로그를 xAPI 빌더와 연계해 표준화하고 Response Wrapper로 응답 규격 통일
  • SPA 전면 재작성 대신 JSP 화면에 Vue 컴포넌트를 마운트하는 방식으로 jQuery 화면의 Vue.js 전환을 주도하고, 팝업, 모달, 폼 컴포넌트 공통화
비즈니스 임팩트

162개교 시범 운영으로 시작해 2,640개교로 확대된 서비스에서, 문제집→단원→문항 3계층으로 구현한 문제집이 누적 약 189만 건 사용돼 전체 콘텐츠 사용(클릭 이력 기준 약 219만 건)의 86%를 차지.

사이드 프로젝트

Kidly2026.09 ~ 진행 중

프로그래머스 데브코스 5인 팀 프로젝트로, 아동복 커머스 서비스에서 상품, 재고, 추천 도메인을 맡은 프로젝트

JavaSpring BootPostgreSQLKafkaDocker
  • 재고 차감 방식(잠금 없음, 행 잠금, 조건부 UPDATE)을 비교 측정해 조건부 UPDATE로 정하고, 동시 주문 2건에 멈추던 DB 연결 풀 고갈의 원인을 이벤트 리스너의 연결 반납 시점에서 찾아 수정
  • 상품 이벤트의 Transactional Outbox 릴레이와 Kafka 수신을 구현하고 추천 도메인을 별도 서비스로 분리. AI 추천은 시간 초과와 호출 상한 때 규칙 기반 결과로 대체하도록 설계
TaskFlow2026.01 ~ 진행 중

실무에서 다루지 못한 도메인 중심 설계와 외부 연동 분리 구조를 직접 구현하고 공개 서비스로 배포⁠·운영하는 프로젝트

JavaSpring BootJPAPostgreSQLReactTypeScriptDocker
  • Transactional Outbox와 Polling Worker로 할 일 저장과 Google Calendar 호출을 분리해 외부 장애가 저장에 영향을 주지 않도록 차단. 정적 Coalescing으로 연속 변경을 하나로 합치고 중단된 작업 재처리
  • Gemini 기반 요약, 추천, 자연어 검색에 오류와 쿼터 초과 대응을 적용하고 요약⁠·추천 결과는 캐시. 자연어 검색은 LLM의 질의 해석과 서버의 조회⁠·정렬 책임을 분리

교육 및 활동

프로그래머스 데브코스 심화 백엔드 심화 8기 | (주)그렙2026.09 ~ 2026.11(예정)
항해플러스 프론트엔드 6기 | 팀스파르타(주)2025.07 ~ 2025.09
인하공업전문대학 | 조선해양학과2012.03 ~ 2016.02