무상태 이미지 처리 API를 만들었습니다 — 작동 방식
I’m happy to translate the article for you, but I’ll need the full text of the post (the part you want translated) in order to do so. Could you please paste the article’s content here? I’ll keep the source line and all formatting exactly as you requested.
문제
이미지‑처리 인프라는 놀라울 정도로 복잡합니다:
- 다양한 OS 대상에 네이티브 의존성 설치
- 임시 파일 및 디스크 정리 관리
- 포맷 별 특이점 처리 (AVIF 지원, GIF 애니메이션, 색상 프로파일)
- 배경 제거와 같은 AI 작업을 위한 GPU 가속
- 메모리 누수 없이 부하가 걸릴 때 확장성 확보
저는 이미지를 전송하면 처리된 이미지를 반환하고, 디스크에 저장하거나 캐시하지 않으며, 요청 간에 상태가 전혀 없는 API를 원했습니다.
작동 방식
TheGlitch는 이미지를 전적으로 메모리에서 처리합니다. 파이프라인은 다음과 같습니다:
Input (URL/base64/binary/form)
→ Decode & Validate
→ Resize & Crop
→ Apply Effects
→ Format Convert
→ Return Binary
단일 GET 요청으로 모든 작업을 수행할 수 있습니다:
curl "https://theglitch.p.rapidapi.com/api/v1/process?\
url=https://picsum.photos/1000&\
width=800&\
format=webp&\
brightness=10&\
contrast=15&\
sharpen=20" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: theglitch.p.rapidapi.com" \
-o result.webp
기능
- Resize & Crop – 네 가지 모드:
fit(종횡비 유지),fill(정확한 크기로 자르기),pad(테두리 추가),stretch. 최대 8000 × 8000 px 해상도 지원. - Format Conversion – 입력/출력: JPEG, PNG, WebP, GIF, BMP, TIFF. 포맷별 품질 제어.
- 7 Visual Effects – 밝기, 대비, 채도, 블러, 샤프닝, 그레이스케일, 세피아. 모두 하나의 요청에서 조합 가능.
- AI Background Removal – GPU 기반, 이미지당 약 3 초. 투명 PNG 반환.
- 14 Social Media Presets – Instagram 정사각형, Facebook 커버, YouTube 썸네일, LinkedIn 배너 등. 차원을 기억할 필요 없이 하나의 파라미터로 사용.
코드 예제
JavaScript
const response = await fetch(
'https://theglitch.p.rapidapi.com/api/v1/process?url=IMAGE_URL&width=800&format=webp',
{
headers: {
'X-RapidAPI-Key': 'YOUR_KEY',
'X-RapidAPI-Host': 'theglitch.p.rapidapi.com'
}
}
);
const blob = await response.blob();
파이썬
import requests
response = requests.get(
'https://theglitch.p.rapidapi.com/api/v1/process',
params={'url': 'IMAGE_URL', 'width': 800, 'format': 'webp'},
headers={'X-RapidAPI-Key': 'YOUR_KEY', 'X-RapidAPI-Host': 'theglitch.p.rapidapi.com'}
)
with open('result.webp', 'wb') as f:
f.write(response.content)
왜 무상태인가?
모든 이미지는 메모리에서 처리되고 응답이 전송된 후 폐기됩니다. 이는 다음을 의미합니다:
- GDPR 설계상 준수 – 사용자 데이터가 전혀 저장되지 않음
- 디스크 I/O 병목 현상 없음 – 모든 작업이 RAM에서 이루어짐
- 예측 가능한 확장성 – 각 요청이 독립적임
- 정리 작업 필요 없음 – 가비지‑컬렉션할 것이 없음
아키텍처 결정
- SkiaSharp over ImageMagick – 네이티브 성능, 크로스‑플랫폼, 외부 의존성 없음. 트레이드‑오프: 포맷 지원이 적음 (아직 AVIF 인코딩 불가), 하지만 WebP가 대부분의 사용 사례를 커버함.
- Replicate for GPU ops – Replicate을 통해 AI 작업을 프록시. 배경 제거는 BiRefNet 사용 시 이미지당 약 $0.0014 비용; 퍼블릭 모델은 콜드 스타트가 무료.
- Separate CPU and GPU rate limits – CPU 작업(리사이즈, 효과, 포맷)은 저렴하고; GPU 작업(배경 제거)은 비용이 많이 듦. 플랜별로 다른 제한을 두어 가격을 공정하게 함.
- Single VPS deployment – Docker Compose와 Caddy를 리버스 프록시로 사용하고, 앞단에 Cloudflare를 CDN/DDoS/SSL 용으로 배치. 전체 인프라 비용: 월 $6 이하.
API 엔드포인트
| 엔드포인트 | 기능 |
|---|---|
/api/v1/process | 전체 파이프라인 – 리사이즈 + 효과 + 포맷 |
/api/v1/resize | 리사이즈만 |
/api/v1/convert | 포맷 변환 |
/api/v1/effects | 시각 효과 |
/api/v1/remove-bg | AI 배경 제거 (GPU) |
/api/v1/optimize | 웹용 자동 최적화 (WebP) |
/api/v1/preset/{name} | 소셜 미디어 프리셋 |
사용해 보기
API는 무료 티어(월 500 요청)로 라이브 상태입니다. 웹사이트에서 전후 예시를 확인하거나 RapidAPI를 통해 직접 사용해 보세요:
- 라이브 예시가 있는 웹사이트:
- RapidAPI의 API:
유용하다고 생각하는 기능에 대해 듣고 싶습니다. 베타 기간 동안 가장 많이 요청된 기능은 배경 제거였는데, 다음에 어떤 기능을 원하시나요?