핵심 요약
Araluma는 하이브리드 아키텍처를 사용합니다. 대부분의 도구는 업로드 없이 사용자의 브라우저 안에서 완전히 실행되며, 소수의 도구만이 브라우저가 동등한 품질을 낼 수 없을 때에 한해 단 한 번의 네트워크 요청을 자체 인프라로 보냅니다. 그때도 항상 눈에 보이지 않는 클라이언트 측 폴백을 갖추고 있습니다. 어떤 경로를 쓰는지는 각 도구와 이 페이지에서 알려드립니다.
아래 표는 대표 예시이며 전체 목록이 아닙니다(카탈로그는 계속 늘어납니다). 각 종류의 경로를 하나씩 보여줍니다.
| 예시 도구 | 처리 위치 |
|---|---|
| Circle Crop(브라우저 전용) | 100% 사용자 브라우저 내, Canvas API. 업로드 없음, 오프라인 작동. |
| Compress 미리보기(브라우저 전용) | 100% 사용자 브라우저 내, canvas.toBlob. 업로드 없음. 슬라이더가 즉각 반응합니다. |
| Compress 다운로드(서버 경유) | api.araluma.com(독일 VPS의 sharp와 libvips)으로 한 번의 왕복. 브라우저 내 폴백 포함. |
| Remove Background(서버 경유) | 엣지 GPU에서 BiRefNet을 실행하는 Cloudflare Worker로 한 번의 왕복. 사용자 브라우저 내 WebAssembly 폴백 포함. |
자르기, 리사이즈, PDF, 포맷 변환 도구(AVIF 출력 경로 제외)는 브라우저 전용 쪽에 있습니다. 압축 다운로드, 배경 제거, AI 업스케일, AVIF 출력 변환은 서버 경유 쪽에 있으며, 각각 로컬 폴백을 갖추고 있습니다.
브라우저 전용이라는 설명은 약 30초면 확인할 수 있습니다. DevTools를 열고 Network 패널로 이동해 로그를 지운 뒤, 아무 브라우저 전용 도구나 사용해 보세요. 이미지 바이트를 페이지 밖으로 내보내는 요청이 하나도 없습니다. 서버 경유 도구에서는 위에 명시된 엔드포인트로 작업당 정확히 한 번의 업로드가 보입니다.
하이브리드를 선택한 이유
대부분의 온라인 이미지 도구는 한쪽 극단에 있습니다. 모든 것을 서버에 업로드하는 방식(왕복을 기다리고 운영자가 파일을 보관합니다)이거나, 전부 브라우저에서 처리하는 방식(인코딩과 AI 단계에서 품질과 속도를 치릅니다)입니다. 어느 극단도 모든 곳에서 이기지는 못합니다.
저희는 브라우저가 이미 뛰어난 곳에서는 클라이언트 측을 선택했습니다. <canvas> 요소는 자르기, 회전, 리사이즈, 그리고 JPG나 WebP의 손실 미리보기 인코딩을 처리하고, 최신 브라우저는 모든 일반 포맷을 기본으로 디코딩합니다. 그리고 브라우저가 여전히 측정 가능하게 뒤처지는 소수의 단계에서만 서버 측을 선택했습니다.
- 압축, 최종 다운로드 단계입니다. 서버 측
sharp와libvips는 같은 시각적 품질에서 브라우저 인코더보다 바이트 단위로 10~15% 작은 파일을 만들고, 브라우저가 제공하지 않는 AVIF 속도와 크로마 튜닝도 노출합니다. 슬라이더와 미리보기는 사용자의 브라우저 안에서 계속 실행되므로 반복 작업이 즉각적입니다. “다운로드”를 누를 때만 저희 서비스를 거칩니다. - AI 배경 제거, 기본 경로입니다. Cloudflare의 이미지 세그멘테이션이 실행하는 BiRefNet 모델(remove.bg와 같은 아키텍처)은 1~2초 안에 끝내려면 실제 GPU가 필요합니다. 브라우저 내 폴백(ONNX Runtime과 WebAssembly 기반 ISNet)도 동작하지만, 훨씬 오래 걸리고 머리카락, 털, 세밀한 경계에서 눈에 띄게 거친 결과를 냅니다.
- AI 업스케일, 기본 경로입니다. 클라우드 초해상도는 브라우저 측 리샘플링으로는 얻을 수 없는 디테일을 복원하며, 서비스에 연결할 수 없을 때는 브라우저 폴백을 사용합니다.
이 경로들에서 서버 측을 택하며 받아들이는 비용은 작업당 한 번의 왕복입니다. 나머지 모든 곳에서 클라이언트 측을 유지함으로써 피하는 비용은, 가장 빈번하게 반복되는 워크플로 부분에서의 바로 그 왕복 비용입니다.
파이프라인 단계별 설명
1. 파일을 선택합니다
파일 선택기, 드래그 앤 드롭, 또는 붙여넣기를 통해 브라우저가 JavaScript에 File 객체를 전달합니다. JavaScript는 FileReader 또는 Blob.arrayBuffer()를 사용해 바이트를 읽습니다. 이 단계에서는 어떤 도구를 쓰든 파일이 네트워크로 전송되는 일이 전혀 없습니다.
2. 브라우저가 이미지를 디코딩합니다
최신 브라우저는 JPG, PNG, WebP, GIF, AVIF를 기본으로 디코딩합니다. createImageBitmap()을 사용해 메인 스레드 밖에서 원시 바이트를 GPU가 다룰 수 있는 비트맵으로 변환합니다. HEIC를 기본으로 디코딩하지 않는 브라우저에서는, 사용자의 브라우저 안에서 로컬로 실행되는 WebAssembly 디코더로 폴백합니다.
3. 도구가 작업을 수행합니다, 여기서 경로가 갈립니다
- 브라우저 전용 도구(자르기, 리사이즈, 압축 미리보기와 슬라이더, PDF 조립, 그리고 대부분의 포맷 변환). 이들은 Canvas 픽셀 변환과
canvas.toBlob재인코딩으로 사용자의 기기에서 바로 동작합니다. 인터랙티브 자르기 프레임은 Cropper.js를 사용합니다. 어떤 것도 페이지를 떠나지 않습니다. - 압축 다운로드. “다운로드”를 누르면 이미지가
api.araluma.com(독일의 Hostinger VPS에서 실행되는 Fastify 서비스, Node와 Squoosh가 서버 경로에서 쓰는 것과 같은 C 라이브러리인sharp·libvips)으로 한 번 전송됩니다. 미리보기에서 설정한 파라미터로 재인코딩되어 바이트가 스트리밍으로 돌아옵니다. 서비스는 테넌트별로 격리된 콘텐츠 주소 기반 캐시(입력 바이트와 파라미터의 해시)를 유지하므로, 같은 이미지를 같은 설정으로 다시 다운로드하면 캐시된 바이트가 재사용됩니다. 이 캐시는 사용자, IP, 파일명으로 색인되지 않습니다. 서비스에 연결할 수 없으면 도구는 브라우저 내 미리보기 blob으로 폴백합니다. - 배경 제거, 기본 클라우드 경로. 이미지가 Cloudflare Worker에 한 번 업로드되어 프라이빗 R2 버킷에 임시 저장된 뒤, 엣지 GPU에서 BiRefNet 모델을 실행하는 Cloudflare의 이미지 세그멘테이션으로 처리되고 결과가 스트리밍됩니다. 임시 저장된 객체는 결과와 무관하게 R2 수명 주기 규칙에 따라 한 시간 이내에 삭제됩니다. 일반적인 사진은 1~2초 안에 끝납니다. 일일 IP별 한도와 업로드 크기 한도로 무료 등급을 지속 가능하게 유지합니다.
- 배경 제거, WebAssembly 폴백. Worker에 연결할 수 없는 경우(네트워크가 끊기거나, 엄격한 방화벽이 막거나, 일일 할당량이 소진되거나, 파일이 클라우드 한도를 넘은 경우), 도구는 ONNX Runtime Web과 WebAssembly를 통해 로컬에서 실행되는 ISNet 모델로 아무런 안내 없이 전환합니다. 첫 실행은 모델을 다운로드하느라 오래 걸리고, 이후 실행은 더 빠릅니다. 이 경로에서는 업로드가 없습니다. DevTools에서 확인할 수 있습니다.
- AI 업스케일. 기본 경로는 이미지를 클라우드 초해상도 서비스로 한 번 보내 확대된 결과를 스트리밍으로 돌려주며, 서비스에 연결할 수 없으면 브라우저 측 폴백을 사용합니다.
4. 결과를 다운로드합니다
출력 비트맵이 Blob으로 인코딩되고 object URL로 래핑되어 브라우저의 표준 파일 저장 대화상자로 전달됩니다. 파일이 디스크에 나타납니다.
직접 확인하는 방법
원하는 방법을 선택하세요.
방법 1. Network 탭 관찰하기
- 새 탭에서 Araluma를 열고 DevTools를 연 뒤 Network 패널로 이동합니다.
- Circle Crop이나 Compress 미리보기 슬라이더 같은 브라우저 전용 도구를 사용합니다. HTML, CSS, JS, 폰트 요청과 첫 사용 시 관련 WebAssembly 모듈 요청만 보입니다. 이미지 바이트를 운반하는 요청은 하나도 없습니다.
- 이제 Compress 다운로드나 Remove Background 같은 서버 경유 도구를 사용합니다. 이미지를 위에 명시된 엔드포인트로 운반하는
POST가 정확히 하나, 결과가 담긴 응답이 하나 보입니다. 요청에 마우스를 올리면 크기와 타이밍을 읽을 수 있습니다.
“Initiator” 열은 각 요청을 시작한 스크립트를, “Type” 열은 무엇이 전송되었는지를 알려줍니다. 둘 다 숨기지 않습니다.
방법 2. 도구를 오프라인으로 사용하기
- 아무 Araluma 도구 페이지나 불러옵니다. Remove Background를 작은 이미지로 한 번 실행해 브라우저 내 ISNet 모델이 캐시되게 합니다.
- DevTools를 열고 Network로 이동해 Offline을 체크합니다(또는 Wi-Fi를 끕니다).
- 페이지를 새로 고침합니다. 정적 에셋이 캐시되어 있으므로 그래도 로드됩니다.
- 도구를 사용해 봅니다.
- 브라우저 전용 도구는 계속 작동합니다. 애초에 네트워크가 필요 없었습니다.
- Compress 다운로드는 브라우저 내 미리보기 blob으로 폴백합니다(인코딩이 약간 덜 효율적이지만 작동합니다).
- Remove Background는 ISNet WebAssembly 모델로 폴백하며 외부로 나가는 요청 없이 작동합니다.
그 도구들이 오프라인에서 작동했다면(일부는 품질이 낮아지고, 브라우저 전용은 동일합니다), 정의상 어떤 서버도 당신의 이미지를 보지 못한 것입니다.
저희가 보는 것과 보지 않는 것
브라우저 전용 경로에서 저희는 당신의 이미지에 관해 아무것도 보지 못합니다. 살펴볼 요청도, 저장할 캐시도, 검색할 로그 줄도 없습니다.
서버 경유 경로에서는,
- Compress 다운로드는 인코딩이 진행되는 동안(보통 수백 밀리초) 이미지 바이트를 보고, 콘텐츠 주소 기반 캐시 항목을 그 TTL 동안 유지하며, 그게 전부입니다. 캐시는 사용자, IP, 파일명, 또는 “당신의” 이미지를 찾는 데 쓸 수 있는 어떤 식별자로도 색인되지 않습니다. 이미지 내용을 로깅하지 않습니다. 인코딩 서비스는 컷오버 이전 v1이 제공하던 것과 같은 테넌트들 사이에서 공유되며, 테넌트별 CORS, 속도 제한, HMAC 서명 캐노니컬 URL을 갖춥니다.
- Remove Background는 임시 업로드와 세그멘테이션 호출이 진행되는 동안(보통 1~2초) 이미지를 보고, 그 뒤 임시 사본은 R2 수명 주기 규칙에 따라 삭제됩니다. 당신의 바이트를 제3자 모델 제공업체에 넘기는 일은 결코 없습니다. BiRefNet 모델은 Cloudflare 자체 인프라 안에서 실행되며, remove.bg, fal.ai, Replicate 방식의 외부 API가 아닙니다.
- AI 업스케일은 초해상도 호출이 진행되는 동안 이미지를 보고, 결과를 돌려준 뒤, 당신과 연결된 어떤 것도 보관하지 않습니다.
모든 경로에서 저희 분석 제공업체(Cloudflare Web Analytics)는 집계 페이지뷰 데이터, 즉 URL, 국가, 브라우저 계열, Core Web Vitals를 기록합니다. 쿠키 없음, 영구 식별자 없음, 개인과 연결된 것은 아무것도 없습니다.
첫 사용 시 WebAssembly 모듈을 다운로드하는 도구(HEIC 디코더, ISNet ONNX 모델)의 경우, 저희 호스팅 제공업체는 누군가가 그 모듈을 가져갔다는 것을 파악합니다. CSS 파일을 가져간 것을 파악하는 것과 같습니다. 모듈 자체에는 당신의 이미지에 관한 정보가 전혀 담겨 있지 않습니다.
전체 데이터 목록은 개인정보 처리방침에 있습니다.
기술 스택
궁금한 분들을 위해,
- Astro, 정적 사이트 생성기입니다. 모든 페이지는 순수 HTML로 제공되며, 인터랙티브 도구가 있는 곳에만 점진적으로 향상된 JavaScript “islands”가 사용됩니다.
- 커스텀 프로퍼티를 쓴 바닐라 CSS, Tailwind도 CSS-in-JS도 없습니다. 전체 디자인 시스템이 단 하나의
tokens.css파일입니다. canvas.toBlob과<canvas>, 브라우저 측 도구와 미리보기의 JPEG, PNG, WebP, AVIF 인코딩입니다.- Cropper.js, 자르기 사각형 인터랙션 레이어입니다.
- ONNX Runtime Web, Remove Background의 ISNet WebAssembly 폴백을 실행합니다.
- Cloudflare, 정적 빌드를 호스팅하고 엣지에서 제공하며, 기본 Remove Background 경로 뒤에서 Workers, R2, 이미지 세그멘테이션 파이프라인(BiRefNet)을 운영합니다.
- Node 위의 Fastify와
sharp·libvips, 독일의 Hostinger VPS에 있는api.araluma.com의 Compress 다운로드 서비스입니다. - Cloudflare Web Analytics, 쿠키 없는 집계 페이지뷰 카운트입니다.
브라우저 지원
모든 도구는 Chrome, Firefox, Safari, Edge의 현재 버전과 이전 버전에서 데스크톱과 모바일 모두 작동합니다. 사이트는 점진적 향상을 사용합니다. 브라우저가 더 새로운 API(예를 들어 showSaveFilePicker나 OffscreenCanvas)를 지원하면 그것을 쓰고, 지원하지 않으면 이전 방식으로 폴백합니다. “지원되지 않는 브라우저” 장벽은 없습니다.
유일한 필수 요건은 JavaScript(모든 도구에 필요)와 네트워크 연결(서버 경유 경로를 쓸 때만 필요하며, 브라우저 전용 도구는 첫 페이지 로드 후 완전히 오프라인으로 작동합니다)입니다.
문의
다루지 않은 내용이 있나요? support@araluma.com으로 이메일 주세요. 기술적인 질문도 환영합니다.