좋은 질문! ZeroVM 팀에서 일하고 있으며 정리하는 데 도움이되기를 바랍니다.
ZeroVM은 Docker와 유사한 컨테이너를 제공합니까?
아니 정말. Docker는 LXC 및 기타 커널 기능을 사용하여 샌드 박스 환경을 제공합니다. ZeroVM은 전적으로 사용자 공간에서 실행되며 단일 응용 프로그램을 샌드 박스로 만듭니다.
간단히 말해 ZeroVM은 먼저 실행할 응용 프로그램의 유효성을 검사 한 다음 간단히 실행하여 작동합니다. 실행될 때 응용 프로그램은 기본적으로 추가 오버 헤드없이 실행됩니다. 그 뒤에 가상 머신이 없습니다.
응용 프로그램의 유효성을 검사하려면 특수한 형태의 x86 기계 코드로 크로스 컴파일해야합니다. 이 특별한 형태는 "안전한"것으로 정적으로 검증 될 수있는 좋은 특성을 가지고 있습니다. 무엇보다도 "안전한"은 코드가 ZeroVM에서 제공하는 특정 메모리 세그먼트 외부의 주소로 이동하지 않음을 의미합니다. 이 프로그램은 일반 시스템 호출을 호출 할 수 없으며 ZeroVM에서 제공하는 매우 좁은 syscall 인터페이스 만 호출 할 수 있습니다. 이 검증은 Google의 Native Client 프로젝트 에서 가져 왔습니다 .
ZeroVM을 사용하여 Wordpress를 실행하려면 어떻게합니까? 그렇게하면 어떤 이점이 있습니까?
원칙적으로 PHP 인터프리터 인 C 프로그램을 크로스 컴파일 할 수 있습니다. 그런 다음 ZeroVM은 샌드 박스에서 PHP 인터프리터를 시작하고 WordPress를 구성하는 PHP 파일에 피드를 제공 할 수 있습니다. ZeroVM은 읽기 전용 인 메모리 파일 시스템을 제공하며 이는 SQLite 데이터베이스를 읽는 데 사용될 수 있습니다. 그것은 당신에게 읽기 전용 WordPress 사이트를 제공 할 것입니다.
그러나 내가 본 것처럼 이것은 ZerovM의 주요 사용 사례는 아닙니다. ZeroVM과 함께 사용하려면 기존 데이터베이스가 많은 응용 프로그램을 다시 작성해야합니다. ZeroVM은 많은 데이터 항목을 병렬로 처리하려는 대규모 확장 가능 시스템에 적합합니다.
검색해야하는 1,000,000 개의 이메일이 있다고 상상해보십시오. 메일은 OpenStack Swift 또는 Amazon S3 와 같은 블록 스토리지에 저장됩니다 . 즉, 실제 파일은 몇 개의 스토리지 서버에 저장됩니다. 일반적으로 모든 메일을 검색하려면 여러 개의 컴퓨팅 노드로 모든 메일을 가져와야합니다. ZeroVM과 Swift 와의 통합을 통해 코드를 데이터로 전송할 수 있습니다 . 이는 대량의 가상 머신 이미지에 비해 코드가 작고 (메가 바이트), ZeroVM 샌드 박스에서 신뢰할 수없는 코드를 실행하는 것이 안전하기 때문에 가능합니다.
따라서 ZeroVM은 각 요청이 서로 다른 데이터에서 작동하는 확장 성이 뛰어난 아키텍처를위한 것입니다.
WordPress 사이트의 경우 이는 각 블로그 게시물을 별도의 데이터에 저장하고 각 게시물을 담당하는 전용 ZeroVM 인스턴스가 있어야 함을 의미 할 수 있습니다. 현재 파일 시스템은 읽기 전용이지만 파일을 읽기 / 쓰기로 만들 계획이 있으며 특정 블로그 게시물을 담당하는 ZeroVM 인스턴스가 주석과 같은 것을 처리 할 수 있습니다. 트래픽을 적절히 라우팅 할 수있는로드 밸런서가 필요합니다. 결과는 현재 WordPress와는 매우 다른 아키텍처이지만 더 확장 가능한 아키텍처입니다. 실제로 이것을 구현하는 것은 현재 독자의 연습으로 남아 있습니다.