Files
news-project/TECH_STACK.md
hyungi 2fb0637ad1 📚 Add comprehensive setup documentation
- TECH_STACK.md: Complete technology stack overview
- HOMEBREW_SETUP.md: macOS development environment setup guide
- SYNOLOGY_SETUP.md: General Synology NAS installation guide
- DS1525_OPTIMIZED_SETUP.md: DS1525+ 32GB RAM optimized configuration

Features:
 Multi-platform deployment options (Mac/NAS)
 Performance optimization for different hardware specs
 Docker-based containerization
 Monitoring and logging setup
 Automated backup and maintenance scripts
 SSD optimization for longevity
2025-09-14 12:23:35 +09:00

8.2 KiB

🛠️ 기술 스택 (Tech Stack)

📋 개요

산업 전문 정보 수집 시스템의 기술 스택을 정리한 문서입니다. 각 기술의 선택 이유와 역할을 포함하여 설명합니다.


🖥️ Backend

핵심 프레임워크

  • Python 3.11+

    • 선택 이유: 풍부한 NLP 라이브러리 생태계, 데이터 처리 최적화
    • 역할: 메인 백엔드 언어
  • FastAPI

    • 선택 이유: 고성능 비동기 처리, 자동 API 문서 생성, 타입 힌팅 지원
    • 역할: REST API 서버, 웹 애플리케이션 백엔드

데이터베이스 & 검색

  • PostgreSQL

    • 선택 이유: 구조화된 메타데이터 저장, ACID 트랜잭션, JSON 지원
    • 역할: 메인 데이터베이스, 사용자 정보, 문서 메타데이터
  • Elasticsearch

    • 선택 이유: 전문 검색, 다차원 필터링, 실시간 검색 성능
    • 역할: 문서 검색 엔진, 태그 기반 필터링, 전문 검색
  • Redis

    • 선택 이유: 고속 캐싱, 세션 관리, 실시간 데이터 처리
    • 역할: 캐시 레이어, 검색 결과 캐싱, 트렌딩 데이터

NLP & 데이터 처리

  • spaCy

    • 선택 이유: 산업용 NLP, 커스텀 모델 지원, 한국어 지원
    • 역할: 개체명 인식(NER), 기술 용어 추출
  • Transformers (Hugging Face)

    • 선택 이유: 최신 언어 모델, 의미 기반 검색
    • 역할: 문서 임베딩, 의미 유사도 계산
  • scikit-learn

    • 선택 이유: 머신러닝 파이프라인, 텍스트 분류
    • 역할: 문서 분류, 태그 예측, 트렌드 분석

비동기 처리 & 스케줄링

  • Celery

    • 선택 이유: 분산 태스크 큐, 스케줄링 지원
    • 역할: RSS 수집, 논문 처리, 배치 작업
  • Redis (Broker)

    • 선택 이유: Celery 메시지 브로커, 고성능
    • 역할: 태스크 큐 브로커

문서 처리

  • PyPDF2 / pdfplumber

    • 선택 이유: PDF 텍스트 추출, 메타데이터 파싱
    • 역할: 논문 PDF 처리, 기술 문서 분석
  • BeautifulSoup

    • 선택 이유: HTML 파싱, 웹 스크래핑
    • 역할: RSS 피드 처리, 웹사이트 크롤링
  • Scrapy

    • 선택 이유: 대규모 웹 크롤링, 비동기 처리
    • 역할: 표준 기관 웹사이트 모니터링

🎨 Frontend

핵심 프레임워크

  • React 18

    • 선택 이유: 컴포넌트 기반 개발, 풍부한 생태계
    • 역할: 사용자 인터페이스 구축
  • Next.js 13+

    • 선택 이유: SSR/SSG 지원, 성능 최적화, 파일 기반 라우팅
    • 역할: React 애플리케이션 프레임워크

UI & 스타일링

  • Tailwind CSS

    • 선택 이유: 유틸리티 우선, 빠른 개발, 일관된 디자인
    • 역할: CSS 프레임워크, 반응형 디자인
  • Material-UI (MUI)

    • 선택 이유: 전문적인 UI 컴포넌트, 접근성 지원
    • 역할: 복잡한 UI 컴포넌트 (테이블, 폼 등)

데이터 시각화

  • D3.js

    • 선택 이유: 고도로 커스터마이징 가능한 시각화
    • 역할: 기술 네트워크 그래프, 복잡한 차트
  • Chart.js

    • 선택 이유: 간단한 차트 생성, React 통합
    • 역할: 트렌드 차트, 통계 그래프

검색 & 상호작용

  • Algolia InstantSearch
    • 선택 이유: 실시간 검색, 자동완성, 필터링
    • 역할: 검색 UI 컴포넌트

🔧 전문 분야 도구

학술 데이터 수집

  • arXiv API

    • 선택 이유: 물리학/공학 논문 접근
    • 역할: 최신 연구 논문 수집
  • PubMed API

    • 선택 이유: 의학/보건 관련 논문
    • 역할: 산업안전 의학 연구 수집
  • IEEE Xplore API

    • 선택 이유: 전기/전자/컴퓨터 공학 논문
    • 역할: 기술 표준 및 연구 논문 수집

표준 모니터링

  • ASME 웹사이트 크롤러

    • 선택 이유: 압력용기 표준 업데이트 추적
    • 역할: BPVC 등 표준 변경사항 모니터링
  • KGS 웹사이트 크롤러

    • 선택 이유: 한국 가스안전 기준 추적
    • 역할: 국내 압력용기 기준 업데이트
  • API 웹사이트 크롤러

    • 선택 이유: 석유/가스 산업 표준 추적
    • 역할: API 표준 업데이트 모니터링

전문 용어 처리

  • 압력용기 전문 용어 사전

    • 선택 이유: 정확한 기술 용어 인식
    • 역할: NER 모델 학습 데이터
  • 플랜트 장비 분류 체계

    • 선택 이유: 체계적인 장비 분류
    • 역할: 태그 정규화 및 분류
  • 산업안전 용어 온톨로지

    • 선택 이유: 안전 분야 전문 용어 체계화
    • 역할: 안전 관련 문서 분류

🏗️ Infrastructure

컨테이너화

  • Docker

    • 선택 이유: 환경 일관성, 배포 간소화
    • 역할: 애플리케이션 컨테이너화
  • Docker Compose

    • 선택 이유: 다중 서비스 오케스트레이션
    • 역할: 로컬 개발 환경 구성

모니터링 & 로깅

  • Prometheus

    • 선택 이유: 시계열 메트릭 수집, 알림 시스템
    • 역할: 시스템 메트릭 모니터링
  • Grafana

    • 선택 이유: 메트릭 시각화, 대시보드
    • 역할: 모니터링 대시보드
  • ELK Stack (Elasticsearch, Logstash, Kibana)

    • 선택 이유: 중앙화된 로그 관리, 검색 가능한 로그
    • 역할: 애플리케이션 로그 수집 및 분석

CI/CD

  • GitHub Actions
    • 선택 이유: GitHub 통합, 무료 사용량
    • 역할: 자동 빌드, 테스트, 배포

스토리지

  • MinIO (S3 호환)
    • 선택 이유: 오픈소스 객체 스토리지, S3 호환성
    • 역할: 논문 PDF, 이미지 파일 저장

🍺 macOS 개발 환경 (Homebrew 기반)

패키지 매니저

  • Homebrew
    • 선택 이유: macOS 표준 패키지 매니저
    • 역할: 개발 도구 설치 및 관리

필수 개발 도구

# 언어 런타임
brew install python@3.11    # Python 런타임
brew install node@18        # Node.js 런타임

# 데이터베이스
brew install postgresql     # PostgreSQL 데이터베이스
brew install redis         # Redis 캐시/브로커

# 검색 엔진
brew install elasticsearch  # Elasticsearch 검색 엔진

# 개발 도구
brew install git           # 버전 관리
brew install htop          # 시스템 모니터링

# GUI 애플리케이션
brew install --cask docker          # Docker Desktop
brew install --cask visual-studio-code  # IDE

서비스 관리

# 서비스 시작
brew services start postgresql
brew services start redis
brew services start elasticsearch

# 서비스 상태 확인
brew services list

📊 성능 최적화 전략

캐싱 계층

L1: Redis (실시간 검색 결과, 트렌딩 태그)
L2: PostgreSQL (구조화된 메타데이터, 사용자 프로필)
L3: Elasticsearch (전문 검색, 태그 인덱스)
L4: MinIO/S3 (원본 문서, 논문 PDF)

메모리 최적화 (Mac mini 8GB 기준)

# Elasticsearch JVM 설정
export ELASTICSEARCH_JAVA_OPTS="-Xms512m -Xmx1g"

# Redis 메모리 제한
export REDIS_MAXMEMORY="256mb"

# Python 프로세스 최적화
export PYTHONOPTIMIZE=1

검색 성능 최적화

  • 사전 계산: 자주 검색되는 조합 캐싱
  • 인덱스 최적화: 전문 용어 기반 역색인
  • 벡터 검색: BERT 기반 의미 검색
  • 지역별 샤딩: 데이터 분산 저장

🔄 데이터 파이프라인

수집 → 처리 → 저장 → 검색

RSS/API 수집 → NLP 태그 추출 → PostgreSQL 저장 → Elasticsearch 인덱싱 → Redis 캐싱

실시간 처리

  • RSS 모니터링: 5분마다 새 피드 확인
  • 논문 동기화: 일일 1회 학술 DB 스캔
  • 표준 업데이트: 주간 공식 사이트 모니터링

🚀 확장성 고려사항

수평 확장

  • 마이크로서비스: 기능별 서비스 분리
  • 로드 밸런싱: 검색 서비스 다중 인스턴스
  • 데이터베이스 샤딩: 지역/분야별 데이터 분산

성능 모니터링

  • 메트릭 수집: 응답 시간, 처리량, 에러율
  • 알림 시스템: 임계값 초과 시 자동 알림
  • 용량 계획: 데이터 증가율 기반 리소스 계획

이 기술 스택은 산업 전문 정보의 특성을 고려하여 선택되었으며, macOS 환경에서의 개발 편의성과 운영 안정성을 모두 고려한 구성입니다.