「Eat Your Own Dogfood」のもと、
インフラに求められるスピードと快適性を追求
1998年の設立以来、仮想化ソフトウェアベンダーとして急成長を遂げるVMware。世界中に5000人以上のエンジニアを擁し、vSphereやvRealize Operationsなどの製品・ソリューションを数多く開発・提供してきた。その開発には「PERFORCE」が使用され、あらゆるタイムゾーンで日々1000万以上のオペレーション、1万以上のブランチ、日々100以上のマージが行われているという。
VMwareの代表的なプロダクツとして、仮想化ソフトのパッケージ「vSphere」があるが、2015年3月に6.0が公開されたように約1年~1年半ごとのメジャーアップデート、そして、その半年先にはマイナーアップデートというサイクルで改定が行われている。開発においては、小さなインスタンスをウォーターフォールでスピーディに作り、それぞれにテストを行なう。そのためテストの回数が多く煩雑になる。
そのvSphereを基盤として構築された、ハイブリッドクラウドプラットフォーム「vCloud Air」は、11のデータセンタで運用されており、ニーズに合わせた厳密な監視や最高のパフォーマンスが不可欠だ。また、ソフトバンクをはじめとするパートナーとの連携も重要事項であり、365日24時間の対応が欠かせない。
こうしたVMwareの製品・サービスの開発環境を改革するにあたり、Hu氏は「自分が出したものはまず自分で味わえ! Eat Your Own Dogfood」という表現を用いて、自社内でも満足のいくパフォーマンスを追求してきたと強調する。
「一貫したパフォーマンスの高さと安定性がVMware R&Dのインフラに求められていました。ディスクI/Oがボトルネックとなっていること、そして数名で何百ものサーバを担い、ストレージのエキスパートの育成時間もない。そうした状況下で快適な開発を可能にすることが求められていたのです」
そうした状況のもと、高速ソフトウェア構成管理ツール「PERFORCE」と、オールフラッシュアレイ「EMC XtremIO」の活用により、スピーディかつ容易な開発が可能な環境が整ったというわけだ。
自社とゲストのビジネススピード向上のために
~VMwareの開発環境における改革
クラウド上に新しい仮想環境を展開するためには、ソースコードを作り、インストールし、その上にホストとしてゲストの仮想マシン、たとえばWindows Exchangeや、サーバなどを構築する。その後、End to Endでのテストが必要となり、ようやく開発者に渡して開発が行われ、デプロイ&テストとなる。かつてはクラウド上に新しい仮想環境を展開するために10分はかかっていた。それが現在の環境では数秒でできるようになったという。
10分が数秒になったということは、小さな改善に思うかもしれない。しかし、当然ながら開発中にはテストも含め、このプロセスを幾度となく繰り返すことになるため、そこに時間がかかれば開発スケジュール全体に大きく影響する。つまり、この時間短縮は開発スピードに大きく貢献するというわけだ。
なお、このスピード向上のためには、フラッシュストレージが有効であり、マルチノードで同時に80000ものVM上でノードを走らせ、さらに関係する複数名のオペレーションが簡単に管理できる必要があった。かつてはこれを担保するために100のサーバを用いていたが、拡張性に限界を感じていたという。現在約5000人のデベロッパー、さらにCIビルドが1日30000以上、また4箇所に開発拠点が設置されているが、どこも同じように快適に開発できる必要があった。各拠点によって待機時間がバラバラという状況は望ましくなかったというわけだ。
Hu氏は、「XtremIOによって開発時はもちろん、テスト時も大きく時間を短縮することができました。さらに、バグレポートが迅速に開発側のもとに上がることで、いっそうの開発サイクルの短縮化に成功しました」とその成果について語る。そして、それはVMwareが提供する環境を利用するユーザにも大きな恩恵となることは違いない。
変化するQEの役割とテストの頻度
VMwareが自社のため、そして製品を使うユーザのために開発環境を改革するために、2番目のアプローチとして掲げたのは「Dev Owns Quality(開発者が品質を所有する)」の考え方だ。
これまでウォーターフォール型では、開発側がコードを完成させてからQE(クオリティエンジニア)のチェックを受けるという形だった。しかし、近年DevOpsが浸透し、開発側がクオリティを監視下におくようになったことで、コードに対する責任は開発側のものとなった。となれば、QEの役割として何をすればいいのか。Hu氏は「実にシンプルなこと」として、このように語る。
「開発側が中期的なテスト、たとえばユニットテストや機能テストを行うとすれば、QEは長期的なテストを行います。たとえばパフォーマンスやストレステスト、また包括的なフレームワークを作ることなどが該当します」
この開発側でのスピーディなテストとQEによる最適化により、QEから開発側への手戻りを削減するなど、効率化を図ることができる。その際、必要となるのが自動化だ。コードを自動的にチェックする仕組みにより、スピーディなテストが可能になるというわけである。なお、VMwareでは24時間サービスを提供しており、いつでも開発者をサポートする環境が整っている。開発スピードを担保することはもちろん、心理面でも安心を得られるというわけだ。
そして最後、3番目のアプローチとして「Refactor Testing」が紹介された。ここでもテストのスピードについて言及。そして、その最適化のためにもバケタイズ(分類)テストが必要だという。VMwareの調査によると、開発の現場では長年同じテストを繰り返しており、それが普通であると考えられてきた。しかし、その中で有用だったもの、結果が得られなかったものを振り分けて効率化を図ることで、テスト回数を減らせたという。また、ハードウェアを限定することで、テストマトリックスを減らし、さらなるテストの効率性向上を実現した。