ZeroVM은 무엇을 가상화합니까?


12

ZeroVM으로 머리를 감싸는 데 약간의 문제가 있습니다.

Wordpress를 실행하고 싶다고 가정 해 봅시다. 한 가지 옵션은 VMWare, Virtualbox, Xen, CoreOS 또는 이와 유사한 것을 실행하는 호스팅 된 가상 서버를 임대하는 것입니다. 이 경우 가상화되는 것은 서버와 해당 하드웨어입니다. 가상 서버가 프로비저닝되면 SSH로 연결하고 서비스를 시작 및 중지하고 시스템을 다시 시작할 수 있습니다.

온라인에서 읽은 내용은 ZeroVM이 앱을 가상화한다고 말하지만 그 의미를 이해하지 못합니다. ZeroVM은 Docker 와 유사한 컨테이너를 제공 합니까?

위의 예를 계속 하면 ZeroVM을 사용하여 Wordpress를 어떻게 실행할 수 있습니까? 그렇게하면 어떤 이점이 있습니까?

Wordpress 예제를 공유 호스팅 환경으로 확장 해 봅시다.

ZeroVM 홈페이지는 다음과 같이 말합니다.

ZeroVM 앱 또는 zapp에 대한 각 요청은 독립 인스턴스를 생성합니다. 각 인스턴스는 격리되고 안전하며 5 밀리 초 이내에 회전하며 요청이 완료되면 소멸됩니다. ZeroVM의 속도는 각 프로세스에서 발생하며 단일 프로세스를 실행하는 데 필요한 것만 가상화합니다.

이것은 ZeroVM 앱에 대한 각 요청이 새로운 프로세스를 생성한다는 것을 의미합니까? 서버에서 둘 이상의 ZeroVM 앱을 실행하는 경우 어떻게됩니까? 요청이 올바른 앱으로 어떻게 전달됩니까?

답변:


9

좋은 질문! 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와는 매우 다른 아키텍처이지만 더 확장 가능한 아키텍처입니다. 실제로 이것을 구현하는 것은 현재 독자의 연습으로 남아 있습니다.


4

출혈 가장자리 인 것 같습니다. 랙 스페이스는 LXC에서 '비보안 적'인 것으로 비난하고 있지만 백서가 주제에 나타날 때까지 보류 판단을합니다.

  • ZeroVM 제공 컨테이너는 Docker와 유사한 컨테이너입니까?

출처 : Info World "ZeroVM과 Docker와 같은 프로젝트 간에는 명백한 비교가 가능하지만 의도는 약간 다릅니다. Docker는 다양한 환경을 통한 배포를위한 패키징에 관한 것입니다. ZeroVM은 앱을 가상화하는 방법을 제공하는 것에 관한 것입니다. "전체 VM 솔루션이 과도하고 실제로 필요하지 않은 특정 환경에서 간단한 방법으로"

  • ZeroVM을 사용하여 Wordpress를 실행하려면 어떻게합니까?

아마도 ZeroVM을 위해 아파치를 컴파일해야 할 것입니다. 그러한 조건에서 얼마나 많은 Wordpress 코드베이스가 손상되는지 확실하지 않습니다.

  • 장점은 무엇입니까?

Rackspace의 마케팅 부서는이를위한 최고의 사례를 만들 것입니다 : 여기

  • 어떤 도전에 직면하게됩니까? (미래 독자들을 위해 추가됨)

소프트웨어 / 플랫폼은 최첨단이므로 블리딩 에지 ​​소프트웨어 실행과 관련된 모든 시험 및 난이도가 적용됩니다. (지원을위한 대규모 사용자 기반 부족 포함). 새로운 " 플랫폼 "이기도합니다 . 소프트웨어 개발자는 가상화 된 플랫폼을 다루는 데 익숙해지고 있습니다. 그러나 이것은 하드웨어 (VMWare. OracleVM, HyperV) 및 커널 가상화 (OpenVZ)를 넘어 완전히 새로운 유형의 가상화입니다. 게임 초반에 예상 한대로 아무것도 작동하지 않더라도 놀라지 마십시오.


2

위의 예를 계속하면 ZeroVM을 사용하여 Wordpress를 어떻게 실행할 수 있습니까? 그렇게하면 어떤 이점이 있습니까?

ZeroVM은 본질적으로 PaaS를 구축하기위한 플랫폼입니다. 따라서 위의 질문은 "ZeroVM world"에서 거의 의미가 없습니다. 그러나 누군가 누군가를 위해 ZeroVM 인프라를 설치했다고 가정 해 봅시다 ( "제공자"라고 함). 그런 다음 해당 인프라 위에 자체 PaaS 또는 SaaS를 생성 할 수 있습니다. WordPress의 경우 : Provider는 제공자 인프라에서 코드를 실행할 수있는 기능을 제공하며, 코드가 실행될 때 WordPress를 실행할 수 있습니다. 코드가 실행되고 있지 않으면 지불하지 않습니다. 즉, 누군가 워드 프레스 페이지를 열면 응답이 사용자에게 전송 된 후 요청에 대해 비용을 지불하게됩니다. 또한 각 ZeroVM 인스턴스는 하나의 요청을 처리하므로 WordPress 사이트는 기본적으로 한 페이지를 한 사용자에게만 제공하면됩니다. 그리고 워드 프레스가 MySQL 데이터베이스에 대한 PHP 인터페이스이기 때문에 "워드 프레스"가 실제로 필요하지 않다고 주장합니다. 한 명의 사용자와 한 명의 요청의 경우 중앙 데이터베이스가 필요하지 않습니다. 등등.

이것은 ZeroVM 앱에 대한 각 요청이 새로운 프로세스를 생성한다는 것을 의미합니까?

예, 아니오 사용 방법에 따라 다릅니다. 각 요청이 완전히 다른 코드 기반을 가진 완전히 다른 앱이라면 그렇습니다. 새로운 프로세스가 필요합니다. 그러나 각 요청이 PHP 또는 WSGI 웹 앱에 대한 호출 인 경우 ZeroVM은 플랫폼의 설정 시간을 절약하여 요청을 훨씬 빠르게 제공하는 "데몬"역할을 할 수 있습니다 (예 : WSGI 앱의 경우 파일 시스템 + python + wsgi 설정). ).

요청이 올바른 앱으로 어떻게 전달됩니까?

현재 인프라는 Swift 객체 저장소에 통합 되었습니다 . Swift 객체 요청은 특정 코드 조각의 실행을 트리거합니다. 또는 특정 URL 로의 POST는 POST 요청 페이로드의 실행을 트리거합니다. 물론 웹 서버 또는 분산 대기열과 같은 다른 유형의 통합도 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.