뱅크몰은 금융 상품 비교 및 대출 관련 서비스를 제공하는 핀테크 플랫폼으로 대출 비교 서비스, 금융상품 추천, 신용 분석 등을 다루며, 다양한 금융사와 제휴하여 사용자들에게 맞춤형 금융 정보를 제공합니다. 프론트엔드 개발자로 근무하며 전반적인 프론트엔드 개발을 담당했습니다.
### 주요 업무
1. 코딩 컨벤션 문서화 및 husky를 이용한 자동화 도구(commitlint, lint-staged, Stylelint) 도입
Problem
- 팀 합류 당시 개발 관련 문서가 없어 기존 코드 히스토리를 파악하기 어려웠음
- 코딩 컨벤션이 정해져 있지 않아 팀원별로 코드 스타일이 달라 가독성과 유지보수성이 저하됨
Solution
- 브랜치 전략 및 코딩 컨벤션을 정립하고, 이를 노션 문서화하여 팀원들이 참고할 수 있도록 함
- Husky, commitlint, lint-staged, Stylelint를 활용하여 코드 스타일을 자동화하고 개발 일관성을 확보
2. Next.js & React 버전 업그레이드 (Next.js 10.2 → 13.5, React 17 → 18)
Problem
- 레거시 환경에서 개발이 진행되면서 새로운 기능 추가 시 기술 부채 증가
- Next.js의 성능 이슈로 빌드 시간이 증가하고 유지보수가 어려움
Solution
- Stable한 최신 버전(Next.js 13.5, React 18)으로 업그레이드하여 성능 개선
- 신규 API 및 최적화 기능 활용하여 빌드 속도 단축 및 개발 생산성 향상
3. Suspense와 Error Boundary를 사용한 선언적 UI 처리
Problem
- 기존 코드에서는 로딩 및 에러 처리가 개별 컴포넌트 내부에 분산되어 있어 관심사의 분리가 어려움
Solution
- Suspense를 사용하여 로딩 상태를 컴포넌트 단위로 관리
- Error Boundary를 활용하여 API 응답 코드에 따른 에러 처리 체계 구축
- 전역 Error Boundary를 적용하여 예외 처리의 일관성을 확보
4. 타입스크립트 도입 및 점진적 마이그레이션
Problem
- 팀 내 타입스크립트 도입이 전무한 상태였으며, 운영 중 런타임 오류 발생 후 hotfix로 급하게 대응하는 일이 빈번하게 발생
Solution
- 타입스크립트를 도입하여 컴파일 시점에 에러를 사전 검출
- 팀 내 타입스크립트 스터디 운영 및 도입 가이드 제공
- 점진적 마이그레이션을 통해 1년 내 전체 코드베이스의 40% 이상을 타입스크립트로 변환
5. 아이콘 생성 자동화
Problem
- 아이콘 추가 방식이 통일되지 않아 SVG 직접 작성 또는 개별 파일 import 방식이 혼재
- 공통적인 아이콘 관리 체계가 없어 유지보수 및 재사용성이 떨어짐
Solution
- SVG 파일을 React 컴포넌트로 자동 변환하는 스크립트 개발
- npm 명령어 실행만으로 `<Icon name="ArrowLeft" />` 형태로 아이콘을 사용할 수 있도록 개선
6. 상태 관리 도구 변경 (Redux → TanStack Query & Recoil)
Problem
- 기존 코드에서는 Redux를 사용하여 서버 상태와 클라이언트 상태를 동일한 Store에서 관리
- useEffect와 useState사용으로 지역적으로 상태관리를 하고 있었기 때문에 API 요청이 중복 실행되는 문제 발생
Solution
- TanStack Query를 도입하여 서버 상태와 클라이언트 상태를 분리
- API 별 캐싱 정책 적용으로 불필요한 API 호출을 줄이고 응답 속도 개선
7.테스팅 환경 구축 및 테스트 코드 도입
Problem
- 기존에는 테스트 코드가 없어 대출 관련 복잡한 시나리오를 코드 레벨에서 검증하기 어려움
- QA 단계에서 발견되는 오류가 많아, 개발 생산성 저하
Solution
- Jest & React Testing Library 기반의 단위 테스트 및 통합 테스트 환경 구축
- MSW를 활용한 API Mocking으로 테스트 환경에서 안정적인 데이터 테스트 가능
查看更多