Coinvestor
투자자와 트레이더를 위한 플랫폼인 Coinvestor, 트레이더 유저를 위한 Trading Room과 UI 라이브러리 및 서비스 관리 사이트를 개발 및 유지보수하고 있습니다.
사용기술
Typescript, Next.js, Recoil, React-query, TailwindCSS, Next-i18next, Jest, CircleCI, Github Actions, Storybook
신규 기능 개발 및 고도화
2023.04 ~ 2024.07- 고정 수익형 펀드 상품 UX 기획단계 참여 및 신규 개발
- 3가지(Quant, Spot, Earn) 펀드 상품 결제 기능 및 UI 공용 컴포넌트 개발
- 문제 진단: 기존 펀드 결제 input 컴포넌트 UX의 문제점들을 진단하여 문서화. 이후 기획자 및 디자이너와 논의한 뒤 사업팀에 전달하여 UX 정책 수정
- 성과: 펀드 결제 기능 고도화 이후 Google Analytics 구매 이벤트 302% 증가 및 펀드 상품 총 투자금 108.2% 증가
- 펀드 스케줄에 따른 UI 상태 관리 공용 클래스, 메서드를 통해 개발 생산성 향상
- Quant 상품 준비/구독/운영/정산 상태 관리 로직 개발하여 펀드 마켓과 디테일 페이지의 UI 일관성 유지
- Spot 상품 구매/판매/취소 상태 관리 로직 개발
- 표시 규칙 정책에 따른 수치 데이터 가공 공용 로직 개발하여 정확한 정보 전달
- Stat 컴포넌트 디자인 시스템 라이브러리에 추가 개발 및 숫자 가공 로직 개발하여 생산성 개선
- 디테일 페이지의 댓글 기능을 공용 컴포넌트로 추상화하여 레거시 코드의 복잡성 개선
- 댓글 기능 고도화 이후 활성 사용자 15%, 댓글 참여 이벤트 65% 증가
- 적절한 상태관리와 react-query(v4) 도입으로 레거시 컴포넌트의 props drilling과 api 호출 시 런타임 에러 해결
- 마켓, 펀드 상품 디테일 페이지 사용자 경험 향상을 위한 성능 개선
- SSR에서 ISR로 전환 및 prefetch 적용하여 lighthouse score 67 -> 95 - 100으로 개선
- 페이지 전체 로딩 속도를 약 70% (1.312s -> 399ms) 개선하여 사용자 경험을 개선
- 알고리즘 상품 디테일 페이지 : LCP 80% (2.1 -> 0.4s) CLS 35% (0.416 -> 0.063) 개선
- 매뉴얼 상품 디테일 페이지 : LCP 50% (1.8 -> 0.8s) , CLS 76% (0.762 -> 0) 개선
- 초기 로딩의 hydration 단계를 81% 단축 (1s -> 189.58ms)
- 펀드 데이터 업데이트 시간에 맞춰 API 호출하도록 적절한 캐싱으로 최적화
- 번들링 사이즈 최적화 및 fallback, skeleton ui 개발
- React-Query 도입 및 레거시 코드를 함수형으로 전환하여 개발 생산성 향상
- 펀드 마켓과 펀드 결제 컴포넌트 모바일 기기 반응형 작업으로 사용성 개선
- 펀드 디테일 페이지의 share, favorite, pdf download 구현하여 사용자 경험 강화
- Circle CI와 Vercel을 이용한 자동 배포 환경 구축 및 구축 방법 문서화로 협업 강화
- Jest를 통한 유닛, 통합 테스트 코드를 작성하여 초기 개발 단계에서 버그 방지
- 펀드 결제 프로세스 테스트 커버리지 0 -> 90.19%로 개선
- CircleCI 배포 스크립트를 작성하여 자동 테스트 환경 구축
- 백엔드 OAuth 중앙 인증 서버로 도입으로 프론트 대응
- 인증 로직 및 에러 바운더리 개선
- 문제 진단: 예외처리가 제대로 되지 않아 특정 페이지 전체의 ui가 깨지는 버그 발견. 특정 api의 상태코드 200 에러 응답과 예외처리가 누락된 클라이언트 코드를 파악함.
- 해결: Axios Interceptor의 에러 핸들러와 상태코드 200 에러의 예외처리 로직을 추가하여 중앙화. react-error-boundary, QueryErrorBoundary를 도입하여 에러 전파를 효율적으로 관리. 에러 toast 및 에러 fallback 컴포넌트 노출하도록 개선.
- 인증 토큰 만료시 Refresh 토큰 재요청 로직 개선. 인증 요청과 동일한 refresh 요청의 후속 처리 함수를 추상화하고, async await를 도입하여 Promise 콜백 지옥을 해결함.
- 에러 바운더리 개발 전 dev plan 작성하여 문서화하여 팀원들과 공유. 이 과정에서 api 200 에러를 파악하여 문서화
- 예외처리 정책이 부재한 특정 에러를 파악한 뒤, 기획자와 협업하여 예외처리 공용 정책 개선 및 문서화
Coinvestor 리브랜딩 및 멀티 도메인 구축
2022.11 ~ 2023.03- 리브랜딩과 함께 Next.js로 마이그레이션.
- 서버사이드 렌더링 도입 및 세미나와 문서화를 통해 팀원 숙련도 향상에 기여
- 마이 월렛 페이지의 유저 환전, 송금 기능 구현 및 리팩터링을 통한 코드 개선
- 커뮤니티 페이지 고도화 작업 이후 활성 사용자 15%, 참여 이벤트 65% 증가
- 댓글 구글 번역을 통해 글로벌 사용자 커뮤니티 개선
- 댓글 공용 컴포넌트 재사용 및 react-query 도입하여 레거시 코드 유지 보수성 개선
- 댓글 삭제, 신고하기, 이미지 및 gif 업로드로 사용성 개선
- 다국어 대응: 운영 팀과 협업하여 6개 언어를 지원하여 글로벌 사용자 접근성 향상
- next-i18next 사용하여 서버사이드 다국어 적용
- Next.js 기반 다국어 라우팅 지원
- Trader 사용자의 펀드 관리 대시보드 및 펀드 생성 사이트 별도 도메인으로 구축
- 펀드를 운영하는 Trader 유저가 상품을 등록할 수 있는 Create Strategy 페이지 개발
- 사용자가 생성한 상품을 모니터링 및 관리 할 수 있는 Strategy List 페이지 개발
- Circle ci를 통한 배포 관리 및 유지 보수
- 백오피스 개발: Coinvestor와 펀드 상품 관리를 위한 관리자 페이지 개발을 맡아, 운영팀과 Trader, Affiliate 사용자 레벨이 이용할 수 있도록 개발 및 유지보수했습니다.
- 퀀트 펀드 상품의 정산 이력을 관리하는 'Quant History' 페이지 개발
- 퀀트 상품의 위험 지표를 모니터링하고 설정할 수 있는 'Monitoring' 페이지 개발
- Affiliate 사용자를 관리하는 User Management 개발
- 레거시 코드 리팩터링: react-query 도입, 컴포넌트 추상화 및 props 구조 개선하여 deps 낮추는 등 복잡성을 낮추어 코드 유지 보수성 개선