수집기 모듈
marginking-data-collectors 는 모듈별 컨테이너로 구성됩니다. 각 모듈은 index.mjs(엔트리 + Sentry 초기화 + 스케줄 등록)와 항목별 콜렉터 디렉터리로 이루어지며, 공통 로직은 libs/ 에 있습니다.
한눈에 보기
| 모듈 | 소스 | 저장소 | 비고 |
|---|---|---|---|
| onchain | coinglass · coinank · Hyperliquid | Redis | coinglass 디코더, liqmap은 SOCKS |
| markets | investing · nasdaq · 거래소 | Redis | 일부 SOCKS 경유, kimp 선계산 |
| news | coinness · sedaily · stockhub | RDS + Redis | 일반=DB, 롤링뉴스=redis |
| themes | coinness | Redis | theme_{interval} |
| calendars | investing | RDS | 경제캘린더 DB 적재 |
| coinmarkets | 거래소 · coinglass | RDS(marginking-db) | 랭킹/트렌드/오더블록 |
| crypto-exchange | ccxt(6개 거래소) | Redis | 1초 폴링 |
| whales | Binance · Bybit WS | RDS(whale) | 유일한 MySQL 수집기 |
onchain
온체인/파생 지표. 항목별 콜렉터 디렉터리 구조(onchain/<item>/index.mjs).
- 소스: coinglass(대부분,
libs/coinglass디코더), coinank(visualmap= visualScreener), Hyperliquid(whale-positions), marginking-db(top-traders의tracked_trader목록 조회) - 저장: Redis (
altindex,funding_rate_hitmap,rsi_hitmap,liq_symbols,rektinfo,whale_positions,top_traders,liqmap,mvrv,visualmap_{interval},liq_hitmap_{pair}_{i}_{l},liquidationinfo_{time}_{symbol},liquidationheatmap2_{time}_{type}) - 특이: coinglass 호출은
fetchCoinglass(url,{direct,retries,socksUrl})— 간헐 null 내장 재시도, liqmap 만 상용 SOCKS egress(IP 게이팅 우회).mvrv= coinglassmarv/z-score+ binance 일봉 btcPrice 머지.
markets
시장 지표.
- 소스: investing/nasdaq(일부 SOCKS 경유), 환율/도미넌스/테더, 거래소 티커(업비트·빗썸), coinglass(롱숏/청산카운트 등)
- 저장: Redis (
nasdaq,exchange_rate,dominance,tether_price,kimp,fear_greed,spot_ddari,feds,cme,longshort_ratio,ub_tickers,ub_rised,liq_count) - 특이:
kimp·spot_ddari는 프리미엄을 선계산해 적재. nasdaq/investing 류는 상용 SOCKS 프록시 경유.
news
뉴스.
- 소스: coinness, sedaily, stockhub
- 저장: 일반 뉴스 → RDS
news(목록/단건 조회). 네비바 롤링뉴스(경제) → Rediseconomic_news - 특이: 백엔드 뉴스크론 이관분.
themes
코인 테마(섹터).
- 소스: coinness 테마
- 저장: Redis
theme_{interval}(1d/1w/1M/3M/6M)
calendars
경제 캘린더.
- 소스: investing.com (SOCKS 경유)
- 저장: RDS
economic_calendar— 과거분 백필 + 신규분 주기 적재(DB 전용). data-api 가 from/to/minStars 로 조회.
coinmarkets
백엔드 마켓 크론 이관분(랭킹/트렌드/오더블록).
- 소스: 거래소 데이터, coinglass(오더블록 유동성 히트맵, 디코더 direct)
- 저장: RDS marginking-db
- 특이: 일부 in-memory 크론은 이관 진행 중.
crypto-exchange
거래소 티커 폴링.
- 소스: ccxt — Binance/Bybit/OKX/Gate(현물·선물), Upbit/Bithumb(현물)
- 저장: Redis
ticker:{exchange}:{market}(심볼별{last,bid,ask,pct,ts}맵) - 주기: 1초 폴링
whales
고래 체결/청산.
- 소스: Binance/Bybit WebSocket(체결 + 청산 스트림)
- 저장: RDS whale (유일한 MySQL 적재 수집기)
- 소비: data-api
/api/v1/whaletx,/api/v1/liquidation(raw 응답)
공통 라이브러리 (libs/)
| 라이브러리 | 역할 |
|---|---|
config/secrets | AWS Secrets Manager 로더(시크릿별 메모이즈) |
db/redis | Redis 클라이언트(에러 captureException) |
db/mysql | RDS 풀 2종(main/whale), 풀 레벨 error → Sentry |
coinglass | 로그인/OTP/복호화 디코더 + fetchCoinglass(direct/SOCKS/retry) |
coinank · coinness | 각 소스 API 클라이언트(서명/페이로드 포팅) |
observability/sentry | GlitchTip init + reportError/captureException |
net/proxy | 상용 SOCKS URL(getSocksProxyUrl) — investing/coinglass-liqmap egress |
배포 (Docker)
- 공용 Dockerfile(
ARG MODULE)로 모듈마다 이미지 빌드, distroless 런타임. docker-compose.yml에 모듈별 서비스 정의(모듈에 맞는 env: redis/DB 터널, SOCKS 등).- 예)
docker compose up -d --build onchain