- 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
8.2 KiB
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 환경에서의 개발 편의성과 운영 안정성을 모두 고려한 구성입니다.