끊임없이 도전하는 프론트엔드 개발자

안녕하세요,
프론트엔드 개발자 변수미입니다.

EmailGithubBlog
  • 끊임 없는 도전을 통해 꾸준히 성장해나아가고 있습니다.
  • 성능 최적화과 클린 코드에 대해 고민하고, 실제 프로젝트에 적용합니다.
  • 개발 과정에서 다양한 고민을 마주하는 것, 그리고 그 고민을 해결하는 것을 좋아해요.
  • 실력과 소통 능력을 모두 갖춘 '같이 일하고 싶은 개발자'가 되려고 노력합니다.
  • 사용자에게 불편한 점을 찾고 개선을 통해 사용성을 증진한 경험이 있습니다.

Work Experience

엑셈(EXEM)

AI플랫폼팀·LLM플랫폼팀 / 프론트엔드 개발자2025.07 - 재직중 / 11개월

eXemble

온프레미스 환경에서 기업 데이터 기반 생성형 AI 운영을 통합 관리하는 사내 LLMOps 플랫폼. 워크플로우 빌더와 AI 채팅 프론트엔드를 담당.

🔗 eXemble LLMOps 서비스 소개 →

스택: React 18 TypeScript Zustand React Flow react-hook-form Zod SSE


AI 채팅 시스템

SSE 기반 실시간 채팅 아키텍처 설계

기존 채팅의 파일 중복 업로드/복제 등 반복 버그를 단발 이슈가 아닌 구조적 문제로 진단하고 기획 단계부터 설계 방향을 정리해 팀에 공유했습니다. SSE delta 단위 스트리밍과 Reducer 패턴 중앙 집중식 상태 관리를 도입해 streaming/error/interrupt 플로우를 안정화했습니다.

결과: 2주 예상이던 채팅 작업을 3일 내 완료해 출시 일정 준수. 운영 중 주요 버그 0건

📝 SSE 이벤트 프로토콜로 AI 채팅 스트리밍 설계하기 →

채팅 안정성 강화

하트비트 기반 연결 감시/자동 재연결/응답 지연 타임아웃 처리로 네트워크 예외 상황에서도 사용자 개입 없이 복구되도록 보완했습니다. 실시간 응답과 대화 기록의 데이터 형식이 달라 화면을 이중 관리하던 한계는 백엔드와 협의해 단일 형식과 단일 컴포넌트로 통합했습니다.


워크플로우 에디터

에디터 구조 리팩토링

인수받은 에디터는 노드 하나를 수정할 때 6~7곳에 흩어진 코드를 함께 손봐야 하는 구조여서 코드 파악 비용과 버그 발생 가능성이 모두 높은 상태였습니다.

  • 노드 타입(LLM/Tool/Branch)별 컴포넌트를 분리하고 공통 로직을 NodeBase로 응집해 노드 수정 시 영향 범위를 한 곳으로 축소
  • 노드 추가가 누락되면 빌드 타임 타입 에러로 검출되도록 구조화해 휴먼 에러 예방
  • 노드 단위 selector + useShallow로 구독 범위를 좁혀 불필요한 리렌더링 감소

워크플로우 유형 확장과 인라인 편집

지원하는 워크플로우 유형이 제한적이어서 고객 시나리오 대응에 한계가 있었습니다. PO 및 백엔드와 협의해 의도 분류와 스케줄링 등 신규 노드를 정의/개발하고 편집 화면 안에서 노드와 Tool을 바로 생성/수정할 수 있는 인라인 편집과 환경 간 이식이 가능한 내보내기/가져오기를 함께 도입했습니다.

결과: AI 워크플로우 유형 2배 이상 확장. 1분기 동안 워크플로우 기능 개선 20건 이상 릴리즈


DX & 자동화

AI 에이전트 기반 테스트 자동화

별도 QA 팀 없이 짧은 개발 주기를 운영하다 보니 테스트 도입이 계속 미뤄지던 상황이었습니다. 단위/통합/E2E 비율을 정한 테스트 피라미드 구조를 잡고 Claude Code와 Playwright MCP 그리고 프로젝트 컨벤션을 정의한 CLAUDE.md를 활용해 AI 에이전트가 테스트 코드를 작성하고 유지하는 흐름을 팀에 정착시켰습니다. 테스트 실패 시 GitHub Issue가 자동 등록되도록 구성해 운영 안정성도 확보했습니다.

📝 QA도 시간도 없던 팀이 AI Agent로 테스트 자동화를 정착시킨 방법 →

GitHub PR 자동 생성 에이전트

PR 작성에 들어가던 반복 작업을 줄이기 위해 GitHub PR 자동 생성 에이전트를 개발하여 문서화 리소스를 절감했습니다.


팀 리딩과 협업 주도

프론트엔드 선행 API 설계 (출시 일정 압박 대응)

출시 일정이 매우 급박한 상황에서 담당 페이지들이 개발 플로우 후반부에 위치해 그대로 두면 일정 내 출시가 불가능한 구조였습니다. 각 화면에 필요한 정보를 정리해 API 인터페이스를 선행 설계하고 백엔드에 전달함으로써 프론트엔드와 백엔드의 병렬 개발을 실현했고 권한별 라우팅과 접근 제어 시스템을 함께 설계해 서비스 보안 구조의 기반을 마련했습니다.

프론트엔드 팀 리딩

3인 프론트엔드 팀에서 별도 리드 없이 운영해야 하는 상황에서 일정 관리와 태스크 할당 그리고 기술적 의사결정의 역할을 맡았습니다.

  • 매 스프린트마다 PO와 우선순위/스코프 조율
  • 주간 변경사항 공유 세션으로 각자 작업의 비즈니스 배경과 기술적 결정을 팀 전체에 전파
  • 팀원의 독립 처리 범위를 점진적으로 확장

결과: 1분기 전체 스프린트 일정 지연 0건

(주)아데나소프트웨어

페이먼츠 개발팀 / 프론트엔드 개발자2023.09 - 2025.06

Sticpay 서비스

상대방이 어디에 있든 실시간으로 송금/수취가 가능한 온라인 e-wallet 서비스.

Next.js, TypeScript, Emotion.js, Recoil

인증 정보 쿠키 기반으로 마이그레이션

서브도메인이 다른 두 서비스가 스토리지 기반 인증을 사용하면서 인증 정보 공유에 한계가 있었습니다. 인증 방식을 쿠키 기반으로 전환하고 데이터 암호화를 적용해 보안을 강화하면서, 서브도메인 간 인증 정보 공유 문제를 함께 해결했습니다.

SVG 스프라이트 도입으로 성능 개선

국가 선택 UI에서 260개의 국기 이미지를 개별 요청하느라 페이지 로딩 성능이 저하되는 문제를 발견했습니다. SVG 스프라이트 기법을 도입하고, 로컬과 S3 환경에서 모두 사용할 수 있는 스프라이트 이미지 생성 스크립트를 개발해 적용했습니다.

결과: 이미지 요청 횟수 260회 → 1회, 페이지 로딩 속도 큰 폭 개선

SSO 계정 연동 중 API 요청 취소 문제 해결

페이지 이탈 시 진행 중인 API 요청이 중단되어 SSO 계정 연동이 실패하는 문제가 있었습니다. fetch keepalive 옵션을 활용해 요청이 페이지 종료 후에도 완료되도록 처리했고, 이 방식을 polling 기반의 안정적인 통신 구조로 SSO 계정 연동에 적용했습니다.

React 18 마이그레이션

React 17 · Node 16 환경에서 기능 제약이 발생해 마이그레이션을 진행했습니다. Docker로 Node 20 환경을 먼저 구성한 뒤 React 18로 업그레이드했고, React Router · React Query 등 주요 라이브러리의 호환성 문제를 해결하며 안정적으로 마이그레이션을 완료했습니다.

Main 리뉴얼

이미지 최적화를 통한 성능 개선

메인 페이지 이미지들을 WebP 형식으로 변환하고 뷰포트 밖 이미지에 지연 로딩을 적용해 성능을 개선했습니다. WebP 미지원 브라우저를 위해 picture 태그로 PNG를 대체 제공해 호환성도 확보했습니다.

결과: 모바일 Lighthouse 점수 26 → 72

Money In&Out 리뉴얼

입출금 페이지 구조 개선

페이 메소드별로 개별 페이지를 만들어야 하는 입출금 시스템의 비효율적인 구조가 있었습니다. 페이 시스템을 카테고리화하고, 서버 데이터에 따라 동적으로 처리되는 구조로 재설계했습니다.

결과: 전체 페이지 수 70% 축소, 새 페이 추가 시 별도 페이지 생성 없이 즉시 대응 가능

많은 페이지를 관리하기 위한 퍼널 도입

각 카테고리·페이마다 사용자에게 받아야 하는 데이터가 많아 여러 스텝으로 이루어진 페이지가 많았습니다. 퍼널 간 상태를 관리하면서 단계를 명시적으로 이동시킬 수 있는 useFunnel 커스텀 훅을 만들어 사용했습니다.

다이어그램을 활용한 복잡한 기능 개선

히스토리와 문서 없이 코드만으로 파악해야 했던 계정 연동 기능을 리뉴얼하면서, 코드 분석을 통해 성공/실패 케이스를 포함한 상태 다이어그램을 작성해 API 응답별 상태 흐름을 시각화했습니다. 이를 팀에 공유하고 문서화하여 복잡한 기능을 안정적으로 구현했고, 향후 유지보수성과 팀 생산성 향상에 기여했습니다.


Sticpay API Docs

STICPAY에서 제공하는 API 문서를 페이지 형태로 제공하는 서비스.

TypeScript, Next.js, App Router, Node 20

PDF 문서를 MDX 기반 웹 문서로 전환

PDF 형태로 관리하던 API 문서를 MDX 기반 웹 페이지로 전환했습니다. MDX 파일을 로컬에서 관리하고 페이지에서 직접 렌더링하는 방식을 도입해, 문서 관리와 업데이트가 용이한 시스템을 구축했습니다.

퍼지 검색 알고리즘 기반 문서 검색

로컬 MDX 파일 기반의 문서 검색 시스템을 구현하면서 퍼지 검색 알고리즘을 도입해 유사 단어까지 검색 가능하도록 했습니다. 정확한 검색어를 모르는 사용자도 원하는 문서를 쉽게 찾을 수 있도록 개선했습니다.

검색 사용성 및 접근성 개선

검색 결과 내 키보드 네비게이션과 **전역 단축키(cmd+k)**로 검색창에 빠르게 접근할 수 있도록 했고, ARIA 속성을 활용해 웹 접근성을 준수하여 모든 사용자가 편리하게 검색할 수 있도록 개선했습니다.


Sticplay 신사업 개발

STICPAY에서 운영하는 iGaming 고객을 위한 캐시백 서비스.

Node 16, Zustand, next-i18next

다국어 i18n 세팅

빌드 시마다 발생하는 다국어 API 호출로 인한 서버 부하 문제를 발견했습니다. 번역 데이터 자동화 스크립트를 구현해 CI/CD 파이프라인에서만 실행되도록 개선했고, 이를 통해 불필요한 API 호출을 제거하고 서버 안정성을 확보했습니다.

로그인 · 2FA 연동 및 페이지 접근 제어

기존에는 페이지 이동마다 클라이언트에서 권한을 체크하느라 화면이 잠시 노출되었다가 리다이렉션되는 문제가 있었습니다. Next.js middleware를 도입해 페이지 진입 전 서버에서 권한을 검증하도록 개선했고, 이를 통해 화면 깜빡임 현상과 동시성 문제를 함께 해결했습니다.


이메일 템플릿 노코드 빌더

마케팅팀이 eDM 콘텐츠를 개발자 없이 직접 만들 수 있도록 한 사내 빌더.

Next.js, TypeScript

반복 요청을 구조적으로 해소

마케팅팀이 eDM HTML이 필요할 때마다 개발자가 직접 작성하던 구조였고, 요청 빈도가 높아 개발 일정에 영향을 주고 있었습니다. 단발 요청이 아닌 구조 자체에서 문제를 해결하기 위해 비개발자가 콘텐츠를 직접 만들 수 있는 빌더를 제안·개발했습니다.

드래그앤드롭 기반 편집 환경

다단 레이아웃과 이미지·텍스트 블록을 드래그앤드롭으로 배치할 수 있도록 했고, HTML 미리보기와 직접 편집을 동시에 지원했습니다. 자주 쓰는 형식은 템플릿화하여 재사용 가능하도록 구성했습니다.

결과: 마케팅팀이 eDM을 자체적으로 100% 제작 가능, 반복 요청에 사용되던 프론트엔드 리소스를 다른 작업에 투입

Team Project

Git animals

Git animals

2023.05 - 진행중
깃허브 활동으로 나만의 귀여운 펫을 키워보세요. 매일 커밋하고 PR을 올리면서 펫이 성장하고 레벨업하는 재미를 느낄 수 있습니다.
Next.jsTypeScriptPanda css
  • Github 잔디를 이용해 포인트를 얻고, 펫을 모아 Github를 꾸미는 서비스
  • 사용자와 Github Issue을 통해 소통하며 꾸준히 서비스 개선 진행중 (서비스 내 피드백 폼을 Github issue과 연결 -> Blog)
  • 총 사용자 8000명대/Github Star 1.7k
  • 외국 사용자를 타겟으로 하기 위해 다국어 기능 제공
  • remix(admin), next.js(main)을 모노레포로 구성, 공통적으로 사용하는 api, ui 등을 package로 분리하여 사용
na lab

na lab

2023.05 - 진행중
동료의 익명 피드백으로 자신의 성향과 장단점 등을 파악해요. 나의 강점은 살리고, 약점은 보완하기 위한 익명의 피드백 수집 및 통계 서비스.
Next.jsTypeScriptemotion.jsCloudflare pagesframer motionvitestGAHotjarMixpanel
  • 정식 출시 3일만에 사용자 1300명 달성
  • SSR에서 동적으로 커리어명함 이미지 생성 및 다운로드
  • Vitest, testing library로 선언적인 테스트 코드 작성
  • GA, Mixpanel을 이용한 사용자 흐름 분석, 인트로 스킵 기능을 추가해 이탈률을 18%에서 10%로 개선
  • DND기능 구현 중 기술적인 어려움 발생, 디자이너와 소통 끝에 대안을 제시하여 해결

Personal Project

Thumbnail Maker

Thumbnail Maker

2024.12 - 진행중
블로그 포스트 썸네일을 자동으로 생성해주는 서비스
tailwind cssshadcn/uisupabase

Activities

글쓰는 또라이(글또) 활동

2024.10 - 2025.03
글쓰는 또라이(글또) 10기 활동

디프만 14기 운영진

2023.08 - 2024.02
디프만 14기 인사부 운영진으로 활동, 14기 인원 모집 및 면접 진행, 디프만 14기 웹 페이지 개발 10MM팀 팀장 및 프론트엔드 개발자로 활동

디프만 13기

2023.04 - 2023.07
'디자이너와 프로그래머가 만났을 때', 16주에 걸쳐 서비스 기획부터 론칭까지 함께 경험하는 성장추구형 커뮤니티에서 프론트엔드 개발자로 활동 디프만 13기에서 대상 수상 빠른 1차 MVP 배포 후 2차 MVP 배포를 통해 정식 출시 3일 만에 사용자 1300명 달성

Probrain 동아리

2019.04 - 2023.02
충남대학교 교내 웹 동아리원. 2021~2022의 2년간 임원 활동

테오의 스프린트 14기

2023.02 - 2023.02
시니어 개발자 테오가 주최하는 5일 동안의 구글 스프린트 활동

Education

충남대학교

2019.03 - 2023.02
컴퓨터공학과 전공

Certificates

TOEIC Speaking IM3

2022.12.25
ETS

SQLD

2021.06.08
한국데이터산업진흥원

Award

Depromeet 14th 최우수상

Depromeet / 2024.01.22
IT 연합 동아리 Depromeet 14기에서 ”10MM” 프로젝트로 최우수상 수상

Junction Asia 2023 Track 2nd winner

Junction Asia / 2023.08.20
”autoWaste” 프로젝트로 JAKA track 2nd winner 수상

Depromeet 13th 대상

Depromeet / 2023.07.22
IT 연합 동아리 Depromeet 13기에서 ”Na lab” 프로젝트로 대상 수상

2023 덕성 5K(OK)! Plus O2O 창업경진대회 대상

덕성여자대학교 / 2023.04.26
”오직 나만을 위한 맛집 검색” PREAT 프로젝트로 대상 수상

SPARCS 2023 StartUp Hackathon 우수상

SPARCS / 2023.01.29
“이것도 나고이것도 나야.” METAMON 서비스로 우수상 수상

주니어 창의작품 경진대회 장려상

충남대학교 컴퓨터공학과 / 2022.06.08
SCRAP 프로젝트로 참가, 장려상 수상

OpenSource Contribute

Next.js Docs Translation

2023.06.23
Next.js 공식문서 페이지 번역, 01-installation 담당
  • merged된 PR

Chakra UI Ark Docs Style Bug Fix

2023.05.6
ark 공식문서 스타일 버그 수정
  • merged된 PR

React Docs Translation

2023.05.15
리액트 공식문서 페이지 번역
  • merged된 PR
  • 리액트 공식 문서 페이지
EmailGithubBlog
Copyright 2023. 변수미 All rights reserved.Powered by very-simple-portfolio