포트폴리오

주식회사 퍼닌에서 경기도교육청 AI 기반 LMS '하이러닝' 프로젝트에 참여하며 한 일입니다. 사례를 누르면 상세 페이지로 이동합니다. 설계 사례는 문제와 배경, 결과, 설계와 구현으로, 트러블슈팅은 이슈 상황, 원인 분석, 개선, 결과로 정리했습니다.

포트폴리오 PDF 받기

교사와 학생은 포털 서버를 쓰고, 포털 서버는 콘텐츠 서버를 호출합니다. 포털 서버는 포털 DB의 Primary와 Replica를 쓰고 하이러닝 경계 밖의 AI 업체와 연동하며, 콘텐츠 서버는 콘텐츠 DB를 쓰고 경계 밖의 EBS API와 연동합니다. 하이러닝 성능·운영 사례는 포털 서버, EBS 동기화 사례는 콘텐츠 서버, 문제집 출제 사례는 두 서버에 걸쳐 있습니다

하이러닝 성능 최적화 및 운영 안정화

2024.01 ~ 2025.10, 성능·운영 개선 담당, 후반부 팀 리드 겸임

EBS 외부 API 연동 및 대용량 데이터 동기화 시스템 구축

2023.10 ~ 2023.12, 설계·구현 단독 담당

단계를 나누고 원본을 보존해 외부 장애에도 재처리 가능한 동기화 구조 설계

  • 단계별 트랜잭션
  • 원본 보존
  • 정합성 검증
  • Upsert
  • [1단계] 원천 적재 → [2단계] 검증 → [3단계] 내부 반영을 단계별 트랜잭션으로 분리(3단계는 1만 건 묶음마다 커밋)해 실패한 단계만 다시 실행
  • EBS API 응답 원본을 호출 기록과 연결해 보존해, 2~3단계가 실패해도 외부 재호출 없이 재처리
  • 작업 지시와 내부 데이터 상태로 정합성 플래그(통과, 보류, 오류)를 정하고, 이미 있는 키로 온 생성 지시는 수정으로 바꿔 같은 지시가 반복돼도 결과가 같게 처리
  • 교육과정 개편 2회와 EBS API 버전 변경 1회에도 같은 동기화 구조로 외부 콘텐츠 10만+ 건 반영
자세히 보기

LMS 플랫폼 고도화(하이러닝·뉴쎔)

2022.07 ~ 2024.07, 담당 기능 개발, 프론트엔드 전환 리드

EBS 문항과 자체 제작 문항을 같은 분류체계로 묶어 학년·단원별 문제집 출제 구조 구현

  • 분류체계
  • 스키마 분리
  • 출제 유형
  • MyBatis
  • 교사가 학년과 단원을 고르면 그 단원의 문항으로 문제집을 만들고, 학생의 응시와 결과 확인까지 한 흐름으로 연결
  • 직접, 선택, 랜덤, AI 추천 출제를 하나의 등록 흐름에서 유형별로 처리
  • EBS 동기화 테이블과 문제집 테이블을 나눠, EBS 데이터를 다시 반영해도 교사가 만든 문제집이 유지되는 구조
  • 여러 학생이 같은 문항을 받으면 뒤 학생의 문항이 저장되지 않던 문제를 유니크 범위에 학생 식별자를 넣어 해결
자세히 보기

jQuery 화면을 전면 재작성 없이 Vue 컴포넌트 구조로 전환하고 응답 규격 통일

  • Vue.js
  • JSP
  • 공통 응답 규격
  • 공통 컴포넌트
  • SPA 전면 재작성 대신 JSP 화면에 Vue 컴포넌트를 마운트하는 방식을 골라, 구버전 병행 없이 2023년 9월에 새 화면으로 오픈
  • Tiles 레이아웃의 head에서 Vue, 공통 통신 함수, 공통 컴포넌트를 한 번 불러오는 화면 구조 도입
  • JSP로 응답 필드를 하나씩 매핑하던 방식을 공통 응답 객체의 JSON 응답으로 바꿔 팀 API에 적용
자세히 보기