Experience
경력
GS리테일, 펫프렌즈, 소프트보울에서의 9년간 개발 경험. 각 회사를 클릭하여 상세 프로젝트를 확인하세요.
전국 GS25 점포가 매일 사용하는 점포경영시스템(PC/Mobile)을 담당하고 있습니다. 발주·상품조회·소비기한관리·공문/인쇄·대시보드처럼 점포 운영자가 매일 판단에 쓰는 화면이 주 영역이고, 기존에 운영 중이던 본부 업무관리(L.P.T/O.P.T) 화면에는 반복 업무를 줄이는 기능을 PC·모바일 양 채널로 더했습니다. 자동발주 서비스가 점포경영시스템에 도입될 때는 연동에 필요한 PC 웹 화면과 점포용 API를 맡았습니다. 화면 이슈가 서버 데이터 문제로 이어지면 Spring/MyBatis 코드까지 직접 수정하고, 원인이 배치에 있으면 어느 지점인지까지 확인해 넘기며, 팀이 함께 쓰는 Claude 플러그인·TC 자동 생성 도구처럼 반복 업무를 줄이는 내부 도구도 만들고 있습니다.
점포경영시스템(PC/Mobile) 운영 및 기능 개선
2025.05 — 현재- 전국 GS25 점포의 운영자와 경영주가 매일 사용하는 시스템으로, 발주(점포가 본부에 상품을 주문하는 업무)·상품조회·소비기한관리·공문/인쇄·대시보드 영역을 담당
- 발주 화면에서 장려금·원가할인 정보가 안내 문구로만 제공돼 해당 상품을 다시 검색해야 했던 흐름을, 문구를 클릭하면 그 조건이 적용된 발주 화면으로 바로 이동하도록 개선하고 할인율·할인금액을 분리 표기해 판단 근거를 화면에서 즉시 확인
- 발주 이력과 점간이동(점포 간 상품 이동) 내역에 조회 조건을 보강해, 원하는 건을 찾기 위해 전체를 훑어보던 탐색 비용 절감
- 여러 홍보물이 하나로 묶여 필요한 자료만 출력할 수 없던 인쇄 구조를 항목별 양식으로 분리하고 템플릿 추가
- 화면 이슈를 프론트엔드에서만 보지 않고 Spring/MyBatis/Oracle 기반 API 응답·조회 조건·배치 데이터까지 함께 확인해 원인 지점에서 해결
VueTypeScriptPiniaYarn Berry(PnP)SpringMyBatisOracle
자동발주 연동 점포경영 화면 및 점포 API 개발
2026.01 — 2026.08- 자동발주는 경영주가 매일 수작업으로 판단하던 발주 수량을 시스템이 제안하는 신규 서비스로, 수량 산출 로직은 별도 담당자가 개발. 이 서비스가 점포경영시스템에 도입될 때 필요한 PC 웹 화면과 점포용 API(store-api)를 담당
- 전체 점포가 아닌 일부 점포에 먼저 여는 단계적 오픈 방식이라, 대상·비대상 점포가 같은 화면을 쓰는 상황의 분기와 대량 작업 중 데이터 정합성 보호가 담당 범위의 핵심
- 대상 점포 여부에 따라 전용 발주 모달과 환경설정 화면이 다르게 노출되도록 구성하고, 점포 API에 캐시 기반 판별을 두어 조회할 때마다 반복 확인하지 않도록 처리
- 자동으로 채워진 수량과 사람이 직접 입력한 수량이 화면에서 구분되지 않아 무엇을 확인해야 할지 알기 어려운 문제를, 두 값을 색으로 구분하고 수정하면 표시가 해제되는 공통 규칙으로 해결
- 엑셀로 대량 등록·삭제하는 도중 조회 조건을 바꾸면 처리 결과가 다른 데이터에 반영될 수 있던 위험을, 작업 중 화면 잠금으로 차단
- 마감 시각을 놓치면 되돌릴 수 없는 신선식품(FF) 예약 발주에는 사전 안내 팝업과 실행 이력 조회를 추가
VueTypeScriptPiniaYarn Berry(PnP)SpringMyBatisOracleRedis
본부 업무관리(L.P.T/O.P.T) 기능 개발 및 개선
2026.06 — 현재- 영업팀장과 OFC(점포를 담당하는 영업 관리자)가 주 단위로 할 일을 정하고 점포에 배분하는 기존 화면에, 반복 업무를 줄이는 기능을 PC·모바일 양 채널로 추가
- 매주 비슷한 할 일을 처음부터 다시 등록하던 반복 작업을 없애기 위해 주차별 복사 기능을 신규 구현. 화면뿐 아니라 완료 상태 초기화·중복 제외·복사 가능 주차 검증까지 서버 로직을 직접 개발
- 팀장이 팀원별 진행 상황을 한눈에 확인하는 현황 탭을 신설하면서, API에 소속 팀원 검증을 추가해 다른 팀 데이터가 조회되지 않도록 권한 경계 확립
- 팀 공통 업무를 팀 전원에게 자동 부여하던 방식이 실제 업무와 맞지 않아 대상자를 선택하는 방식으로 전환하고, 이미 완료한 팀원의 상태는 보존되도록 설계
VueTypeScriptPiniaYarn Berry(PnP)SpringMyBatisOracle
서비스통합지표(서비스 진단) 반기 체계 전환
2026.02 — 2026.07- 점포의 서비스 수준을 평가하는 진단 지표를 분기 단위에서 상·하반기 단위로 전환하면서, 과거 데이터도 그대로 조회될 수 있어야 하는 조건 아래 진행
- 연도가 바뀌는 구간에서 이전 분기 데이터와 새 반기 데이터가 겹쳐 보이던 문제를 조회 조건과 결과 구분 컬럼 추가로 해소
- 2026년 이후 신규 화면과 이전 연도 화면을 분기 처리해 과거 데이터 조회 호환성 유지
- 평가 항목을 명칭으로 연결하던 구조라 명칭만 바뀌어도 집계가 끊기던 문제를, 식별자 기준 매핑으로 바꿔 재발 방지
- 총점 계산에 점수가 아닌 주관식 항목이 섞여 오류가 나던 부분을 제외 처리하고, 비숫자 값도 안전하게 처리하도록 보완
VueTypeScriptPiniaSpringMyBatisOracle
모바일점포경영 상품조회/발주 UX 개선
2025.07 — 2026.04- 매장에서 태블릿·모바일로 상품을 조회하고 발주하는 흐름을 담당
- 취급 상품이 많아 원하는 항목을 찾기 어려운 상품조회에 중·소분류 필터를 추가하고, 상세 화면을 다녀와도 검색어와 검색 결과가 유지되도록 개선해 같은 검색을 반복하던 동작 제거
- 단품발주에서 상품 상세로 바로 이동하고 취급 여부를 그 자리에서 전환할 수 있도록 해, 발주 도중 다른 메뉴로 나갔다 돌아오던 흐름 단축
- 기존에는 소비기한 등록 시 상품을 하나씩 검색해 입력해야 했던 것을, 바코드 스캔으로 등록할 수 있도록 기능 추가
- 등록 수량 입력, 날짜 선택 캘린더 같은 앱 공통 컴포넌트는 Flutter(Dart)로 구현
VueTypeScriptPiniaFlutter(Dart)Yarn Berry(PnP)SpringMyBatisOracle
본부 페이싱(매대) 관리 기능 개선
2025.10 — 2026.06- 매대 진열(페이싱)을 유형별로 운영할 때 같은 상품이 여러 매대에 중복 등록되어도 확인할 방법이 없어, 문제를 사후에야 발견하던 상황
- 매대 변경 시 중복 여부를 검사하는 API와 중복 상품 목록 엑셀 다운로드를 신규 개발해, 변경을 확정하기 전에 미리 확인할 수 있도록 개선
- 상품검색 팝업에서 상품명을 클릭하면 상세 정보를 바로 확인할 수 있도록 하고, 일괄 매대 변경 처리 로직을 리팩토링해 유지보수성 확보
VueTypeScriptPiniaSpringMyBatisOracle
점포설정 사업장환경값 신규 개발
2026.07- 결제 화면에 특정 상품의 판매 수량 상한이 없어 발생하던 점포 부정을 막기 위해, 최대 판매 수량 설정 기능을 신규 개발
- 설정 화면의 입력 검증뿐 아니라 점포 API에서도 상한 초과 값의 저장을 차단해, 화면을 우회한 조작까지 방지
- 할인행사 결제 후 안내 팝업 설정값을 함께 추가하면서, 코드 화이트리스트에 등록되지 않으면 값이 화면에 노출되지 않는 구조를 사전에 확인해 처리
VueTypeScriptPiniaSpringMyBatisOracle
공통 UI 컴포넌트 및 그리드 공통 로직 개선
2025.06 — 2026.05- 여러 화면에서 각각 구현돼 화면마다 동작이 달랐던 취급여부 토글, 상품상세조회 팝업, 행사 표기를 공통 컴포넌트로 통합해 동작과 표기를 일원화
- 발주 그리드에서 열 너비를 조정하면 입력 중이던 위치가 풀려 다시 찾아야 했던 문제를 공통 리사이즈·포커스 유지 로직으로 해결
- 입력 길이 제한을 화면마다 개별 처리하던 것을, 공통 입력 컴포넌트가 초과 시점을 알려주는 방식으로 통합
- 상품 정보 변경 이력을 확인할 수 없던 팝업에 변경 전 상품명·상품코드를 함께 표기하고, 행사 표기 공통 UI의 데이터 매핑과 날짜 예외 처리를 보완해 일부 화면에서만 깨지던 표기 정상화
VueTypeScriptPiniaYarn Berry(PnP)SpringMyBatisOracle
백엔드/API/배치 연계 및 데이터 처리 개선
2025.07 — 2026.05- 고객 해피콜 화면에서 접수유형·상세유형·템플릿을 각각 호출하던 구조를 통합 호출로 바꾸고 캐싱과 재시도를 추가해, 응답 지연과 데이터 불일치 해소
- 소비기한 스캔 시 같은 상품이 여러 건으로 흩어지거나 일부가 누락되던 문제를, 조회 API를 분리하고 상품·소비기한 기준으로 그룹화해 해결
- 대시보드 수치가 실제와 달랐던 원인이 프론트엔드가 아닌 월별 집계 배치에 있음을 확인해, 수정이 필요한 지점을 특정
SpringMyBatisOracleVueTypeScriptPinia
운영 안정화 및 리소스/환경 개선
2025.07 — 2026.05- 로그인 2차 인증에서 동일 요청이 중복 전송되고 인증에 실패해도 토큰이 남아 비정상 진입이 가능하던 문제를 차단
- 취합관리에서 이미지를 대량으로 내려받을 때 파일 서버(NAS) 커넥션이 포화되던 현상을 요청 간격 제어로 완화하고, 공문 인쇄는 리포트 서버를 거치지 않고 CDN 이미지를 직접 사용하도록 변경해 인쇄 경로 단축
- 프론트엔드 저장소에 함께 있던 퍼블리싱 폴더를 별도 저장소로 분리하고 빌드 스크립트·워크스페이스·타입 설정 참조를 정리해 저장소 구조 단순화
- Yarn Berry(PnP) peerDependency 최적화로 중복 라이브러리를 제거해 설치·빌드 환경 정리
VueTypeScriptPiniaYarn Berry(PnP)SpringMyBatisOracle
3년 3개월간 펫프렌즈 모바일 프로젝트 전반을 담당했습니다. Vue2 레거시 코드를 Next.js로 마이그레이션하며 서비스 품질을 개선했고, PO가 기획한 A/B 테스트를 Amplitude·Airbridge로 구현하며 실험 동작 방식을 함께 구체화했습니다.
장기보험 상담 및 가입 서비스 개발
2025.04 — 2025.05- React Query와 Jotai persistent storage 연동으로 보험 상담 단계별 입력 데이터 영속 저장 — 새로고침 후에도 사용자 입력 정보 유지
- replace 메서드와 이동 경로 배열을 활용한 커스텀 훅으로 단계별 페이지 이동 제어
- popstate 이벤트를 통한 물리적 뒤로가기 방지 및 헤더 버튼 자연스러운 흐름 구현
- Zod를 활용한 폼 유효성 검증으로 타입 안정성 확보 및 에러 처리 강화
Next.jsTypeScriptReact-QueryReact-Hook-FormZodJotai
우리아이 등록/목록/수정 Next 리팩토링
2025.02 — 2025.03- presignedUrl 적용으로 프론트엔드에서 직접 S3 업로드 — 백엔드 서버 부담 감소
- 대표 동물 변경 시 Optimistic UI 적용으로 UI 반응성 즉각 개선
- Zod를 활용하여 수정과 등록의 인터페이스를 통일화하여 코드 일관성 유지
- query parameter와 replace 동작을 활용한 온보딩 형태의 페이지 이동 로직 구현
Next.jsTypeScriptReact-QueryReact-Hook-FormZodAWS S3
로그인/회원가입 페이지 Next 리팩토링
2024.05 — 2024.11- React-Hook-Form + Zod로 폼 유효성 검사 및 타입 안전성 강화
- Kakao SDK 버전 업그레이드 — Galaxy Fold 기기 호환성 문제 완전 해결
- window.open + postMessage 기반 팝업 로그인 플로우 구현 — 히스토리 변경 없이 매끄러운 로그인 경험 제공
Next.jsTypeScriptReact-QueryReact-Hook-FormZodApple SDKKakao SDKNaver SDK
시크릿 상품 쿠폰 다운로드 페이지 개발
2024.06 — 2024.07- 상품 쿠폰 발급 및 다운로드 페이지 개발
- infiniteQuery를 활용한 인피니트 스크롤 구현
- 뒤로가기 시 React-Query 캐시 데이터를 활용하여 스크롤 위치 유지 이슈 해결
Next.jsTypeScriptReact-Query
주소지 변경 페이지 Next 리팩토링
2023.12 — 2024.01- Vue2로 개발된 배송지 변경 페이지를 Next.js로 전환
- 결제 페이지에서도 재사용할 수 있도록 컨테이너를 공통 컴포넌트로 구조화
Next.jsTypeScriptJotaiReact-Query
멤버십 서비스 개발
2023.08 — 2023.11- 보험 등록을 위한 우리아이 정보 입력 폼 및 UX 중심 입력 검증 로직 설계
- Jotai를 활용한 멤버십 도메인 전역 상태 관리 구조 설계 — 일관된 상태 공유
- 멤버십 도메인과 펫프인슈어런스 프로젝트 간 데이터 교환 인터페이스 구현
- Amplitude 이벤트 트래킹 및 ChannelTalk SDK 통합
Next.jsTypeScriptJotaiReact-Hook-FormReact-QueryAmplitudeChannelTalk SDK
마이펫프 페이지 Next 리팩토링
2023.07 — 2023.09- Vue2 레거시 코드 분석 후 Amplitude·Braze 데이터 전송 체계 정리 및 리팩토링
- 비로그인 사용자 접근 제한과 로그인 후 복귀 플로우, 탈퇴 회원 안내 모달 구현
- A/B 테스트로 특정 사용자 그룹만 파트너스 관련 페이지에 접근하도록 설정
Next.jsVue2TypeScriptJotaiReact-QueryStitchesAmplitudeBraze
WTA Web-to-App A/B 테스트
2022.12 — 2023.01- Amplitude Experiment + Airbridge로 홈/마이펫프/상품 상세 페이지에 WTA 전환 배너 적용
- 실험군 유저와 네이버 광고 유입 유저를 나누는 노출 조건을 구현. 실험 가설과 대상 설계는 PO·CRM이 맡았고, 구현 가능성과 동작 방식을 미팅에서 함께 구체화
Vue2VuexAmplitudeAirbridgeNext.jsTypeScript
백오피스 개발 및 유지보수
2022.02 — 2025.05- 엑셀 업로드/다운로드, 스탬프/상품/회원 관리 페이지 UI 개선 및 성능 최적화
- Firebase SDK 최신 버전 업그레이드 및 Vue3 Composition API 전환
- vue-query를 활용하여 쿠폰 목록 데이터 캐싱 및 쿠폰 회수 기능 추가
- 유저 정보 조회 API 성능 최적화 및 탈퇴 유저 Braze 데이터 초기화 기능 개발
ReactVue 2/3vue-queryFirebaseScssAxiosAWS
HTML5 데이터그리드 솔루션 전문기업 소프트보울에서 SBGrid2.5 솔루션 개발·유지보수와 SI 프로젝트를 4년 5개월간 경험했습니다.
SBGrid2.5 솔루션 개발 유지보수
2017.09 — 2022.02- 스크롤 위치에 따라 데이터를 표시하는 가상화 로직을 리팩토링하고 파일 구조까지 함께 정리해, 대용량 데이터 렌더링 성능과 유지보수성 개선
- Java POI를 활용한 엑셀 기능 유지보수, 웹 접근성 탭 키 입력 로직 구현
JavaScriptTypeScriptjQueryWebpackGulpJavaSvn
솔루션 테스트 자동화 프로그램 구축
2021.06 — 2022.02- Python + Selenium 기반 SBGrid·SBUx 자동화 테스트 프로그램 구축 및 유지보수
- SBGrid2.5·SBChart2.0·SBUx2.6 크로스 브라우저 테스트(IE8~11, Edge, Chrome, Firefox, Whale, Safari) 수행
- React·Vue·Angular 라이브러리와 자사 솔루션 간 연동성 테스트 진행
PythonSelenium
이슈 및 메일 통합 관리 시스템 (TAMS)
2021.05 — 2021.08- Redmine API + NaverWorks API를 통합한 이슈·메일 관리 CRUD 시스템 설계 및 개발
ReactReduxAxiosStyled-ComponentsScssTypeScriptNaverWorks APIRedmine API
SI 프로젝트 다수 참여
2019 — 2021- 카이스트 안전관리시스템, 데이터진흥원 백오피스, 금융보안원 가명데이터 결합 시스템
- IBK 기업은행 자금통합관리시스템 (50명+ 규모), 지방행정공제회 차세대 시스템
- 다이몬소프트 물류관리 시스템 프론트엔드 개발 및 SBUx 솔루션 지원
VueJavaScriptjQuerySpringHTMLCSS
Other Experience
팀 업무용 Claude 플러그인 개발 · GS리테일
2026.05 — 현재
- 각자 만든 도구와 설정이 개인 PC에만 있어 팀이 공유하지 못하던 상황에서, 사내 저장소 자체를 배포 채널로 구성해 clone·pull 없이 최신화되는 구조로 개발. 현재 파트 5명이 사용 중
- 사내 자체 호스팅 이슈 트래커·위키·저장소·DB에 접근하는 커넥터 5종을 직접 구현해 공용 커넥터로 편입. 이전에는 필요한 내용을 보려면 각 플랫폼에 직접 들어가 찾아야 했음
- 축적한 도메인 위키와 연결해, 질문에 답할 때 정리된 지식을 먼저 참조하고 부족하면 코드·DB까지 확인하도록 구성
- Jira 티켓 기한 임박 알림과, 신규 티켓 등록 시 내용 요약 제공
- 테이블 구조를 입력받아 ERD를 생성하고, 릴리즈 문서·주간보고 같은 반복 작성 업무를 스킬로 자동화
- 토큰 같은 비밀값은 저장소에 두지 않고 각자 PC 설정에만 두도록 분리하고, 접근 권한은 저장소 권한으로 통제
Claude CodeMCPPythonNode.jsJira API
점포경영시스템 LLM 위키 구축 · GS리테일
2026.05 — 현재
- 운영 문의에 답하려면 시스템 흐름·인터페이스·과거 사례를 알아야 하는데, 그 지식이 위키·업무 메일·개인 노트에 흩어져 있어 문의마다 다시 조사해야 했던 상황
- 흩어져 있던 점포경영시스템 도메인 지식을 LLM이 참조할 수 있는 형태로 정리해, 새로 합류한 구성원도 업무 문맥을 빠르게 파악할 수 있도록 구축
- 원천 데이터 확보를 위해 업무 메일 수집 파이프라인을 별도 구현 — 메일 아카이브에서 추출 → 스팸·중복·스레드 정리 → 스레드 단위 문서로 출력
- 개인정보는 정규식·사전 기반으로 결정적 마스킹하고, 외부 API 호출 없이 완전 로컬로 동작하도록 설계. LLM 검수는 로컬 모델로 한정하고 문서 재구성만 선택 단계로 분리
PythonFlaskOllamaClaude CodeMarkdown
테스트케이스(TC) 자동 생성 도구 개발 · GS리테일
2026.05 — 현재
- 변경 건마다 테스트케이스를 수기로 작성하는 데 시간이 많이 들고, 코드 변경 범위를 사람이 훑어 파악하다 보니 검증이 누락되는 경우가 있었던 상황
- 브랜치명만 입력하면 이슈 내용과 코드 변경분을 분석해 표준 양식 TC를 생성. 몇 시간씩 걸리던 작성이 20분으로 단축
- 하나의 TC 안에서 단계(step)가 구분돼 순서대로 검증할 수 있는 형태로 생성되도록 구성
- 변경 파일에서 매퍼·API·화면을 종단간 추적해 검증 대상을 도출하고, 개발 DB에서 실제 테스트 가능한 샘플 데이터를 조회해 채움. 실데이터 기반이라 검증이 누락된 지점을 찾는 데에도 활용
- 이후 팀 공용 플러그인의 스킬로 편입해 팀 전체가 사용
LangGraphN8NMCPPythonOracle
Figma 연동 로컬 브리지 개발 · GS리테일
2026.07 — 현재
- 기획 작업은 여러 시안을 시도해 보는 과정이라, 공식 연동 도구의 월 사용 한도로는 캔버스에 반영하는 작업이 금방 막혔음. 요금제를 올리면 해결되지만 그 목적만으로 비용을 늘릴 필요는 없다고 판단해 자체 브리지로 대체
- 로컬에서 디자인 툴 캔버스에 직접 쓰기를 수행하는 자체 호스팅 브리지를 구현. 공식 도구와 포트가 겹치지 않도록 구성해 둘을 동시에 사용 가능
- 플러그인 API 코드를 그대로 실행하는 방식이라, 공식 도구가 제공하지 않는 편집까지 처리
Node.jsMCPWebSocketFigma Plugin API
Infrastructure as Code(IaC) 경험
- Terraform을 활용해 S3, ECS, ECR, CloudFront와 같은 AWS 서비스를 코드로 관리하고 자동화하여 효율적인 인프라 환경 구축 경험
TerraformAWS S3ECSECRCloudFront
모노레포 기반 프로젝트 관리 경험
- 멀티레포에서 효율성을 개선하기 위해 turborepo와 pnpm을 활용해 모노레포 환경으로 전환
- 코드 관리와 빌드 효율성 극대화
Turborepopnpm
멀티레포 기반 공통 모듈 패키지 관리 경험
- 프론트엔드 프로젝트에서 Icon, Component, UI, Utils 등 공통 모듈을 패키지 단위로 나누어 관리
- 각 Repository를 분리해 협업 및 재사용성 극대화
LernaReactYarn BerryStorybook
Slack 알림 자동화 프로그램 개발 및 유지보수
- Git Pull Request 요청 시 또는 배포 완료 시 Slack으로 자동 알림 전송하는 프로그램 개발 및 유지보수
AWS Lambda EdgeHTMLCSSJavaScript