[portfolio](https://geonwoo.kim/ko/portfolio) › 개인

# 글로티커 · 거시경제 지표 크롬 익스텐션

https://geonwoo.kim/ko/portfolio/gloticker

기간: 2025.03 — 2025.05

금융 지표를 확인할 때마다 4~5개 사이트를 오가야 해서 만들었습니다. 수집 서버(FastAPI)와 스트리밍 서버(Spring Boot)를 나눠 홈서버에서 운영했습니다.

7개국 이상에서 누적 사용자 300명 이상

- [github](https://github.com/gloticker)

팀: 1인

역할: 기획·디자인 · FastAPI 수집 서버 · Spring Boot 스트리밍 서버 · 프론트엔드 · 홈서버 · CI/CD · 모니터링

Java 17 · Spring Boot · Python · FastAPI · Redis 7.2 · React · Proxmox · Docker · Nginx Proxy Manager · Jenkins · Prometheus · Grafana

- 지수 실시간 시세: 나스닥, S&P 500, 다우존스, 러셀 2000, 국채 20년, VIX, 공포탐욕 지수
- 주식 시세: Magnificent 7(애플, 엔비디아, 마이크로소프트, 아마존, 구글, 메타, 테슬라)
- 암호화폐 시세: 비트코인, 이더리움, 솔라나, 도미넌스
- 환율: 달러 지수, 원화 기준 달러·유로·위안·엔
- Redis 메시지 큐 기반 SSE 실시간 갱신
- ChatGPT API 시황 분석
- 30일 일봉 차트
- 숨김·테마·언어 설정

## 스크래핑 차단

문제: yfinance 호출이 많아지자 429가 나고, 일부 서버는 bot으로 보고 401을 돌려줬습니다. 막히지 않으면서 시세를 자주 받을 수 있는 호출 빈도를 찾아야 했습니다.

해결: 여러 포럼을 참고해 초당 1회가 적당하다고 보고, 호출 간격을 1~1.2초 사이 랜덤으로 두었습니다. 호출마다 유효한 랜덤 헤더를 붙여 bot으로 인식되는 문제를 피했습니다. 공포탐욕 지수·도미넌스·환율처럼 짧은 시간에 크게 변하지 않는 값은 1분마다 갱신했습니다.

## 팝업마다 몰리는 API 요청

문제: 익스텐션 팝업을 열 때마다 종목별 가격·변동률, 차트, SSE 구독, 분석 결과 API가 한꺼번에 호출됐습니다. 홈서버라 부하를 미리 막아야 했습니다.

해결: Redis에 최신 데이터 스냅샷을 캐시해 한 번에 보내고, 익스텐션 로컬 스토리지에 최신 데이터와 수신 시각을 남겼습니다. 수집 1회에 평균 23초가 걸리므로, 마지막 수신이 20초 안이면 SSE 구독만 보냈습니다. 차트는 30일 일봉이라 장 종료 때 한 번만 받고, Bucket4j로 클라이언트당 10초 6회로 제한했습니다.

## 아키텍처

Proxmox 위의 Nginx, 모니터링, Jenkins, 수집·스트리밍 서버를 보여 주는 글로티커 배포 구조도

시세 수집과 스트리밍 서버를 Proxmox에서 운영합니다.

글로티커 로고와 이름을 배치한 검은색 커버

글로티커 로고 커버

지수와 종목, 미니 차트가 보이는 글로티커 홈 화면

종목, 암호화폐, 환율 항목을 고르는 글로티커 설정 화면

AI 시장 분석 패널이 열린 글로티커 화면


[보르테소 · 커피 기록 앱](https://geonwoo.kim/ko/portfolio/vortesso) · [언더더키 · 커스텀 키보드 플랫폼](https://geonwoo.kim/ko/portfolio/underthekey)
