미리보기
기본 정보
WhaTap Labs에서 ‘요청 1건당 최대 약 129만 개의 데이터’ 시각화를 위한 프론트엔드 개발을 담당하고 있습니다.
자기소개
웹 프론트엔드 개발자로서, WhaTap Labs에서 ‘요청 1건당 최대 약 129만 개의 데이터’를 사용자 친화적으로 시각화하고 복잡한 상태 관리와 성능 최적화 문제를 다루었습니다. 복잡한 기능을 모듈화해 유지보수와 확장이 용이한 구조를 추구합니다. 솔직하지만 부드럽게 소통하고, 유저의 상황에 몰입하여 최선의 방향을 고민하며, 항상 기획부터 배포까지 주도적으로 참여해 제품의 완성도를 높이는 데 기여합니다.
기술 스택
JavaScript, TypeScript, HTML/CSS, React
경력
WhaTap Labs
프론트엔드 개발자 | 아키&공통 그룹 | 재직 중
2023.06. ~ 재직 중 (1년 5개월)
B2B SaaS IT 통합 모니터링 플랫폼 WhaTap을 개발하고 있습니다. WhaTap 제품의 공통 화면(로그, 빌링, 계정)과 모듈을 유지보수하며, 높은 부하의 시계열 데이터를 사용자 친화적으로 시각화하는 업무를 맡아왔습니다.
메트릭스 차트(모니터링 대시보드), 로그 모니터링 화면 개발
빌링 및 계정 화면 개발(제품별 가격 정책 변경 및 글로벌 비즈니스 요구사항 지원, 결제 수단 퍼널 개편, 백오피스 개발)
글로벌 서비스 운영을 위한 다국어 처리 대응 방안 수립
레거시 제거(8년간 없던 Doctype 추가 및 사이드 이펙트 대응, antd 2.x 버전 제거)
Tanstack Query 도입
기술스택: TypeScript, React, Tanstack Query, Styled-Component, Jest, Storybook
프로젝트
메트릭스 차트 개편
WhaTap Labs
2024.01. ~ 2024.08.
사내 전 제품에서 활용되며, 시간대별 모니터링 대상(약 300개)을 다양한 지표로 분석할 수 있는 대시보드를 개발했습니다. 이해관계자와 소통하며 요구사항을 수집하고, UI/UX 설계 및 사용성 테스트 등 적극적으로 제품 성장에 기여했습니다. ‘사용자가 원하는대로 위젯을 추가’할 수 있고, ‘요청 1건당 최대 약 129만 개의 데이터’ 시각화를 위한 복잡한 상태 관리와 성능 최적화 문제를 다루었습니다.
(사내 블로그 링크)
사용자 커스텀 대시보드 설계 및 구현
위젯 CRUD, 위젯 정렬•배치 변경을 위한 레이아웃 설계 및 대시보드 템플릿 저장을 위한 상태 관리
독립적이면서 사용자가 원할 때, 모든 위젯이 일괄적으로 움직일 수 있는 위젯 설계
트리 데이터 시각화를 위한 컴포넌트 개발
트리 데이터 검색, 선택, 펼치기/접기 상태 관리
shift 키를 활용한 다중 선택 UX 구현
리스트 가상화 기법과 Concurrent UI Pattern을 활용한 성능 개선
대시보드의 모든 데이터를 합친 차트 렌더링 최적화
480KB(약 20만개) 데이터 렌더링(90ms), 사용자 인터랙션(550ms) 시간을 1.8ms로 개선
메모이제이션, 리스트 가상화, Concurrent UI Pattern 활용
서버 부하 감소를 위한 API 요청 최적화
불필요한 API 요청 판단을 위한 상태 관리
세마포어 개념을 적용해 동시 요청 개수를 1개로 제한
N개의 데이터를 1~N개로 요청하여 컴포넌트에 전달하는 구조 구현(N개 → 1~N개로 개선)
로그 모니터링 코어 모듈 개편 및 공통 모듈화
WhaTap Labs
2023.08. ~ 2023.10.
로그 모니터링의 검색 문법, 사용법을 쉽게 익힐 수 있도록 검색 필터 UI를 개편했습니다. 마우스, 키보드로 쉽게 입력/수정할 수 있는 UI/UX를 설계하고, 사내 여러 제품의 일관성 없는 필터 UI 문제를 해결하고자 공통 컨벤션을 수립했습니다. 확장성을 고려한 React 디자인 패턴(compound, render props 등)을 활용해 5개 제품에서 사용하는 공통 컴포넌트를 설계했습니다. 또한, 기존 요구사항을 충족하며 확장성 있는 테이블 컴포넌트로 마이그레이션했습니다.
(로그 모니터링 가이드 문서)
검색 필터 컴포넌트 UI/UX 설계 및 구현
마우스 및 키보드(Enter, Backspace, Esc, 방향키 등)를 통한 필터 조건 CRUD 및 팝오버 열기/닫기 구현
다국어 입력 후 Enter 시 입력 내용과 표시된 내용이 어긋나는 문제 해결
필터 조건을 N줄로 접어 표시하는 UI/UX 설계(IntersectionObserver, ResizeObserver를 활용하여 성능 개선)
리스트 → 테이블 컴포넌트로 마이그레이션
기존 요구사항(무한 스크롤, 리스트 가상화 등)을 충족하며 테이블 요구사항(컬럼 크기 조절) 반영
총 10곳의 사용처에서 공통화 및 공통 인터페이스 정립
글로벌 서비스 운영을 위한 다국어 처리 대응 방안 수립
WhaTap Labs
2023.11. ~ 2023.12.
글로벌 서비스 운영에 따른 문자열 동등 처리, RTL(Right-to-Left) 지원, 포매팅, 문자열 줄바꿈 스타일 등 다국어 처리 이슈를 해결하기 위해 문제를 정의하고, 이해관계자와 소통하며 해결 방안을 모색했습니다. 국내 자료가 부족해 해외 자료를 중심으로 리서치했으며, 이해관계자들이 각자의 입장에서 이해할 수 있도록 문서화하여 공유했습니다.
JavaScript prototype 함수를 모방한 문자열 동등 처리 함수를 개발하여 라이브러리 제작
유닛 테스트 코드 작성 및 pre-commit, CI를 통한 검증
Storybook을 활용한 테스트 GUI 제공
Tanstack Query 도입
WhaTap Labs
2024.06. ~ 2024.06.
Data Fetching 상태 관리의 편의성과 세밀한 캐시 관리를 통한 최적화를 위해 문서를 작성해 도입을 제안하고 추진했습니다.
서비스 특성에 맞는 디폴트 옵션 정리(gcTime, staleTime)
query key 중복 방지를 위한 query key 관리 함수 설계
query 관리 컨벤션 정립 및 레거시 전환 지원
교육
충북대학교
대학교(학사) | 소프트웨어학부
2017.03. ~ 2023.02. | 졸업
포트폴리오
대외활동
SW 마에스트로 15기 Expert
SW 마에스트로
프론트엔드 기술 멘토링 및 상담 활동