문서

문서

ActiCrawl을 사용하여 웹 스크래핑 워크플로를 자동화하는 방법을 알아보세요

아키텍처

ActiCrawl의 아키텍처를 이해하면 플랫폼을 최대한 활용하고 웹 스크래핑 워크플로우를 최적화할 수 있습니다.

시스템 개요

ActiCrawl은 신뢰성, 확장성, 성능을 위해 설계된 분산 클라우드 네이티브 아키텍처를 기반으로 구축되었습니다.

text
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  클라이언트 앱  │────▶│   API 게이트웨이 │────▶│   로드 밸런서   │
└─────────────────┘     └─────────────────┘     └─────────────────┘
                                                          │
                                ┌─────────────────────────┴─────────────────────────┐
                                │                                                   │
                        ┌───────▼────────┐                                 ┌────────▼───────┐
                        │    인증 서비스   │                                 │ 요청 제한 서비스│
                        └────────────────┘                                 └────────────────┘
                                │                                                   │
                                └─────────────────┬─────────────────────────────────┘
                                                  │
                                         ┌────────▼────────┐
                                         │   작업 큐      │
                                         │ (Solid Queue) │
                                         └────────┬────────┘
                                                  │
                        ┌─────────────────────────┴─────────────────────────┐
                        │                                                   │
                ┌───────▼────────┐                                 ┌────────▼───────┐
                │ 스크래퍼 워커   │                                 │ 스크래퍼 워커   │
                │   풀 (n)       │                                 │   풀 (n+1)     │
                └────────────────┘                                 └────────────────┘
                        │                                                   │
                        └─────────────────┬─────────────────────────────────┘
                                          │
                                ┌─────────▼─────────┐
                                │  데이터 처리      │
                                │   파이프라인      │
                                └─────────┬─────────┘
                                          │
                        ┌─────────────────┴─────────────────────┐
                        │                                       │
                ┌───────▼────────┐                     ┌────────▼───────┐
                │ 객체 스토리지   │                     │   데이터베이스  │
                │     (S3)       │                     │  (PostgreSQL)  │
                └────────────────┘                     └────────────────┘

핵심 구성 요소

1. API 게이트웨이

모든 클라이언트 요청의 진입점입니다. 주요 책임:
- 요청 라우팅 및 로드 밸런싱
- SSL 종료
- 요청/응답 변환
- API 버전 관리

기술 스택:
- NGINX (리버스 프록시)
- Kong (API 관리)
- CloudFlare (DDoS 방어)

2. 인증 서비스

모든 인증 및 권한 부여 처리:
- API 키 검증
- JWT 토큰 관리
- 권한 확인
- 사용량 추적

특징:
- 밀리초 미만의 인증
- 분산 세션 관리
- 역할 기반 액세스 제어 (RBAC)

3. 작업 큐 시스템

비동기 작업 처리 관리:
- 플랜 등급에 따른 작업 우선순위 지정
- 지수 백오프를 통한 재시도 로직
- 실패한 작업을 위한 데드 레터 큐
- 실시간 작업 상태 업데이트

기술:
- SQLite/PostgreSQL (큐 관리)
- Solid Queue (작업 처리)
- ActionCable (실시간 업데이트)

4. 스크래퍼 워커

스크래핑 엔진의 핵심:
- 헤드리스 브라우저 관리 (Chrome/Firefox)
- JavaScript 렌더링
- 쿠키 및 세션 처리
- 탐지 방지 조치

주요 기능:
- 동적 워커 스케일링
- 브라우저 핑거프린트 랜덤화
- 자동 프록시 로테이션
- 리소스 최적화

5. 데이터 처리 파이프라인

원시 스크래핑 데이터 변환:
- HTML 파싱 및 정리
- 콘텐츠 추출
- 형식 변환 (마크다운, JSON 등)
- AI 기반 콘텐츠 향상

처리 단계:
1. 원시 HTML 수집
2. JavaScript 실행 (필요시)
3. 콘텐츠 추출
4. 형식 변환
5. 품질 검증
6. 압축 및 저장

6. 스토리지 레이어

신뢰성을 위한 분산 스토리지:
- 객체 스토리지 (S3): 스크린샷, 원시 HTML
- 데이터베이스 (PostgreSQL): 메타데이터, 사용자 데이터, 분석
- 캐시 (Solid Cache): 자주 액세스하는 데이터
- CDN: 글로벌 콘텐츠 전송

요청 수명 주기

1. 요청 시작

text
클라이언트 → API 게이트웨이 → 인증 → 요청 제한 → 작업 큐

2. 작업 처리

text
작업 큐 → 워커 선택 → 브라우저 시작 → 페이지 로드 → 콘텐츠 추출

3. 응답 전달

text
데이터 처리 → 저장 → 응답 형성 → 클라이언트 전달

확장 전략

수평 확장

  • 워커 풀: 큐 깊이에 따라 자동 확장
  • 데이터베이스 복제: 쿼리 분산을 위한 읽기 복제본
  • 캐시 클러스터링: 고가용성을 위한 Solid Cache 클러스터

수직 확장

  • 리소스 할당: 작업별 동적 CPU/메모리 할당
  • 브라우저 최적화: 경량 브라우저 구성
  • 연결 풀링: 효율적인 리소스 활용

고가용성

다중 지역 배포

text
┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│  미국 동부-1  │────▶│  유럽 서부-1  │────▶│ 아시아 남동부 │
│    기본       │     │    복제본     │     │    복제본     │
└──────────────┘     └──────────────┘     └──────────────┘

장애 조치 전략

  1. 활성-활성: 지역 간 로드 밸런싱
  2. 상태 확인: 지속적인 모니터링
  3. 자동 장애 조치: 1초 미만의 전환
  4. 데이터 일관성: 최종 일관성 모델

보안 아키텍처

네트워크 보안

  • VPC 격리: 프라이빗 네트워크 세그먼트
  • 보안 그룹: 세분화된 액세스 제어
  • WAF: 웹 애플리케이션 방화벽
  • DDoS 방어: 다층 방어

데이터 보안

  • 저장 시 암호화: AES-256 암호화
  • 전송 시 암호화: TLS 1.3
  • 키 관리: AWS KMS 통합
  • 액세스 로깅: 포괄적인 감사 추적

브라우저 보안

  • 샌드박싱: 격리된 브라우저 환경
  • 리소스 제한: CPU/메모리 제약
  • 네트워크 격리: 별도의 프록시 네트워크
  • 클린 상태: 요청마다 새로운 브라우저

성능 최적화

캐싱 전략

text
┌────────────┐     ┌────────────┐     ┌──────────────┐
│ 클라이언트  │────▶│  CDN 캐시   │────▶│Solid Cache │
│    캐시     │     │  (글로벌)   │     │  (로컬)    │
└────────────┘     └────────────┘     └──────────────┘

리소스 관리

  • 브라우저 풀링: 사전 준비된 브라우저
  • 연결 재사용: HTTP/2 멀티플렉싱
  • 지연 로딩: 온디맨드 리소스 로딩
  • 압축: Brotli/gzip 압축

모니터링 및 관찰성

메트릭 수집

  • 애플리케이션 메트릭: 응답 시간, 오류율
  • 인프라 메트릭: CPU, 메모리, 네트워크
  • 비즈니스 메트릭: 사용 패턴, 성공률

분산 추적

text
요청 ID: abc-123
├─ API 게이트웨이 (2ms)
├─ 인증 (1ms)
├─ 큐 삽입 (3ms)
├─ 워커 처리 (2500ms)
│  ├─ 브라우저 시작 (500ms)
│  ├─ 페이지 로드 (1500ms)
│  └─ 콘텐츠 추출 (500ms)
└─ 응답 전달 (5ms)
총: 2511ms

사용자를 위한 모범 사례

1. 요청 패턴 최적화

  • 유사한 요청 일괄 처리
  • 비동기 처리를 위한 웹훅 사용
  • 클라이언트 측 캐싱 구현

2. 적절한 옵션 선택

  • 최소한의 대기 전략 선택
  • 특정 선택자 사용
  • 압축 활성화

3. 실패를 우아하게 처리

  • 재시도 로직 구현
  • 지수 백오프 사용
  • 오류 패턴 모니터링

향후 아키텍처 계획

예정된 개선 사항

  1. 엣지 컴퓨팅: 데이터 소스에 더 가까운 처리
  2. ML 파이프라인: 지능적인 콘텐츠 추출
  3. GraphQL API: 유연한 데이터 쿼리
  4. WebSocket 스트리밍: 실시간 데이터 업데이트

실험적 기능

  • 분산 브라우저 팜
  • P2P 프록시 네트워크
  • 블록체인 기반 인증
  • 양자 저항 암호화

결론

ActiCrawl의 아키텍처는 신뢰할 수 있고 확장 가능하며 빠른 웹 스크래핑 기능을 제공하도록 설계되었습니다. 이러한 구성 요소를 이해함으로써 통합을 더 잘 최적화하고 플랫폼의 기능을 최대한 활용할 수 있습니다.