개발자가 dev.to 블로그 통계 확인을 위해 브라우저 대신 터미널 활용을 모색함
Go 프로그램과 devdash를 연동하여 실시간 통계 대시보드를 구축함
API 요청 과부하 및 제목 내 쉼표 오류 등 두 가지 주요 버그를 해결하며 완성도를 높임
개발자는 dev.to에서 제공하는 `/api/articles/me` 엔드포인트를 통해 API 키를 헤더에 포함시켜 자신의 게시물 데이터를 직접 가져왔습니다. 이 API는 반응 수(Reactions), 조회 수(Page Views), 댓글 수(Comments) 등 필요한 통계 정보를 이미 집계하여 제공하므로, 별도의 웹 스크래핑이나 HTML 파싱 없이 효율적인 데이터 수집이 가능했습니다.
데이터 형식: JSON (구체적 스키마는 본문에 미포함)
인증: `api-key` 헤더를 통한 인증 방식 사용
결과: 각 게시물별 핵심 통계 지표를 즉시 활용 가능
이처럼 공개된 API 엔드포인트(Public API Endpoint)를 활용하는 것은 외부 서비스 데이터를 연동하는 가장 안정적이고 권장되는 방식입니다.
이 프로젝트는 기존 TUI(Terminal User Interface) 프레임워크를 직접 구축하는 대신, devdash라는 오픈소스 터미널 대시보드 도구를 활용했습니다. devdash는 YAML 설정 파일을 통해 레이아웃, 위젯, 색상 등을 선언적으로 정의할 수 있으며, 특히 `lh.table` 위젯은 쉘 명령의 출력을 테이블 형태로 렌더링하는 기능을 제공합니다.
핵심 기능: 쉘 명령 실행 및 결과 테이블 렌더링
설정 방식: YAML 기반의 선언적 구성
장점: 기존 도구의 유연성(Flexibility)을 활용하여 dev.to API 연동 로직만 구현
이 방식은 개발자가 UI 구현 부담 없이 핵심 로직에 집중할 수 있게 해주며, 아카이브된 프로젝트(Archived Project)의 재활용이라는 측면에서도 흥미로운 접근입니다.
개발 과정에서 두 가지 주요 문제에 직면했습니다. 첫 번째는 devdash의 동시 위젯 렌더링으로 인해 dev.to API에 동시에 여러 요청이 발생하며 429 Too Many Requests 오류가 발생한 것입니다. 이를 해결하기 위해 Go 프로그램에 재시도 로직(Retry Logic)과 백오프 및 지터(Backoff with Jitter)를 구현하여 요청 간격을 조절했습니다.
두 번째 문제는 게시물 제목에 포함된 쉼표(,)가 devdash의 테이블 파싱 로직과 충돌하여 데이터가 잘못 표시된 것입니다. 이 문제는 devdash 소스 코드 수정 없이, Go 프로그램에서 제목을 슬러그화(Slugify)하고 쉼표를 제거하는 방식으로 해결했습니다.
429 오류 해결: 재시도 로직 및 지터 기반 백오프 구현
쉼표 오류 해결: 제목에서 쉼표 제거 및 공백 기반 재구성
이러한 문제 해결 과정은 외부 서비스 연동 시 발생할 수 있는 예상치 못한 문제에 대한 실용적인 대처 방안을 보여줍니다.