## 왜 원격 PC를 워커로 활용하는가?
회사 서버 리소스가 부족하거나, 크롤링/데이터 처리 같은 장시간 작업을 분산해야 할 때 집에 있는 PC를 추가 워커 노드로 활용할 수 있습니다. 이번 글에서는 Tailscale VPN과 PM2를 사용해 안전하고 안정적인 원격 워커 환경을 구축한 경험을 공유합니다.
## 1. 네트워크 구성: Tailscale로 안전한 연결
### Tailscale을 선택한 이유
- 공인 IP 없이도 안전한 P2P 연결 가능
- SSH 키 인증과 결합하여 보안 강화
- 방화벽 설정 최소화
### 기본 설정
```bash
# Tailscale 설치 및 인증
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
# SSH 키 기반 인증 설정
ssh-copy-id -i ~/.ssh/id_rsa.pub user@
```
### Nginx 리버스 프록시 활용
내부 서비스(Kafka, PostgreSQL 등)는 직접 노출하지 않고, 중앙 프록시 서버를 거쳐 접근하도록 구성했습니다.
```nginx
# Kafka 프록시 예시
stream {
upstream kafka {
server internal-kafka:9092;
}
server {
listen 9094;
proxy_pass kafka;
}
}
```
## 2. 워커 식별 시스템 개선
### 문제점
초기에는 모든 워커가 동일한 ID 체계를 사용해 대시보드에서 구분이 어려웠습니다.
### 해결 방법: Worker Type 기반 ID
```python
# 개선 전
CURRENT_WORKER_ID = "LOCAL_WORKER_PID"
# 개선 후
WORKER_TYPE = os.getenv("WORKER_TYPE", "default")
CURRENT_WORKER_ID = f"{WORKER_TYPE}_PID"
# 환경변수로 타입 지정
# WORKER_TYPE=office_hw_00
# WORKER_TYPE=house_hw_00
```
이제 대시보드에서 "어느 위치의 어떤 PC에서 작업 중인지" 명확히 파악할 수 있습니다.
## 3. 자동 시작 설정: PM2 + Task Scheduler
### PM2로 프로세스 관리
```bash
# PM2 설치
npm install -g pm2
# 워커 등록
pm2 start worker.py --name remote-worker
pm2 save
```
### Windows에서 부팅 시 자동 실행
```powershell
# Task Scheduler로 PM2 부팅 시 실행
schtasks /create /tn "PM2-Resurrect" /tr "pm2 resurrect" /sc onstart /ru SYSTEM
```
### Linux systemd 방식
```bash
pm2 startup
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u $USER --hp /home/$USER
pm2 save
```
## 4. 작업 할당 및 모니터링
### 워커별 역할 지정
- 사무실 PC: 실시간 긴급 작업
- 집 PC: 장시간 배치 작업, 크롤링
### 모니터링 포인트
```python
# 워커 상태 리포팅
def report_status():
return {
"worker_id": CURRENT_WORKER_ID,
"worker_type": WORKER_TYPE,
"uptime": get_uptime(),
"tasks_completed": task_count,
"current_task": current_task_id
}
```
## 핵심 요약
1. **Tailscale**: 공인 IP 없이 안전한 원격 접속
2. **타입 기반 ID**: 워커 출처 명확화로 관리 용이
3. **PM2 + 스케줄러**: 재부팅 후에도 자동 복구
4. **프록시 레이어**: 내부 서비스 보호
## 다음 단계
- 워커 헬스체크 자동화 (Prometheus + Grafana)
- 작업 실패 시 자동 재할당 로직
- 워커별 성능 프로파일링 및 최적 작업 분배
원격 PC를 워커로 활용하면 기존 하드웨어로 비용 효율적인 분산 처리 환경을 구축할 수 있습니다. 보안(VPN, 키 인증)과 안정성(자동 재시작, 모니터링)을 함께 고려하는 것이 성공의 핵심입니다.