
공공데이터를 쉽게 조회할 수 있는 오픈소스 라이브러리
2024.10.14 ~ 2024.11.19 (6주)
라이브러리 사용법과 데이터 종류가 나와있는 가이드라인 페이지 구현
공공데이터를 제공해야하는 라이브러리 특성상 사용자 입장에서 지연이 없는 SSR 방식 구현을 위해 사용했습니다.
2023년 Star를 가장 많이 받은 CSS 툴인 Shadn.ui의 사용 경험을 위해 사용했습니다.
사용 데이터를 간편하게 관리하고, 검색도 쉽게 가능하게 하기 위해 사용했습니다.
공공데이터 라이브러리에서 제공하는 데이터는 약 200개 이상의 필드로 구성된 대용량 JSON(평균 1.5MB 이상)이었고, 이를 한 번에 렌더링하면서 페이지 초기 로딩 시간이 평균 5초 이상 소요되었습니다. 또한 수백 개의 DOM 요소가 동시에 생성되면서 검색 및 스크롤 탐색 과정에서 브라우저 프리징이 발생해 사용자 경험이 크게 저하되는 문제가 있었습니다.
데이터 구조와 사용자 사용 패턴을 분석한 결과, 초기 화면에서는 핵심 필드(약 10~15개)만 표시하고 상세 정보는 사용자가 클릭했을 때 비동기로 가져오는 지연 로딩(Lazy Loading) 구조를 설계했습니다. React의 useEffect와 IntersectionObserver를 활용해 스크롤 위치에 따라 필요한 컴포넌트만 렌더링하도록 구현했으며, API 호출 시점을 사용자 인터랙션 기준으로 분리해 불필요한 데이터 fetch를 줄였습니다.
초기 로딩 시 전달되는 데이터 크기를 약 1.5MB → 300KB 수준으로 줄여 페이지 로딩 시간을 평균 5초 → 0.9초로 약 80% 이상 단축했습니다. 또한 한 번에 생성되던 DOM 요소 수를 약 70% 이상 줄이면서 브라우저 프리징 현상이 사라졌고, API 호출 횟수도 약 40% 감소해 서버 부하까지 함께 개선할 수 있었습니다.