Google Cloudに安価な汎用仮想マシン「E2ファミリー」を追加

米国時間12月11日、Google(グーグル)はGoogle Cloud PlatformE2シリーズのバーチャルマシンタイプを追加したことを発表した。新しい汎用コンピュートインスタンスは大幅なコスト削減を可能にする。料金は現在のN1インスタンスと比較して最大31%安くなるという。

E2ファミリーは標準的なIntel(インテル)およびAMDのCPUをサポートするが、グーグルによれば独自のCPUスケジューラにより「仮想CPU、メモリをダイナミックに物理的CPU、メモリにマッピングし可用性を最大限に高める」ことができるという。さらに新システムは仮想マシンの作動場所についても柔軟であり、必要があれば別のホストに簡単に移動できる。これらの特徴を実現するため、グーグルは専用のCPUスケジューラを構築し、「レイテンシーの大幅な低減をもたらし、並列処理に必須なコ・スケジューラとしてLinuxのデフォルトシステムより優れている」という。新しいスケジューラのウェイクアップレイテンシーはマイクロ秒以下であり、コンテキストスイッチも高速だという。

グーグルがここで強調している効率化は他のマシンタイプにも適用できそうだ。 おそらく今後のアップデートでGoogle Cloudの他のインスタンスファミリーにも同様の改善がなされていくだろう。

グーグルは新しいインスタンスがライバルの同種のプロダクトより優れていると断言しているのが興味深い。同社は本日の発表で「他のクラウドベンダーの同種のプロダクトと比較してい、E2バーチャルマシンは複雑な料金計算や人為的なスロットリングの必要なしにCPUを連続的に高負荷で稼働させるこことができる。これが可能となったのはCompute Engine仮想化テクノロジーとダイナミックなリソース管理能力の長年にわたる積み重ねによるものだ」と述べている。AWS、Azureの同種のマシンとE2ファミリーを比較したベンチマークの結果を見たいものだ。

これまでの例と同様、Googleでは事前に設定したコンフィグレーションのインスタンスのセットを提供する。最小構成はvCPUx2、メモリ8GB、最大はvCPUx16、メモリ128GB。さらに負荷の小さいワークロードの場合、Google Cloudは新たにE2ベースで既存のf1-micro、g1-smallのマシンタイプを提供する。構成はvCPUx2、メモリは1GBから4GBでof RAMでCPUのベースラインパフォーマンスは0.125 vCPUから0.5 vCPUまでとなっている。

【Japan編集部追記】 E2マシンタイプは米国、ヨーロッパでは提供されているが、まだ東京、大阪リージョンでは提供されていない。アジアでは台湾、シンガポール・リージョンで提供されている。

原文へ

(翻訳:滑川海彦@Facebook

macOS mojave登場前にParallels 14をじっくり使ってみた

毎年、この時期にmacOSの新バージョン登場に先駆けて必ずアップデートを発表する米パラレルズ社が、最新版のParallels Desktop 14 for Macを発売中だ。Parallelsは、macOS上でWindowsなど、ほかのOSとそのアプリを実行可能にする、いわゆる仮想化ソフト。ほかにも同様のアプリは存在するが、Parallelsは動作の安定性、速度、UIの完成度などで群を抜いていて、このジャンルのトップランナーと言える。

最近では、分野を問わず、このようなタイミングで定期的に新バージョンをリリースするmacOS用アプリも、ほかにはあまり見当たらなくなった。その意味でも、ParallelsはMacユーザーにとって頼もしい存在だ。

Parallelsの一般的な特徴、新機能、動作条件、価格などについては公式サイトに譲るとして、ここでは実際に最新版を動かしてみながらParallelsならではの機能や、そのメリットを紹介していくことにしよう。

「シームレス」の追求

そもそも現在のMacには、アップル純正のBoot Campがあり、Macの内蔵ストレージのパーティションを分割することで、macOSに加えてWindowsをインストールして起動することも可能となっている。それなのに、仮想化ソフトを利用することに、どれほどのメリットがあるのかという疑問を抱く人もいるだろう。

Boot Campは、MacでmacOS、またはWindowsのいずれかを選んで起動することを可能にする仕組みだ。両OSを同時に使用することはできず、常にどちらか片方だけとなる。また、両者のファイルシステムの違いから、起動しているOSから起動していないOSのパーティションへのアクセスにも制限があり、両者の間には高い壁があるようにも感じられる。そのあたりも含めて、アップル自身のBoot Campサポートが徐々に先細りになっているような雰囲気があることも否定できない。

ひと言で言えば、そのようなユーザーの不満や不安を一掃してくれるのがParallelsだ。Parallelsを使えば、WindowsがいわばmacOSのアプリとして動作する。Windowsは、macOSのファイルシステム上に作成した仮想ディスク上にインストールされ、そこから起動される。Windowsが使用するメモリもmacOSのアプリケーション用のメモリから割り振られる。こうした構成によって、両OSはもちろん、その上のアプリを1台のMacで同時に起動して利用できる。両OS間のファイルの共有も、ドラッグ&ドロップも含めて、自由自在と形容できるレベルに達している。

こうしたParallelsの動作は、あらゆる部分で「シームレス」であることを追求しているように感じられる。そう思わせる特徴を順に見ていこう。

何も手を触れる必要のないWindowsのインストール

初めてParallelsを使用する際には、MacにParallels本体をインストールするのはもちろん、さらにその上に「仮想マシン」を作成する必要がある。その仮想マシン上にはWindowsや、そのほかのOSをインストールすることも必要となる。Parallelsでは、その仮想マシンの作成とOSのインストール作業が、ほとんど文字どおりワンタッチで完了する。

Windowsは、言うまでもなく有料のOSなので、何らかのかたちで購入手続きが必要だ。

01InstallWin10

何も持っていないところから始める場合には、Parallelsのインストール操作の中でMicrosoft Storeからクレジットカード決済でライセンスを購入し、そのままインストーラーのイメージをダウンロードしてインストールできる。すでにライセンスを持っていれば、そのままダウンロードを開始し、インストール後にアクティベーションを実行すればいい。とりあえず試してみたい場合も、ライセンスを持っている場合と同様に進んで、インストールしてひととおりの動作を確認した後に購入を検討することができる。

購入手続きを別にすれば、これらのインストール作業では、何を入力する必要もなく、Windowsのインストール完了まで一度も停止することなく進行する。

02Installed.png

Windowsのユーザーアカウントも、とりあえずはmacOSのアカウントと同じ名前で設定される。必要なら後で追加したり、入れ替えたりすればいい。Windowsの基本的な設定も、すべてデフォルトのままとなるが、このあたりはかなり割り切っている。

いずれにしても、作業の途中で停止して、ユーザーに選択や入力を強いるステップを極力廃した設計は、まさにシームレスを目指したものだろう。

LinuxやmacOSも「ゲストOS」として利用可能

Parallelsでは、Parallels本体がその上で動作するOSのことを「ホストOS」、Parallelsの仮想マシン上で動作するOSを「ゲストOS」と呼んでいる。

ホストOSは、当然ながらmacOSなのだが、この時期にParallelsがアップデートされるのは、毎年秋に登場する最新のmacOSをホストOSとして問題なく利用できるようにするためだ。Parallelsは常にmacOSに先行して登場するので、現時点ではまだ正式版がリリースされていないMojaveに対応することを保証した上で発売している。

Windowsを利用する場合には、もちろんWindowsがゲストOSとなる。ゲストOSとして利用可能なのは、基本的には標準的な「PC」にインストール可能なOSだ。Linux系のOSをMac上で利用するためのもっとも手軽な方法としてParallelsを挙げることもできる。しかしほかにも通常のPCにはインストールしにくいOS、例えばAndroidや、普段はホストOSとして動いているmacOSを、仮想マシン上で利用することも可能となっている。

Windows以外のOSで、無償で入手、利用が可能なものは、あらかじめParallelsが用意している専用のサーバーからダウンロードして、やはりワンクリックでインストールが完了するようになっているものが多い。Linuxでは、Ubuntu、Fedora、CentOS、Debian GNUといった各種のディストリビューションが揃っている。これらのOSと、Android 7については、目的のOSをインストール済みの仮想マシンのイメージをダウンロードして、そのまま動作可能となる。そのぶん、処理は迅速だ。

Parallelsがサーバーで提供する無料OSの仮想マシンの種類は、情勢の変化などによって、入れ替わる可能性がある。例えば、以前はChromium OSも用意されていたが、現在ではサーバーから削除されている。とはいえ、サーバーにないOSでも、PC用のインストーラーを用意すれば、空の仮想マシンに手動でインストールして利用できる場合が多いはずだ。

macOSは、もちろん通常のPCにそのままインストール可能なOSではないが、Parallelsは特別にMac用の仮想マシンも用意している。そのため、使用しているMacのハードウェアの条件に依存することなく、新旧のmacOSが利用できることもある。例えば、次期バージョンのMojaveは、2011年以前のMacモデルはサポートしない。今回テストに使用したiMacは2011年製なので、直接Mojaveをインストールすることはできないが、Parallelsの仮想マシン上にはベータ版をインストールできた。

03ControlCenter.png

逆に、現在のMacにはインストールできないSnow Leopard(サーバー版)などを、仮想マシン上で使うことも可能だ。

なおParallelsでは、別パーティションにインストールされているBoot CampのWindowsを、特別な仮想マシンとして登録して利用することも可能だ。その場合には、通常の仮想マシンでは可能な実行のサスペンド(一時停止)、途中経過をスナップショットして保存する機能、仮想マシンを過去の状態に戻すロールバックなどが利用できないという制限はあるものの、それ以外は通常の仮想マシンとほぼ同様に使える。

OSの違いを極力意識させないアプリケーション環境を提供

Parallelsのシームレスという特徴が最大に発揮されるのは、一般のユーザーにとってもっとも重要なアプリ環境においてだろう。簡単に言えば、WindowsアプリをあたかもMacアプリのような感覚で操作し、利用することができる。Parallelsの最大の目的は、Macでは直接動かすことのできないWindowsアプリを利用できるようにすることにあるのだから、これは最も重要な機能と言える。

デフォルトの設定では、仮想マシンの上で動作するWindowsアプリのアイコンが、MacのDockに表示される。それにより、Macのアプリと区別なく起動や切り替えの操作が可能となる。

04Dock.png

Dockに直接登録されていないアプリも、Dockにフォルダーとして登録されるWindowsのアプリフォルダをたどって起動することが可能だ。これはそのアプリを含む仮想マシンが起動していないときでも選択可能で、その際には仮想マシンのWindowsが立ち上がってから、目的のアプリが起動することになる。Macの環境にもよるが、その動作は目を疑うほど速い。

さらにデフォルトでは、MacのアプリがWindows側からも利用できるような設定になっている。さすがにこれはやり過ぎと感じられる場合が多いだろう。不要なら、設定のチェックボックス1つでオフにできる。

05OptionApp.png

多彩な動作形態

Parallelsでも、仮想マシンを作成した直後は、仮想マシン上のOSのデスクトップが、macOSの1つのウィンドウとなって動作する。仮想化ソフトにとって、もっとも一般的な動作形態だ。

Parallelsには、その形態の特別な場合として、前バージョンから「ピクチャ・イン・ピクチャ」と呼ばれる動作形態も用意されている。これは縮小された仮想マシンのデスクトップが、macOSの小さなウィンドウに表示される形態だ。

06Desktop.png

仮想マシンの動作に応じて、リアルタイムで表示が更新されるのはもちろん、やはり縮小表示されるマウスポインターを使った操作も可能だ。キー入力も通常どおり受け付ける。

また「コヒーレント(Coherent)」と呼ばれる動作形態では、仮想マシンのデスクトップではなく、その上で動作する個々のアプリが、それぞれmacOSのウィンドウに表示される。

07Coherent.png

シームレスもここまで来ると、もはやどちらのOSのアプリであるかを意識せずに、個々のアプリの操作に没頭できる。

本物のPCを超える仮想PCならでは使い勝手

Parallelsの仮想マシンは、本物のPCの動作をエミュレートしたもので、その上で動作するソフトウェアに、あくまで仮想の動作環境を提供する。それだけに、本物のPCには真似のできないような使い方も可能となる。

もっともわかりやすい例としては、本物のWindowsマシンでは決して撮ることのできないスクリーンショットを、簡単に撮影することができる。例えばWindowsの起動途中や、OSの不具合でクラッシュして、いわゆるブルースクリーンになった状態では、Windowsの機能を使ってスクリーンショットを撮ることはできない。しかし、macOSのウィンドウの中で動き、macOSのウィンドウを画面全体として表示している仮想マシンなら、macOSの機能を使って撮ればいいだけだ。

こうした機能は、一般のユーザーにはさほど有用ではないかもしれない。しかし、Windowsアプリの開発者やデザイナーにとっては、非常に役に立つことがある。プロユーザーを意識した機能はほかにもある。例えば、フルスクリーンモードでは、Windowsのビデオカードのガンマ設定で表示できる。macOSとWindowsの微妙な色の違いも、1台のMacで比較できるのだ。アプリの動作検証では、複数のバージョンのWindows上での細かな挙動の違いなども、1台のMacで観察できる。仮想マシンが接続されたネットワークについても、送受信の帯域幅、パケット損失、遅延など、自由に設定可能で、劣悪なネットワーク環境でのアプリの動作の検証にも使える。

08Network.png

さらにParallelsのPro版には、Windowsの標準的なアプリ開発環境Visual Studioのプラグインが付属している。そのプラグインを使えば、Parallels上で動作している複数の仮想マシンをまたいだリモートデバッグが可能となる。特にWindowsのアプリ開発者にとっては、Parallelsを、本物のPCを超えた有力な開発ツールととらえることも可能なのだ。

Parallelsは、あくまで仮想マシンでありながら、本物のPCに引けを取らないどころか、場合によって本物を超える速度と使い勝手を実現している。それこそが、究極のシームレスと言える特徴だろう。特に仮想化ソフトにとってもっとも重要な動作速度の向上は、Parallelsのバージョンが更新されるたびに、より高いレベルを引き上げられてきた。

最新版のParallels 14では、プロセッサーの速度を最大2倍にすると言われているAVX-512命令もサポートした。今のところCannon Lakeプロセッサーを搭載するiMac Proでしか有効ではないものの、今年の秋以降に登場するMacでは、サポートも広がるはずだ。それも含めて、Macの能力や用途を拡張するためにできることには労力を惜しまないというParallelsの開発姿勢が、このアプリの最大の魅力なのかもしれない。

コンテナを軽量VMで隔離するKata Containersがついにv1.0をリリース

OpenStack Foundationがホストする初めてのOpenStack以外のプロジェクトKata Containersの、バージョン1.0が今日(米国時間5/22)ローンチされた。それはコンテナのワークロードを隔離して動かすためのシステムで、元々IntelとHyperにそれぞれあった類似のプロジェクトをマージしたプロダクトだ。デベロッパーはKata Containersを使って、DockerやKubernetesをベースとするコンテナに、従来の仮想マシンのようなセキュリティと隔離機能を持たせることができる。

そのためにKata Containersは、各コンテナにきわめて軽量な仮想マシン(VM)を実装し、ハードウェアレベルの隔離を与えるが、ただしそれによる大きなオーバヘッドは生じない。そしてコンテナの標準的な定義に合わないように見えるKata Containersは、実はOpen Container Initiativeの仕様やKubernetesのコンテナランタイムインタフェイスと互換性がある。これをサービスとしてホストするのはOpenStack Foundationだが、Kata Containersは使用するプラットホームやアーキテクチャを特定しない。

IntelとCanonicalとRed Hatが、このプロジェクトの財政的サポートを表明しており、また99cloud, Google, Huawei, Mirantis, NetApp, SUSEなど多くのクラウドベンダーたちも支援を発表している。

このたびv1.0がリリースされたことにより、Kataのコミュニティは、このIntelとHyperの合作技術がついにプロダクション用途にまで成熟したことをシグナルしている。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa

IntelとHyperがOpenStack Foundationとパートナーしてコンテナのセキュリティで独自技術

【抄訳】
すでに周知のように、OpenStack Foundationは今後、その名前が示すような単一のビッグプロジェクトだけでなく、もっと多様なオープンソースプロジェクトのホームになる、と宣言している。そこで今日、同Foundationが発表したのが、Kata Containersプロジェクトのローンチだ。

Kata Containersは、実行環境の仮想化/隔離化に関してコンテナと仮想マシンの良いとこ取りをするようなオープンソースプロジェクト(GitHub上)だ。コンテナからはそのスピードと柔軟性と管理性を、そして仮想マシンからはとくにそのセキュリティをいただく。この技術のベースは、IntelのClear Containersと、Hyperのハイパーバイザーランタイム(仮想マシン環境)runVだ。

OpenStack Foundationの事務局長Jonathan Bryceによると、彼のこの組織は、クラウド上の本格的なワークロードの実行を容易にするような、別のプロジェクトを求めていた。“OpenStack Foundationではユーザーコミュニティにフォーカスし、そのニーズに応えるものを作っている。それが、OpenStackの本来のサービスより大きいことも、ありえる”、と彼は語る。

では一体、Kata Containersプロジェクトとは何なのか? その基本的な着眼は、確かに優れた技術であるコンテナにも、長年手付かずのセキュリティの問題がいくつかあることだ。とくに複数のコンテナが仮想マシンを共有して動いていくときには、それぞれを完全に隔離孤立することが難しい。Kata Containersはこの問題を、それぞれのコンテナにきわめて軽量な仮想マシンとカーネルを与え、各コンテナないしコンテナポッドが自分だけの隔離された環境で動き、ネットワーキングもI/Oもメモリそれぞれ独自に割り当てられるようにすることで、解決しようとする。またIntelがプロセッサーに組み込んでいる仮想化技術により、ハードウェアレベルでの隔離孤立も利用する。

Kata Containersは現在、Kubernetes, Docker, およびOpenStackを統合し、x86アーキテクチャのプロセッサーでのみ動く。サポートしているハイパーバイザーは、KVMのみである。今後、他のアーキテクチャやハイパーバイザーにも拡張していくプランはある。

HyperとIntelとの技術融合には約1年を要しているが、この技術は多方面から期待されていて、すでにCanonical, China Mobile, CoreOS, Dell/EMC, Google, Huawei, JD.com, Mirantis, Suse, Tencent, ZTEなどがこれをサポートしている。

【後略】

[原文へ]
(翻訳:iwatani(a.k.a. hiwa

いまさら聞けないコンテナ入門

wtf-containers

いまどき開発者会議に行って、ソフトウェアコンテナについて聞かずに済ますことはできない:Docker、Kubernetes、Mesos、その他多くの海事にちなんだ名前が耳に入ってくる。Microsoft、Google、Amazonそして他の皆も、昨年あたりからこのバンドワゴンに飛び乗っているようだ、だが皆が夢中な理由は何だろう?

コンテナがこのように大変な注目を集める理由を理解するために、まず物理的コンテナのことを少し考えてみよう。現代の海運業界が、現行の形で機能しているのは、私たちが輸送用コンテナサイズに対して、限られた数の標準化をしているおかげである。この規格が出現する前には、大量に何かを出荷することは、複雑で面倒なプロセスだった。たとえばスマートフォンが載せられたパレット(フォークリフトですくい上げることのできる荷台)を、船から降ろしてトラックに積むときに、どれほど苦労するか想像してみると良いだろう。アジアからスマートフォンを持って来る際に、特化した船を使う代わりに、私たちは、荷物を全てコンテナに収納することができる。そうしたコンテナがどのコンテナ船にもフィットすることは保証されている。

ソフトウェアコンテナの背後にある考えは基本的に同じだ。完全なオペレーティングシステムとソフトウェア(およびあなたのソフトウェアが依存するソフトウェアも)を出荷する代わりに、単にあなたのコードとそれが依存するものだけをコンテナへパックすれば、どこでも動作させることができる ‐ それらは通常かなり小さいため、1台のコンピュータ上に多くのコンテナを詰めることができる。

なぜこれが、そんなに大したことなのだろう?コンテナが普及する前には、いわゆる「仮想マシン」が、1台のサーバーで互いに独立した多くの異なるアプリケーションを実行させる手段として、有力なものだった。それこそが第1世代のクラウドアプリケーション(そしてウェブホスティングサービスまでも)を可能にしたテクノロジーだったのだ。すべてのアプリケーションのために、いちいち新しい物理サーバーを立ち上げていたら、コストが屋根を突き破ってしまっていただろう。

仮想マシンの動作は、オペレーティングシステムとコードを一緒にパッケージすることで行われる。仮想マシン上のオペレーティングシステムは、自分自身の専用サーバー上で動作していると思っているものの、実際には、サーバーを多くの別の仮想マシンたちと共有しているのだ ‐ それぞれの仮想マシンがそれぞれのオペレーティングシステムを持ち、そしてお互いを知ることはない。それら全ての仮想マシンの下にあるのが、ホストオペレーティングシステムで、これら全てのゲストそれぞれに、自分が世界の中心だと思わせる役割を果たしている。しかしこれが問題であることはおわかりだろう。ゲスト仮想マシンは基本的にエミュレートされたサーバー上で動作し、そのことは多くのオーバーヘッドを生み出し、動作を遅くする(まあその代わり、同じサーバー上で沢山の異なるオペレーティングシステムを実行できるのだが)。

輸送用コンテナの話に沿うならば(そしてそのメタファーを不条理まで突き詰めるならば)、これは巨大なコンテナ船を所有することに似ている。その巨大なコンテナ船には沢山のプールがあり、そのプールにはそれぞれ特別なコンテナ船が浮かんでいるのだ。

それぞれのコンテナは全く異なる動作をする。それらは単にアプリケーションと、それが依存するライブラリやフレームワークなどだけを含むので、1つのホストオペレーティングシステム上に沢山のコンテナを置くことができる。サーバー上のオペレーティングシステムは、1つのホストオペレーティングシステムだけで、コンテナたちはそれと直接対話をすることができる。これによって、コンテナを小さく、オーバーヘッドも著しく低く保つことが可能になる。

仮想マシンは、ゲストとホストオペレーティングシステム間のエミュレーション層として、いわゆる「ハイパーバイザー」を使用する。コンテナの場合、コンテナエンジンが大雑把ではあるがこれに対応している。中でもDockerエンジンが現在最も人気の高いものである。

コンテナは、ずいぶん昔にLinuxのコア機能となったのだが、それらはまだまだ使うことが難しかった。Dockerはコンテナを使いやすくするという触れ込みで立ち上がり、開発者たちは素早くそのアイデアを理解した。

コンテナは、開発者たちが、自分のコードがどこにデプロイ(配備)されても、変わらずに実行できるようにすることを容易にする。そしてそれは、しばしば「マイクロサービス」と呼ばれるものを実現可能にする。ひとかたまりの大きなモノリシックなアプリケーションにする代わりに、マイクロサービスはアプリケーションを互いに対話できる小さな部分に分割する。これが意味することは、異なるチームがアプリケーションのそれぞれ異なる部分に対して作業をしやすくするということだ。それぞれの部分が対話する方法を大幅に変えない限りは、という条件付きだが、チームは独立して仕事を進めることができる。これにより、ソフトウェア開発が加速され、起き得るエラーを簡単にテストすることができるようになる。

これらのコンテナすべてを管理するには、他の専用ソフトウェア群が必要だ。その1つの例がKubernetes(当初Googleによって開発された)で、これはコンテナを異なるマシン上に送り出す手伝いを行い、きちんと実行されることを保証し、需要が高まった際に特別なアプリケーションを載せた幾つかのコンテナを自動的に立ち上げる。そしてもしコンテナ同士にお互いを認識させたいのなら、それぞれのコンテナにIPアドレスを割り当てる、仮想ネットワークを設定する手段が必要となる。

コンテナは、あらゆる種類のアプリケーションを実行することができるものの、仮想マシンとはかなり異なっているために、大企業がいまだに使っている多くの古いソフトウェアが、このモデル上には移行していない。しかしながら、仮想マシンは、そうした古いアプリケーションをAWSやMicrosoft Azureなどのクラウドサービスに移行させる役に立つ。このため、コンテナには多くの利点があるにも関わらず、仮想マシンも簡単にはなくなることはないだろう。

[ 原文へ ]
(翻訳:Sako)