📅 Sense Stock 개발 일지 (2025-07-15)
n8n, 사용자 질의 기반 경제/시장/주식 분석 자동화 파이프라인 구축 중 진행한 작업들을 정리합니다.
오늘은 n8n 기반으로 수집한 Market Data를 Google Sheet에서 불러오는 대신, 로컬 파일로 저장 후 참조하는 구조를 설계했습니다.
지난번에는 전체 데이터를 어떤 구조로 분류하고, 어떤 시트에 저장할지를 중심으로 정리했었다.
이번엔 그 데이터를 GPT가 실시간으로 어떻게 참조할 수 있을까?에 집중했다.
Google Sheet에 데이터를 저장하는 건 편리하다.
하지만 불특정 다수의 사용자가 GPT를 통해 데이터를 참조하게 될 경우,
Google Sheet API를 계속 호출해야 하고, 그건 Rate Limit에 바로 걸린다.
실제로 여러 번 겪어봤다. 데이터가 쌓이면 쌓일수록 API 호출이 많아지고, 속도도 느려지고, 불안정해진다.
그래서 생각한 게 캐시(Cache) 구조다.
이번엔 실제로 Redis 같은 캐시 시스템을 구축하진 않았고,
우선은 로컬 파일 저장 → 그 파일을 GPT가 참조하는 구조로 설계해보기로 했다.
🧱 Workflow 구조
🗂 데이터 흐름 정리
1. Daily Economic / Earning 데이터
- 매일 어제 기준으로 크롤링 → 저장
- 월요일이면 어제가 일요일이기 때문에 데이터 없음 → 에러 무시 처리, 추후 if 노드 활용
- Daily Sheet 따로 만들지 않고, 기존 ThisWeek 시트에 계속 업데이트
- 업데이트 매칭 기준:
- Economic: 이벤트명
- Earning: 회사명
2. 데이터 저장 & 참조 구조
- 수집된 데이터를 Google Sheet로 정리한 뒤, 로컬 폴더에 CSV로 저장
- 예시 경로:
- market_data/Sector_S&P500/S&P500_Daily.csv
- market_data/Economic/Economic_ThisWeek.csv
- 저장은 Read/Write Disk Node를 통해 수행(아래 내용 확인 必)
- 예시 경로:
Docker로 n8n Self 호스팅으로 작업하는 경우 해당 노드(Read/Write Disk)로
파일에 접근할때, 접근 권한 Error가 발생할 수 있다. 👀
🔒 Docker 환경에서 파일 접근 문제
n8n의 Docker 환경에서는 보안상 특정 경로 외에는 파일을 읽을 수 없다.
이를 해결하려면 환경변수를 반드시 지정해줘야 한다.
## .n8n 디렉토리와 사용자 정의 구성 파일에 대한 모든 파일 접근을 차단(True, Default)
* N8N_BLOCK_FILE_ACCESS_TO_N8N_FILES=False
## 지정경로에 있는 파일 접근 제한
* N8N_RESTRICT_FILE_ACCESS_TO= 지정경로
## 지정경로는 보통은 아래와 같을거다
- home/node/.n8n
이후
docker-compose.yml 파일이 있는 경로로 이동후
docker-compose down
docker-compose up -d
접근 권한 관련 Error가 나면 환경변수를 설정해주자!!!
+ "N8N_RESTRICT_FILE_ACCESS_TO" 의 경우,
: (클론)으로 나눠서 두개 폴더에만 접근가능하게 해봤는데, 접근 권환 Error가 났다.
분명 클론으로 여러 파일을 지정할 수 있다고하는데...
폴더는 하나만 지정되는건가..?? 혹시라도 여러 폴더를 사용하고싶다면 폴더하나를 지정하고,
거기 안에서만 사용하도록만들자.
N8N_RESTRICT_FILE_ACCESS_TO 환경변수는 설정한 경로를 제한하는 것이다.(내용 수정)
파일 접근 권한을 사용할려면, N8N_BLOCK_FILE_ACCESS_TO_N8N_FILES을 false를 해주면 되겠다.
공식문서: https://n8n-docs.infograb.net/hosting/configuration/environment-variables/security/
n8n 공식 기술 문서 한글판 by 인포그랩
인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 n8n 공식 문서의 한글판을 국내 최초로 제공합니다.
n8n-docs.infograb.net
🧠 진행 중 고민한 점들
🔹 아직 해결 안된 Daily Data 크롤링 실패 문제
- 종종 데이터를 못 긁어오는 경우가 생김
- 정확히 어떤 조건에서 실패하는지 분석 필요
- 우선적으로는 실패시 무시 -> Retry 활성화
🔹 최종적으로는 Redis 또는 Supabase 등으로 확장할 계획
- 지금은 임시 구조지만, 향후 사용자 수가 많아지면 TTL 기반 캐시로 전환이 불가피할 것
이제 Local에 취합한 데이터들을 저장하고, 그걸 기반으로 안정적으로 참조할 수 있는 흐름을 만들 수 있을 것 같다.
근데 이 작업이 생각보다 오래 걸렸다. 자꾸만 생각이 많아져서 한 발짝 내딛는 것도 쉽지 않았다.
데이터라는 게 단순히 "쌓는다"로 끝나는 게 아니구나. 어떻게 저장하고, 어떻게 꺼내 쓰고, 언제 갱신하는지까지 다 얽혀 있다.
진짜, 하나 건드리면 열 가지가 딸려오는 구조였다. 이렇게까지 복잡할 줄은 몰랐다. 모든 게 연결돼 있다는 걸 실감했다.
생각할게 너무 많아서 버거울 정도다.... 혼자는 외롭ㄷ🥴
❓ 다음 단계에서 고민 중인 것들
- 최종 응답을 검토하면서, 이제는 데이터를 더 많이 모으는 운영 단계로 넘어가야 할 것 같다.
'Automation Tool > n8n Project' 카테고리의 다른 글
Sense Stock, D+21 (4) | 2025.08.04 |
---|---|
Sense Stock, D+20 (3) | 2025.07.28 |
Sense Stock, D+18 (0) | 2025.07.15 |
Sense Stock, D+17 (0) | 2025.07.11 |
Sense Stock, D+16 (3) | 2025.07.09 |
댓글