단일 컴퓨터에서 실행되도록 설계된 일반 데스크톱 응용 프로그램(예: 비디오 편집 응용 프로그램)이 있다고 가정해 보겠습니다. 이러한 애플리케이션은 비디오 렌더링과 같이 계산량이 많은 백그라운드 스레드를 생성하는 경우가 많습니다.
이러한 무거운 계산 스레드를 더 강력한 시스템에 "오프로드"하고 사용자에게 원활한 방식으로 수행하는 것이 기술적으로 실현 가능한지 궁금합니다. 사용자의 컴퓨터는 UI 스레드만 실행하고 나머지 무거운 작업은 더 강력한 원격 컴퓨터에서 처리됩니다. 스레드가 계산을 수행하는 데 필요한 데이터(이 예에서는 비디오 파일)를 원격 시스템의 디스크에서 사용할 수 있다고 가정해 보겠습니다.
완전히 다른 두 개의 프로세서에 있는 두 개의 스레드를 마치 동일한 시스템에서 실행되는 것처럼 서로 통신하는 것이 쉽지 않다는 것을 이해합니다. 하지만 무엇을 의미하는지 궁금합니다.근본적인 한계이 사용 사례에 대해 알려진 솔루션이 있는지 확인하세요.
답변1
단일 시스템에서 실행되도록 설계된 "일반" 데스크탑 애플리케이션은 이러한 방식으로 스레드를 분할할 수 없습니다.
이를 위해서는 프로그래밍된 컴퓨터 간 인터페이스를 갖춘 특별히 제작된 애플리케이션(예: 원격 데스크톱 애플리케이션)이 필요합니다.
일반적으로 두 컴퓨터 사이에 전용 고속 연결이 없으면 연결과 관련된 대기 시간으로 인해 화면이 너무 동적인 비디오 응용 프로그램에 적합하지 않게 됩니다.
답변2
이는 작업에 따라 매우 다르며, 원활하게 정의하는 방법에 따라 달라집니다.
특정 유형의 부하에서는 이런 일이 이미 발생합니다. 실제로 정의한 비디오 편집 작업은 경우에 따라 바로 그 작업을 수행할 수 있습니다. 용어는 "렌더링 팜"입니다.
보다 일반적으로 다양한 유형의 "클라우드 컴퓨팅"이 이 문제를 해결합니다.
(이 답변의 문제는 Seamlessley를 정의하는 방법입니다. 이러한 종류의 작업을 원활하게 감독하고 만들 수 있는 아키텍처(주로 소프트웨어 아키텍처)가 확실히 있지만 적당히 복잡하고 작업에 따른 설정이 필요합니다. 모든 작업이 이 모델에 적합한 것은 아닙니다. 특히 대역폭이 문제가 될 가능성이 있거나 작업을 병렬화할 수 없는 경우.)