아티클
클라이언트 측 처리란 무엇인가요?
대부분의 파일 도구는 문서를 원격 컴퓨터에 전송하여 무거운 작업을 처리한 후 결과를 돌려받는 방식으로 작동합니다. 클라이언트 측 처리는 그것을 뒤집습니다. 내 브라우저가 직접 작업을 수행하고 파일은 기기를 떠나지 않습니다.
도구가 작동하는 두 가지 방식: 내 컴퓨터냐, 그들의 컴퓨터냐
서버 측 처리에서 파일을 업로드하는 것은 세탁물을 맡기는 것과 비슷합니다. 넘겨주면 원격 기기가 처리하고, 나중에 결과를 받습니다. 클라이언트 측 처리는 집에서 빨래하는 것과 더 비슷합니다. 도구는 브라우저 탭 안에서 실행되고, 메모리에서 파일을 읽어 처리한 후 결과물을 돌려줍니다. 파일이 네트워크 연결에 닿는 일은 전혀 없습니다. 웹사이트는 처리 코드를 한 번만 전달하면 됩니다. 그 이후에는 모든 작업이 사용자 측에서 이루어집니다.
WebAssembly가 브라우저에 가져온 것
오랫동안 브라우저는 JavaScript만 실행할 수 있었습니다. 인터페이스에는 충분하지만 동영상 재인코딩이나 대용량 이미지 압축 같은 작업에는 너무 느렸습니다. WebAssembly(보통 WASM으로 줄여 씁니다)가 그것을 바꿨습니다. 브라우저가 네이티브에 가까운 속도로 실행할 수 있는 컴팩트한 바이너리 형식으로, C나 C++로 작성된 코드를 WASM으로 컴파일하여 플러그인 없이 브라우저 탭 안에서 실행할 수 있습니다. 데스크톱 소프트웨어를 구동하는 것과 동일한 코덱과 압축 라이브러리가 이제 페이지 안에서 직접 실행됩니다. JavaScript와 WebAssembly는 함께 작동합니다. JavaScript가 인터페이스와 조율을 담당하고 WASM이 고부하 연산을 처리합니다.
처리 중 실제로 일어나는 일
클라이언트 측 도구에 파일을 드롭하면 페이지는 아직 불러오지 않은 경우 소형 처리 엔진(대개 WASM 모듈)을 로드한 후 JavaScript를 통해 파일을 전달합니다. 실제 처리는 보통 Web Worker라고 하는 백그라운드 스레드에서 실행되어 작업이 진행되는 동안 브라우저 인터페이스가 계속 반응합니다. 이 과정에서 언제든지 브라우저의 네트워크 탭을 열어도 파일을 담은 요청은 나타나지 않습니다. 출력은 메모리에서 조합되어 다운로드 형태로 제공됩니다.
알아두어야 할 솔직한 트레이드오프
대형 WASM 엔진을 사용하는 도구를 처음 사용할 때 브라우저는 해당 엔진을 다운로드하여 캐시합니다. 이후에는 다운로드를 건너뛰고 완전히 오프라인으로 작동합니다. 처리가 내 기기에서 실행되므로 매우 큰 파일은 CPU와 사용 가능한 메모리가 허용하는 만큼 시간이 걸리며, 일부 무거운 작업은 데이터 센터가 더 빨리 끝낼 수 있습니다. 그 대신 얻는 것은 진짜입니다. 파일은 절대 전송되지 않고, 느린 연결에서 업로드를 기다릴 필요가 없으며, 첫 번째 로드 이후에는 인터넷 없이도 도구가 계속 작동합니다.
이 아티클의 도구
자주 묻는 질문
클라이언트 측 처리는 자동으로 데이터가 비공개가 되는 건가요?
클라이언트 측이란 파일이 설계상 서버로 전송되지 않는다는 의미이며, 그것이 개인정보 보호를 가능하게 합니다. 파일을 처리하는 동안 브라우저의 개발자 도구에서 네트워크 탭을 열어 직접 확인할 수 있습니다. 파일 데이터를 포함한 외부 요청이 없어야 합니다. 그럼에도 불구하고 라벨만 믿는 것보다 도구가 실제로 이렇게 작동하는지 확인하는 것이 현명합니다.
도구를 처음 사용할 때 왜 느릴 수 있나요?
브라우저는 처음 사용 시 처리 엔진(WASM 모듈)을 다운로드해야 하는데, 크기와 연결 속도에 따라 몇 초 걸릴 수 있습니다. 그 이후에는 엔진이 로컬에 캐시되어 이후 세션은 즉시 시작되고 오프라인에서도 도구가 작동합니다.