こんな風にアプリを作成できれば便利なのに――。そんな思いを持つソフトウェア開発者を支援するため、マイクロソフトはオープンソースソフトウェア(OSS)との関係を強化してきた。既に、OSSへのマイクロソフトの貢献度は、OSSコミュニティー内でも高く評価されている。最新技術をMicrosoft Azureのサービスとして提供するだけでなく、Azure上でさまざまなOSS環境を利用できる体制も着々と整ってきている。
「地球上のすべての個人とすべての組織が、より多くのことを達成できるようにする(Empower every person and every organization on the planet to achieve more.)」を企業ミッションに掲げているマイクロソフトでは、パブリッククラウドサービス「Microsoft Azure」の役割の1つに「ソフトウェア開発者がより多くのことを達成できるようにする」ことを設定している。
そして、「あらゆるソフトウェア開発者」が、「あらゆるプログラミング言語」で記述された、「あらゆるアプリケーション」を、「あらゆるプラットフォーム上」で作成、稼働できるようにする(Any Developer, Any Language, Any App, Any Platform)ために、マイクロソフトではMicrosoft Azureの機能/能力を継続的に強化し続けているのだ。
では、ソフトウェア開発者はMicrosoft Azureでどのようなことができるようになるのか――。例えば、社会システムや人々の活動に関わる「Systems of Engagement(SoE)」アプリケーションを作成しているソフトウェア開発者のケースを考えてみよう。
今、顧客企業の事業/業務部門(Line of Business:LOB)の担当者が求めているのは、斬新な機能を備えたモバイルアプリやWebアプリを1分でも早くサービスインさせること。顧客企業が利用者との“エンゲージメント(絆)”をITのチカラで深めようとしている場合は、行動/行動履歴、表情、音声といった非言語的なメッセージを読み取って利用者のことを理解できるアプリを要求されるかもしれない。
また、現代のソフトウェア開発者は、オープンソースソフトウェア(OSS)を利用してコーディングやテストを行うのが“デフォルト”。「あらゆるプログラミング言語を、あらゆるプラットフォーム上で」を実現するには、ステージングやプロダクション用のIT基盤についても、以下のどちらか(または両方)を満たすものを用意する必要がある。
そこで、マイクロソフトは、Microsoft Azureで主に2つのことを実現しようとしている。
1つは、SoEアプリケーションの発注者が必要としている機能を、既製のサービスとして提供すること。例えば、Microsoft Azureでサービスとして提供されている「App Service」「SQL DB」「Azure Functions」「Cosmos DB」「Azure Search」「IoT Hub」「Stream Analytics」「Machine Learning」「Cognitive Services」などだ。
もう1つは、OSSとの相互運用性を保持するコード実行環境とすること。マイクロソフトのOSSへの取り組みは既に10年以上であり、Red HatやCentOSといった既存ユーザーの多いLinuxディストリビューションの仮想マシンは、Microsoft Azureに用意されたメニューからすぐに作成でき、Dockerコンテナはそのままの形で取り込めるようになっている(図1)。
Microsoft Azureで提供されているアプリケーション開発用PaaS(Platform as a Service)「Azure App Service」では、Linux対応版となる「Azure App Service on Linux」のパブリックプレビュー提供が2016年10月に開始された。
Azure App Serviceで作成できるのは「Webアプリ」「モバイルアプリバックエンド」「サーバレス型イベントドリブンアプリ」「APIアプリ(RESTful API対応アプリ)」の4種類(図2)。
Azure App Serviceは、PaaSという位置付けから容易に想像できるように、お任せできる部分が多い既製の開発環境を使って手軽に短期間でシステムを開発するのには適しているだけでなく、秒単位でのスケールアップ/スケールダウンが可能なリソースプール型サービスを提供し、さまざまな高負荷に対応するソリューションを提供できることから、デジタルトランスフォーメーション(DX)の波に乗る形で急速に普及してきた。マイクロソフトによると、既にユーザー数は世界で40万社以上、Azure App Serviceを活用して構築されたWebサイトは200万サイトを超えているという。
では、なぜマイクロソフトはAzure App Service on Linuxを提供することにしたのだろうか。 「Open Source Summit Japan 2017」のスピーカーとして来日した、Azure App Service on Linuxの開発担当者であるNazim Lala氏(Microsoft Corporation Principal Engineer)は、その最大の理由を「お客さまからの要望が極めて多かったからです」と説明する。「弊社のミッションは、全ての人が生産性を高められるように貢献することです。Microsoft Azure上の仮想マシン(VM)の3分の1がLinuxで動いている今、ソフトウェア開発者に向けて、彼らを支援するための最高のソリューションを提供する必要があると考えました」(Lala氏)。
また、サービスの提供者側として、“最先端のソフトウェア開発用PaaSの機能を、LinuxやDockerの世界でも活用してほしい”という思いもあったとMichimune Kohno氏(Microsoft Corporation Senior Software Engineer)は述べる。
「エンドユーザーからのアクセスがスパイクした際、リソース割り当てを自動的に増強するには『Auto scale』機能が役立ちますし、複数バージョンのアプリケーションを同時並行して開発、テストすることができる『slot』機能はWebアプリの世界で行われるABテストに最適です」(Kohno氏)
Azure App Service on Linuxでは、Dockerコンテナもそのままの形で取り込めるので、Microsoft Azureの最新機能を利用するための改造も不要だという。ただ、もともとはWindowsアーキテクチャ向けに作られていたAzure App Service。それをLinux向けに移植することは、決して簡単な作業ではなかったという。
Azure App Service on Linuxを活用してほしいユーザーは、コンテナアプリケーションを短期間で開発、テストして本番稼働させ、需要に応じて柔軟かつ迅速にリソースの割り当て量を増減したいと望む企業/ソフトウェア開発者だ。動作基盤の運用管理も不要なので、専任のシステム管理担当者にリソースを割けない/管理担当者がいない企業にも向く。
Azure App Service on Linuxのパブリックプレビュー提供が終了し、正式にリリースされるのは、2017年夏ごろの予定とのことだ。Kohno氏は「最初の正式版で提供する機能は、パブリックプレビュー版に全て盛り込んでいます。今は、バグフィクス、安定稼働、パフォーマンス向上に向けたチューニングを進めている段階です」と説明する。
さらにその後のバージョンでは、ユーザーからのフィードバックを反映したり、新たな機能を搭載したりして、理想的な形態になるよう進化していく予定だ。「Linuxにきちんと対応するために、全てのソースコードを.NET Coreに移植し、コンテナとして動作させるようにするつもりです」と、Kohno氏。コンテナの取り扱いについて、Lala氏は「現状ではシングルでの対応になりますが、将来的にはマルチコンテナに対応する計画です」と説明する。
アプリケーションやサービスを作成し、テストでも問題がないことを確認して、正式にWebサイトにリリースする――。だが、そこで終わりではない。Webサイトが正常に稼働しているか、パフォーマンスに問題はないか、想定外のエラーが発生してないかどうかを継続的に監視する必要がある。
最近は「DevOps」という開発と運用を一体化させ、何か問題が発生しても、早期に発見し、早期に対応して解決するムーブメントが起こっている。運用側は問題を早期に検出し、すぐに対処したい。開発側はトラブルが起きたときはすぐに情報を取得したい、という思いがあるからだ。 そこで、開発者と運用管理者を支援するソリューションとして、マイクロソフトが提供するクラウドベースのITMaaS(IT管理機能を提供するSaaS)が「Microsoft Operations Management Suite(OMS)」である。
マルチクラウド/マルチプラットフォームのためのハイブリッドかつオープンなIT運用管理ソリューションであるOMSは、「2015年にGA(一般提供)したときから、WindowsとLinuxの両方に対応しています」とKeiko Harada氏(Microsoft Corporation Program Manager)は説明する。
OMSは、以下の4つの機能を提供する。
運用管理ツールとしての利用では、「Syslog」などの管理情報を管理対象から収集し、障害やその予兆が発生していないかを分析し、必要な対処を自動/手動で行う、といった流れになるのが一般的だ。
基本的にはLinuxやコンテナの管理情報を扱えれば済むことから、OMSでのLinux/OSS対応は比較的シンプルな仕組みで実現されている。
まず、管理対象が一般的なLinuxコンピュータ(VMを含む)の場合は、管理対象にOMSのエージェントを組み込み、管理情報をhttpsプロトコルでMicrosoft Azure上のCMSに送り込むという流れになる(図3)。
ここでログ収集に使われているのが、OSSのログコレクターとして名高い「Fluentd」だ。「OMSを設計するにあたって、弊社はOSSのさまざまなログコレクターを吟味しました」と、Harada氏。その中でも特に優れていたのが「Fluentd」だったと説明する。
一方、なるべく“軽量”な構成にすることが良しとされるコンテナの世界では、管理対象にエージェントを組み込む方式はあまり適切ではない。そこで、マイクロソフトでは、管理情報収集専用のOMSコンテナを開発し、それを介して管理対象の管理情報を収集する“サイドカー方式”を採用。「例えば、Kubernetes向けには、コンテナ化したエージェントをDaemon Setとして作り、それに対応したYAMLファイルをお客さまに提供しています」と、Harada氏。このYAMLファイルをKubernetesに組み込めば、Kubernetes配下の全VMの管理情報を収集できるという。
「自動化&コントロール」の領域でも、Linux/OSS向けの機能は充実している。「まず、セキュリティ対策ツールと連携する形で、パッチのデプロイを管理する機能を用意しました」と説明するのは、Kristopher Bash氏(Microsoft Corporation Principal Program Manager)。この他、VM上でPythonのスクリプトを実行させる方式の「Hybrid Runbook for Linux」(現在はパブリックプレビュー)やLinuxのシステム構成設定作業を効率化する「Desired State Configuration(DSC)」などもエンジニアに歓迎されているという。
業務システムの運用管理を担当するエンジニアにとってのOMSの最大の価値は、オンプレミス、仮想サーバ、クラウドの各基盤で動作するWindows/Linux/コンテナの全てを統合的に扱えることだ。
「仮想サーバとしてVMwareももちろん管理対象にできます」と、Harada氏。コンテナのオーケストレーターとしてはDocker Swarm、DC/OS、Kubernetesがサポートされているので、業務アプリケーションごとに異なる運用管理ツールやオーケストレーターが乱立している場合も効率良く運用管理を行える(図4)。
アプリケーションによって成し遂げたいことがあるのに、それを可能にする技術を手に入れることができないために断念せざるを得ない――。
そうした悩みを抱えるソフトウェア開発者の支援になるのであれば、自社で作り、育て上げた技術にこだわることなく、OSSにも積極的に対応していくというのが今のマイクロソフトの姿勢だ。
実際、OSSコミュニティーに対するマイクロソフトの貢献度は非常に高い。例えば、GitHub社が公開したGitHubへの開発貢献度ランキングで1位、DockerコミュニティーにおいてはDocker社に次いで開発貢献度ランキングの2位という状況だ(図5)。また、Linux/OSSの世界を“根城”とするソフトウェア開発者からも、Microsoft AzureのPaaSやサービスは高い評価を受けている。
創業時からマイクロソフトのDNAは“デベロッパーセントリック”。企業が求めるIT環境がますます多様化する今、マイクロソフトとOSSの接点はより広範で深まることは間違いない。これからもマイクロソフトは“デベロッパーセントリック”で進んでいく。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:日本マイクロソフト株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2017年8月17日