「de:code 2017」レポート:Cloud FoundryアプリをOpenStackとAzureへ展開
サーバー10万台規模の自社クラウドを持つヤフーがなぜAzureを?
2017年06月12日 12時00分更新
日本マイクロソフトは5月23日~24日、開発者向けイベント「de:code 2017」を開催した。24日のテクニカルセッションに、ヤフー システム統括本部 プラットフォーム開発本部 本部長の服部典弘氏が登壇。ポータルサイト「Yahoo!Japan」のサービス基盤として採用しているCloud Foundryの環境を、Azureへ展開した事例について紹介した。
Yahoo!Japanは、言わずと知れた日本最大級のポータルサイト。月間ページビューは698億(2016年4月~6月平均)、アプリ累計ダウンロード数は3億8000万以上(2016年3月末時点、App Annie調べ)、月間アクティブユーザーID数3430万(2016年6月末時点)、1日あたりのユニークブラウザー数9000万(2016年4月~6月平均)に上る。
この巨大ポータルサイトから、常時100以上のサービスが新旧入れ替わりながら提供されている。「楽天などは開発言語をRubyに統一していますが、Yahoo!Japanのサービスは、C、C++、Perl、PHP、Node.js、Javaなど開発言語がさまざま。また、YahooショッピングなどEC系の大規模サービスから、試験的にスモールスタートするサービスまで、規模もアーキテクチャもざまざまです」と服部氏。各サービスの規模やビジネスモデルが異なるため、共有の開発言語やフレームワークで統一することが難しいという。
Yahoo!Japanのサービスのインフラとして、同社は複数の自社データセンターを運用し、10万台以上のサーバーを有している(2015年6月末時点)。このプライベートクラウドはIaaS層をOpenStackで構築しており、従来は、サービス開発チームごとに仮想的なハードウェアを切り出して渡し、各チームが自由にOSやミドルウェア、ランタイム、アプリケーションを構築してサービス基盤として運用していた。
これは、各サービスのエンジニアが、好みの開発言語やデータベースを使えるようにするための運用だったが、「インフラにインシデントが発生した際に、社内に2000人いる全サービスエンジニアが一斉に手を止めてインフラに対応する必要がありました。脆弱性対応のためのソフトウェア更新作業も大変でした」(服部氏)。
そこで、同社ではOpenStackの上にCloud Foundryを使って共通のPaaS層を構築。サービスエンジニアがアプリケーション層だけを扱う運用に変更した。現在は、インフラ運用専任の1部署がPaaS層までを管理し、サービスエンジニアはインフラを意識せずに開発に専念できる環境を提供している。「Cloud Foundryは、IaaSの動作環境を選ばず、開発言語やデータベースの自由度も高い。また、独自のPaaSとしてカスタマイズしやすいという点を評価して採用しました」(服部氏)。
OpenStackクラウドからはみでたワークロードをAzureで処理したい
そして、ヤフーは現在、同社のOpenStackプライベートクラウド上に構築されたCloud FoundryのPaaS環境を、Azureへ展開することを検討している。今回のセッションでは、ヤフーのCloud Foundry環境で稼働するアプリケーションをAzureへ実装する検証事例が紹介された。この検証は、ヤフーのエンジニアと日本マイクロソフトのエバンジェリストが3日間の「Hack Fest」で実施したものだ。
そもそも、10万台以上のサーバーから成る大規模プライベートクラウドを有するヤフーが、なぜAzureを使うのか。
服部氏は、Azureへの期待として「災害時や自社インフラの障害発生時にさばききれなくなったワークロードの処理や、ECサイトの大規模販促キャンペーンでアクセスが集中した際に一時的にリソースをスケールするためにAzureを活用したい」と説明した。「すでに自社データセンターへの投資を行っているし、すべてをAzureに乗せるのはコストがかかりすぎます。プライベートクラウドのリソースからはみ出した分をAzureで処理する方針で、Azureの利用を検討しています」(服部氏)。
マイクロソフトは、Azureで自社のPaaSを提供しながらも、オープンソース版のCloud Foundry、およびPivotal社の商用版Cloud FoundryをAzureでサポートしている。Pivotalが2016年にシリーズCの資金調達を実施した際には、「Javaの実行環境としてAzureを最適化する」ことを目的として投資に新規参加するなど、Cloud Foundryとの連携を強めている。
Cloud FoundryがOpenStackとAzureの違いを吸収してくれた
Hack Festでは、ヤフーのOpenStack+Cloud Foundryプライベートクラウド環境と、Azure上のCloud Foundryパブリッククラウド環境の両方に、ヤフーの既存のCloud Foundryアプリケーションを展開してみた(オープンソースのパイプラインCIツール「Concourse CI」を使って2つの環境に同じアプリをデプロイ)。その結果、「ソースコードをほぼ変更することなく、簡単に展開できました。Cloud FoundryがIaaSの差を吸収してくれることが実証できました」と服部氏。
今回は、3日間の限られた時間の中で、アプリケーションのみを展開するシンプルな構成で実証を行ったが、「実際には、プライベートクラウドとAzureでのデータベースの同期や、プライベートクラウド側のエッジサーバーからAzureへのアクセス分散が必要。これらは、今後検証していきます」(服部氏)。