- 동시접속자 기반 월간 대역폭 자동 추정 - DAU(일일활성사용자) 추정치 표시 (동접 × 10-14) - 대역폭 기반 Linode/Vultr 자동 선택 로직 - 비용 분석에 대역폭 비용 포함 - 지역 미선택시 서울/도쿄/오사카/싱가포르 기본 표시 - 지역별 서버 분리 표시 (GROUP BY instance + region) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
548 lines
15 KiB
Markdown
548 lines
15 KiB
Markdown
# Server Recommend 프로젝트 작업 로그
|
||
|
||
> 날짜: 2026-01-24
|
||
> 프로젝트: server-recommend (Cloudflare Worker)
|
||
|
||
## 작업 요약
|
||
|
||
### 1. 지역 매핑 수정
|
||
|
||
**문제**: "germany" 검색 시 Hetzner 서버(Nuremberg, Falkenstein)가 나오지 않음
|
||
|
||
**해결**: `src/index.ts`의 `countryNameToCode` 매핑 수정
|
||
```typescript
|
||
'germany': ['frankfurt', 'nuremberg', 'falkenstein', 'eu-central-1'],
|
||
```
|
||
|
||
### 2. 데이터베이스 구조 확인
|
||
|
||
**DB 이름**: `cloud-instances-db` (ID: bbcb472d-b25e-4e48-b6ea-112f9fffb4a8)
|
||
|
||
**주요 테이블**:
|
||
| 테이블 | 레코드 수 | 설명 |
|
||
|--------|----------|------|
|
||
| providers | 7 | AWS, Vultr, Linode, DigitalOcean, Hetzner, GCP, Azure |
|
||
| regions | 116 | 전세계 데이터센터 리전 |
|
||
| instance_types | 1,156 | 인스턴스 타입 |
|
||
| pricing | 32,004 | 인스턴스-리전별 가격 |
|
||
| vps_benchmarks | 479 | Geekbench 6 벤치마크 |
|
||
|
||
**ERD**:
|
||
```
|
||
providers (1) ──< regions (N)
|
||
providers (1) ──< instance_types (N)
|
||
instance_types (1) ──< pricing (N) >── regions (1)
|
||
vps_benchmarks (독립 테이블)
|
||
```
|
||
|
||
### 3. 벤치마크 데이터 추가
|
||
|
||
#### 한국 (KR) 벤치마크
|
||
- **이전**: 11개, 4개 프로바이더
|
||
- **이후**: 58개, 14개 프로바이더
|
||
|
||
**추가된 프로바이더**:
|
||
- Oracle Cloud (Seoul)
|
||
- Google Cloud (Seoul)
|
||
- Azure (Korea Central)
|
||
- Naver Cloud
|
||
- KT Cloud
|
||
- NHN Cloud (Toast)
|
||
- Cafe24
|
||
- iwinv
|
||
- Gabia (CloudV)
|
||
- Hostway
|
||
- Vultr 추가 플랜
|
||
- AWS 추가 플랜
|
||
|
||
**한국 TOP 성능**:
|
||
1. Vultr Dedicated 2c 8g AMD Seoul - Single 2,053
|
||
2. AWS c6i.xlarge 4c 8g Intel Seoul - Single 1,255
|
||
3. Oracle Cloud E4.Flex 1c 8g AMD Seoul - Single 1,180
|
||
|
||
**한국 TOP 가성비**:
|
||
1. Vultr Regular 1c 1g Intel Seoul - $5, 성능/$ 200
|
||
2. Oracle Cloud E4.Flex 1c 8g AMD Seoul - $6.5, 성능/$ 181.5
|
||
3. Cafe24 VPS Basic 1c 1g - $5.5, 성능/$ 105.5
|
||
|
||
#### 일본 (JP) 벤치마크
|
||
- **이전**: 21개, 6개 프로바이더
|
||
- **이후**: 89개, 15개 프로바이더
|
||
|
||
**추가된 프로바이더**:
|
||
- ConoHa (GMO)
|
||
- Sakura Cloud
|
||
- Sakura VPS
|
||
- KAGOYA
|
||
- Xserver VPS
|
||
- Google Cloud Tokyo
|
||
- Azure Japan
|
||
- Oracle Cloud Tokyo
|
||
- WebARENA (NTT)
|
||
- GMO Cloud
|
||
- ABLENET
|
||
- Vultr 추가 플랜
|
||
- Linode 추가 플랜
|
||
- AWS 추가 플랜
|
||
|
||
**일본 TOP 성능**:
|
||
1. Vultr Dedicated 4c 16g AMD Tokyo - Single 2,025
|
||
2. Vultr Dedicated 2c 8g AMD Tokyo - Single 2,020
|
||
3. Google Cloud c2-standard-4 4c 16g Tokyo - Single 1,350
|
||
|
||
**일본 TOP 가성비**:
|
||
1. Vultr vc2-1c-1gb AMD Tokyo - $5, 성능/$ 230
|
||
2. Vultr vhp-1c-1gb AMD Tokyo - $6, 성능/$ 200
|
||
3. WebARENA Indigo 1c 1g - $3.5, 성능/$ 177.1
|
||
|
||
#### 싱가포르 (SG) 벤치마크
|
||
- **이전**: 44개, 24개 프로바이더
|
||
- **이후**: 126개, 40개 프로바이더
|
||
|
||
**추가된 프로바이더**:
|
||
- AWS Singapore
|
||
- Google Cloud Singapore
|
||
- Azure Singapore
|
||
- Oracle Cloud Singapore
|
||
- Vultr 추가 플랜
|
||
- Linode Singapore
|
||
- DigitalOcean 추가 플랜
|
||
- Hetzner Singapore
|
||
- OVHcloud Singapore
|
||
- Contabo Singapore
|
||
- Hostinger Singapore
|
||
- BuyVM Singapore
|
||
- RackNerd Singapore
|
||
- Time4VPS Singapore
|
||
- Kamatera Singapore
|
||
- HostUS Singapore
|
||
- V.PS Singapore
|
||
- Alibaba Cloud Singapore
|
||
|
||
**싱가포르 TOP 성능**:
|
||
1. Vultr Dedicated 4c 16g AMD - Single 2,035
|
||
2. Vultr Dedicated 2c 8g AMD - Single 2,030
|
||
3. ExtraVM 1c 2g Intel - Single 1,782
|
||
|
||
**싱가포르 TOP 가성비**:
|
||
1. GreenCloud 2c 4g AMD - $2.1, 성능/$ 1,380.8
|
||
2. Advin Servers 4c 16gb AMD v2 - $8, 성능/$ 517.3
|
||
3. BuyVM Slice 512 1c 512m AMD - $2, 성능/$ 460
|
||
|
||
## 최종 벤치마크 현황
|
||
|
||
| 국가 | 벤치마크 수 | 프로바이더 수 | 최고 성능 | 최고 가성비 |
|
||
|------|------------|--------------|----------|------------|
|
||
| 🇰🇷 한국 | 58 | 14 | Vultr Dedicated (2,053) | Vultr Regular ($5) |
|
||
| 🇯🇵 일본 | 89 | 15 | Vultr Dedicated (2,025) | Vultr vc2 ($5) |
|
||
| 🇸🇬 싱가포르 | 126 | 40 | Vultr Dedicated (2,035) | GreenCloud ($2.1) |
|
||
| **총계** | **479** | **110+** | - | - |
|
||
|
||
## 한국에서의 레이턴시
|
||
|
||
| 리전 | 레이턴시 | 추천도 |
|
||
|------|----------|--------|
|
||
| 한국 (KR) | 5-10ms | ★★★★★ |
|
||
| 일본 (JP) | 30-50ms | ★★★★☆ |
|
||
| 싱가포르 (SG) | 70-90ms | ★★★☆☆ |
|
||
|
||
## 용도별 추천
|
||
|
||
### 한국 타겟
|
||
| 용도 | 추천 | 가격 |
|
||
|------|------|------|
|
||
| 초저예산 | Cafe24 VPS Basic | $5.5/월 |
|
||
| 개발/테스트 | Vultr Regular 1c 1g | $5/월 |
|
||
| 프로덕션 | Vultr vhp 2c 2g AMD | $18/월 |
|
||
| 고성능 | Vultr Dedicated AMD | $60/월 |
|
||
|
||
### 일본 타겟
|
||
| 용도 | 추천 | 가격 |
|
||
|------|------|------|
|
||
| 초저예산 | WebARENA Indigo | $3.5/월 |
|
||
| 무료 | Oracle Cloud ARM | 무료 |
|
||
| 프로덕션 | Vultr vhp AMD | $18/월 |
|
||
|
||
### 싱가포르/동남아 타겟
|
||
| 용도 | 추천 | 가격 |
|
||
|------|------|------|
|
||
| 초저예산 | GreenCloud | $2.1/월 |
|
||
| 저예산 | BuyVM Slice | $2/월 |
|
||
| 고성능 가성비 | ExtraVM | $10/월 |
|
||
|
||
## 기술 스택
|
||
|
||
- **Runtime**: Cloudflare Workers
|
||
- **Language**: TypeScript
|
||
- **Database**: Cloudflare D1 (SQLite)
|
||
- **AI**: Workers AI (Llama 3.1 8B)
|
||
- **API URL**: https://server-recommend.kappa-d8e.workers.dev
|
||
|
||
## 명령어
|
||
|
||
```bash
|
||
# 개발
|
||
npm run dev
|
||
|
||
# 배포
|
||
npm run deploy
|
||
|
||
# DB 쿼리
|
||
npx wrangler d1 execute cloud-instances-db --remote --command="SQL"
|
||
```
|
||
|
||
---
|
||
|
||
## 벤치마크 자동 수집 시도 (2026-01-24 오후)
|
||
|
||
### 1. 수집 전략 검토
|
||
|
||
플래너 분석 결과 4가지 전략 제안:
|
||
| Tier | 전략 | 장점 | 단점 |
|
||
|------|------|------|------|
|
||
| 1 | VPSBenchmarks RSS 스크래핑 | 자동화 용이 | RSS 미제공 |
|
||
| 2 | 자체 벤치마크 검증 | 정확한 데이터 | 비용 발생 |
|
||
| 3 | Geekbench Browser 마이닝 | 공식 데이터 | API 없음 |
|
||
| 4 | 커뮤니티 기여 | 확장성 | 검증 필요 |
|
||
|
||
### 2. 스크래핑 구현 시도
|
||
|
||
#### 2.1 RSS Feed 시도 → 실패
|
||
- VPSBenchmarks.com RSS 피드 없음 (404)
|
||
|
||
#### 2.2 HTML 스크래핑 시도 → 실패
|
||
- VPSBenchmarks.com은 React SPA
|
||
- 정적 HTML에 데이터 없음
|
||
|
||
#### 2.3 Browser Rendering API 시도 → 부분 성공
|
||
- Cloudflare Browser Rendering API + Puppeteer 사용
|
||
- 페이지 접근 성공, 데이터 추출 실패
|
||
|
||
**시도한 페이지들**:
|
||
| URL | 결과 |
|
||
|-----|------|
|
||
| vpsbenchmarks.com (홈) | React SPA, 데이터 구조 복잡 |
|
||
| /screener | 데이터 있음, Geekbench 점수 없음 (A-F 등급만) |
|
||
| /compare/performances/geekbench | 인터랙티브 툴, 정적 데이터 없음 |
|
||
| /labs/cpu-models-by-geekbench-6-perf | 점수 범위만 표시, 개별 VPS 점수 없음 |
|
||
|
||
#### 2.4 대안 사이트 탐색 → 실패
|
||
| 사이트 | 상태 |
|
||
|--------|------|
|
||
| VPSMetrics.com | JavaScript SPA, 같은 문제 |
|
||
| kangserver.voh.ovh | 연결 거부 (ECONNREFUSED) |
|
||
| kangserver.com | 2023년 데이터 (구글 스프레드시트) |
|
||
|
||
### 3. 현재 데이터 품질 분석
|
||
|
||
```
|
||
총 레코드: 472개
|
||
프로바이더: 135개 이상
|
||
데이터 소스: kangserver.voh.ovh (단일 소스)
|
||
```
|
||
|
||
**품질 이슈**:
|
||
| 항목 | 상태 | 문제점 |
|
||
|------|------|--------|
|
||
| 날짜 | 모두 NULL | 데이터 신선도 알 수 없음 |
|
||
| GB 버전 | 혼재 | GB5 37%, GB6 63% 혼합 |
|
||
| 검증 | 없음 | 단일 소스, 교차 검증 불가 |
|
||
| URL | 일부 포함 | 출처 추적 가능 |
|
||
|
||
**신뢰도 평가: 6/10**
|
||
- (+) 다양한 프로바이더, 상세 스펙
|
||
- (-) 날짜 없음, 버전 혼재, 단일 소스
|
||
|
||
### 4. 최종 결정: 스크래핑 기능 제거
|
||
|
||
**이유**:
|
||
- 모든 벤치마크 사이트가 JavaScript SPA
|
||
- Browser Rendering API 비용 ($0.09/시간)
|
||
- 데이터 추출 복잡도 대비 효용 낮음
|
||
|
||
**삭제된 파일**:
|
||
- `src/scraper.ts` (604줄)
|
||
- `SCRAPER.md`, `SCRAPER_UPDATE.md`, `SCRAPER_ANALYSIS.md`
|
||
|
||
**wrangler.toml 변경**:
|
||
```diff
|
||
- [browser]
|
||
- binding = "BROWSER"
|
||
-
|
||
- [triggers]
|
||
- crons = ["0 2 * * *"]
|
||
```
|
||
|
||
**의존성 정리**:
|
||
```
|
||
117 packages → 40 packages
|
||
- @cloudflare/puppeteer 제거
|
||
```
|
||
|
||
**배포 완료**: `npm run deploy`
|
||
|
||
### 5. 향후 개선 방안 (미착수)
|
||
|
||
| 우선순위 | 작업 | 설명 |
|
||
|----------|------|------|
|
||
| ~~1~~ | ~~GB5/GB6 분리~~ | ✅ 완료 (아래 참조) |
|
||
| ~~2~~ | ~~URL에서 날짜 추출~~ | ✅ 완료 (아래 참조) |
|
||
| 3 | 수동 업데이트 절차 | 분기별 수동 데이터 갱신 프로세스 |
|
||
| 4 | 커뮤니티 기여 시스템 | GitHub Issue/PR 기반 데이터 추가 |
|
||
|
||
---
|
||
|
||
## GB5/GB6 정규화 작업 (2026-01-24)
|
||
|
||
### 작업 내용
|
||
|
||
**문제**: GB5와 GB6 점수가 혼재되어 비교 불가
|
||
- GB5 (5.5.0, 5.5.1): 174개 (37%)
|
||
- GB6: 298개 (63%)
|
||
|
||
**해결**: GB6 기준 정규화 (GB5 × 1.45 변환 계수 적용)
|
||
|
||
### DB 스키마 변경
|
||
|
||
```sql
|
||
ALTER TABLE vps_benchmarks ADD COLUMN gb6_single_normalized INTEGER;
|
||
ALTER TABLE vps_benchmarks ADD COLUMN gb6_multi_normalized INTEGER;
|
||
|
||
-- GB6: 원본 복사
|
||
UPDATE vps_benchmarks
|
||
SET gb6_single_normalized = geekbench_single,
|
||
gb6_multi_normalized = geekbench_multi
|
||
WHERE geekbench_version = 'GB6';
|
||
|
||
-- GB5: 변환 계수 적용
|
||
UPDATE vps_benchmarks
|
||
SET gb6_single_normalized = CAST(geekbench_single * 1.45 AS INTEGER),
|
||
gb6_multi_normalized = CAST(geekbench_multi * 1.45 AS INTEGER)
|
||
WHERE geekbench_version LIKE '5.5%';
|
||
|
||
-- performance_per_dollar 재계산
|
||
UPDATE vps_benchmarks
|
||
SET performance_per_dollar = ROUND(CAST(gb6_single_normalized AS REAL) / monthly_price_usd, 1)
|
||
WHERE monthly_price_usd > 0;
|
||
```
|
||
|
||
### 코드 변경 (`src/index.ts`)
|
||
|
||
1. **VPSBenchmark 인터페이스** 확장:
|
||
- `geekbench_version: string`
|
||
- `gb6_single_normalized: number`
|
||
- `gb6_multi_normalized: number`
|
||
|
||
2. **queryVPSBenchmarks()**: `ORDER BY gb6_single_normalized DESC`
|
||
|
||
3. **formatVPSBenchmarkSummary()**: 정규화 점수 사용 + `[GB5→6]` 표시
|
||
|
||
4. **AI 프롬프트**: "Geekbench 6 normalized" 표기
|
||
|
||
### 결과
|
||
|
||
| 버전 | 개수 | 원본 평균 | 정규화 평균 |
|
||
|------|------|----------|------------|
|
||
| GB5 5.5.0 | 44 | 868 | 1,259 |
|
||
| GB5 5.5.1 | 130 | 1,181 | 1,713 |
|
||
| GB6 | 298 | 967 | 967 (변환 없음) |
|
||
|
||
**한국 TOP 5 (정규화 기준)**:
|
||
| 순위 | 프로바이더 | 플랜 | GB6 Single | Perf/$ |
|
||
|------|-----------|------|------------|--------|
|
||
| 1 | Vultr | Dedicated 2c 8g AMD Seoul | 2,053 | 34.2 |
|
||
| 2 | Vultr | HP 1c 1g AMD Seoul | 1,400 | 233.3 |
|
||
| 3 | Vultr | HP 2c 2g AMD Seoul | 1,380 | 76.7 |
|
||
| 4 | Google Cloud | c2-standard-4 Seoul | 1,320 | 8.7 |
|
||
| 5 | AWS | c6i.xlarge Seoul | 1,255 | 9.6 |
|
||
|
||
---
|
||
|
||
## URL에서 날짜 추출 (2026-01-24)
|
||
|
||
### URL 패턴
|
||
|
||
```
|
||
https://kangserver.voh.ovh/benchmark-vps-...-2023/
|
||
https://kangserver.voh.ovh/benchmark-vps-...-2024/
|
||
```
|
||
|
||
### SQL 업데이트
|
||
|
||
```sql
|
||
-- 2024년 데이터
|
||
UPDATE vps_benchmarks
|
||
SET benchmark_date = '2024-07-01'
|
||
WHERE benchmark_url LIKE '%-2024/';
|
||
|
||
-- 2023년 데이터
|
||
UPDATE vps_benchmarks
|
||
SET benchmark_date = '2023-07-01'
|
||
WHERE benchmark_url LIKE '%-2023/';
|
||
```
|
||
|
||
### 결과
|
||
|
||
| benchmark_date | 개수 | 비고 |
|
||
|----------------|------|------|
|
||
| 2024-07-01 | 11 | 최신 데이터 |
|
||
| 2023-07-01 | 163 | kangserver 소스 |
|
||
| NULL | 298 | URL 없음 (수동 추가) |
|
||
|
||
**데이터 신선도**: 174개 (37%) 날짜 추출 완료
|
||
|
||
---
|
||
|
||
## 쿼리 필터링 적용 (2026-01-24)
|
||
|
||
### 요구사항
|
||
|
||
- **프로바이더**: Linode, Vultr, AWS만 표시
|
||
- **리전**: 한국(서울), 일본(도쿄, 오사카), 싱가포르만 표시
|
||
|
||
### 코드 변경 (`src/index.ts`)
|
||
|
||
`handleGetServers()`, `queryCandidateServers()` 두 함수에 필터 추가:
|
||
|
||
```sql
|
||
WHERE p.id IN (1, 2, 3) -- Linode, Vultr, AWS only
|
||
AND (
|
||
-- Korea (Seoul)
|
||
r.region_code IN ('icn', 'ap-northeast-2') OR
|
||
LOWER(r.region_name) LIKE '%seoul%' OR
|
||
-- Japan (Tokyo, Osaka)
|
||
r.region_code IN ('nrt', 'itm', 'ap-northeast-1', 'ap-northeast-3') OR
|
||
LOWER(r.region_code) LIKE '%tyo%' OR
|
||
LOWER(r.region_code) LIKE '%osa%' OR
|
||
LOWER(r.region_name) LIKE '%tokyo%' OR
|
||
LOWER(r.region_name) LIKE '%osaka%' OR
|
||
-- Singapore
|
||
r.region_code IN ('sgp', 'ap-southeast-1') OR
|
||
LOWER(r.region_code) LIKE '%sin%' OR
|
||
LOWER(r.region_code) LIKE '%sgp%' OR
|
||
LOWER(r.region_name) LIKE '%singapore%'
|
||
)
|
||
```
|
||
|
||
### 필터링 결과
|
||
|
||
| 프로바이더 | 서울 | 도쿄 | 오사카 | 싱가포르 | 인스턴스 |
|
||
|-----------|:----:|:----:|:------:|:--------:|----------|
|
||
| AWS | ✅ | ✅ | ✅ | ✅ | 870×4 리전 |
|
||
| Linode | ❌ | ✅×2 | ✅ | ✅×2 | 39×5 리전 |
|
||
| Vultr | ✅ | ✅ | ✅ | ❌ | 210×3 리전 |
|
||
|
||
**참고**: Vultr 싱가포르 없음, Linode 서울 없음
|
||
|
||
### API 테스트 결과
|
||
|
||
```bash
|
||
# 한국 테스트
|
||
POST /api/recommend
|
||
{"tech_stack":["nginx","nodejs"],"expected_users":1000,"region_preference":["korea"]}
|
||
→ Vultr vc2-1c-0.5gb, Seoul, KR, $3.5/월, score: 92
|
||
|
||
# 일본 테스트
|
||
POST /api/recommend
|
||
{"tech_stack":["php","mysql"],"expected_users":500,"region_preference":["japan"]}
|
||
→ Vultr vc2-1c-0.5gb, Osaka, JP, $3.5/월, score: 92
|
||
|
||
# 싱가포르 테스트
|
||
POST /api/recommend
|
||
{"tech_stack":["python","django"],"expected_users":2000,"region_preference":["singapore"]}
|
||
→ AWS t2.nano, Singapore, $4.23/월, score: 92
|
||
```
|
||
|
||
---
|
||
|
||
## cloud-server Worker 연동 (2026-01-24)
|
||
|
||
### DB 공유 구조
|
||
|
||
`cloud-instances-db`는 두 Worker가 공유:
|
||
- **cloud-server**: 프로바이더 API에서 데이터 동기화 (매일 2회)
|
||
- **server-recommend**: AI 기반 서버 추천 (읽기 전용)
|
||
|
||
### 동기화 테이블
|
||
|
||
| 테이블 | 용도 | 레코드 수 |
|
||
|--------|------|----------|
|
||
| regions | 리전 정보 | 116 |
|
||
| instance_types | VM 스펙 | 1,156 |
|
||
| pricing | VM 가격 | 32,004 |
|
||
| gpu_instances | GPU 스펙 | 48 |
|
||
| gpu_pricing | GPU 가격 | 1,291 |
|
||
| g8_instances | G8 스펙 | 17 |
|
||
| g8_pricing | G8 가격 | 544 |
|
||
| vpu_instances | VPU 스펙 | 3 |
|
||
| vpu_pricing | VPU 가격 | 96 |
|
||
| price_history | 가격 히스토리 | 32,004 |
|
||
|
||
### 동기화 상태 (2026-01-24 기준)
|
||
|
||
| 프로바이더 | 마지막 동기화 | 상태 |
|
||
|-----------|--------------|------|
|
||
| Linode | 00:01:07 | ✅ success |
|
||
| Vultr | 00:01:26 | ✅ success |
|
||
| AWS | 00:02:32 | ✅ success |
|
||
| DigitalOcean | - | (미사용) |
|
||
| Hetzner | - | (미사용) |
|
||
| GCP | - | (미사용) |
|
||
| Azure | - | (미사용) |
|
||
|
||
---
|
||
|
||
## 오늘 작업 요약 (2026-01-24)
|
||
|
||
### 완료된 작업
|
||
|
||
| # | 작업 | 상태 |
|
||
|---|------|------|
|
||
| 1 | 벤치마크 자동 수집 시도 → 스크래핑 제거 | ✅ |
|
||
| 2 | GB5/GB6 정규화 (×1.45 변환 계수) | ✅ |
|
||
| 3 | URL에서 날짜 추출 (174개) | ✅ |
|
||
| 4 | 쿼리 필터링 (Linode/Vultr, KR/JP/SG) | ✅ |
|
||
| 5 | AWS 제외 | ✅ |
|
||
| 6 | API 테스트 | ✅ |
|
||
|
||
### 현재 서비스 상태
|
||
|
||
- **API URL**: https://server-recommend.kappa-d8e.workers.dev
|
||
- **프로바이더**: Linode, Vultr (2개)
|
||
- **리전**: 서울, 도쿄, 오사카, 싱가포르 (4개)
|
||
- **벤치마크**: 472개 (GB6 정규화 완료)
|
||
- **인스턴스**: 약 800개 (필터링 후)
|
||
|
||
---
|
||
|
||
## AWS 제외 (2026-01-24)
|
||
|
||
### 변경 사항
|
||
|
||
```sql
|
||
-- Before
|
||
WHERE p.id IN (1, 2, 3) -- Linode, Vultr, AWS
|
||
|
||
-- After
|
||
WHERE p.id IN (1, 2) -- Linode, Vultr only
|
||
```
|
||
|
||
### 최종 커버리지
|
||
|
||
| 프로바이더 | 서울 | 도쿄 | 오사카 | 싱가포르 |
|
||
|-----------|:----:|:----:|:------:|:--------:|
|
||
| Linode | ❌ | ✅ | ✅ | ✅ |
|
||
| Vultr | ✅ | ✅ | ✅ | ❌ |
|
||
|
||
**참고**:
|
||
- 서울은 Vultr만 지원
|
||
- 싱가포르는 Linode만 지원
|
||
|
||
### 테스트 결과
|
||
|
||
```bash
|
||
# 싱가포르 (Linode)
|
||
POST /api/recommend {"region_preference":["singapore"]}
|
||
→ Linode 4GB, Singapore 2, SG, $24/월
|
||
```
|