
지역어 학습 서비스 프로젝트
2024.07.08 ~ 2024.08.16 (7주)
회원 데이터 API 통신 아키텍처 설계 및 관리자 페이지 UI/UX 설계
SSR(Server Side Rendering) 기술을 통해 사용자들에게 보다 빠른 서비스를 제공하려고 했습니다.
개발 측면에서 유지 보수성과 협업에 좋은 TypeScript 활용를 활용했습니다.
별도로 CSS 파일 작성이 아닌 Tailwind를 통해 CSS를 보다 쉽고 빠르게 적용하기 위해 사용했습니다.
사용자 티어, 스트릭, 학습 기록 등의 데이터를 여러 페이지에서 동시에 사용해야 했지만, 각 컴포넌트마다 개별적으로 API 호출 로직을 작성하면서 동일한 요청이 반복되는 문제가 발생했습니다. 실제로 한 페이지 진입 시 최대 6~8개의 중복 API 호출이 발생했고, 데이터 로딩 지연으로 초기 렌더링 시간이 평균 2초 이상 소요되는 등 성능 저하와 코드 유지보수 어려움이 발생했습니다.
React의 컴포넌트 기반 구조를 활용해 사용자 데이터 요청 로직을 Custom Hook으로 분리했습니다. 공통 Hook에서 API 호출, 로딩 상태, 에러 처리를 통합 관리하도록 설계하여 Header, 학습 페이지, 게임 페이지, 프로필 페이지 등 여러 컴포넌트에서 동일한 데이터를 재사용할 수 있도록 개선했습니다. 이를 통해 데이터 요청 흐름을 단일화하고, 불필요한 중복 호출을 방지하도록 구조를 리팩토링했습니다.
중복 API 호출을 페이지당 평균 6~8회에서 2~3회 수준으로 약 60% 이상 줄였으며, 초기 렌더링 시간도 약 2초 → 0.8초 수준으로 단축되었습니다. 또한 사용자 프로필 페이지에 주간 스트릭 달성 여부를 시각적으로 표시하는 캘린더형 UI를 추가해 학습 패턴을 직관적으로 확인할 수 있도록 했고, 관련 로직을 공통 Hook으로 관리하면서 코드량도 약 30% 이상 감소해 유지보수성이 개선되었습니다.