マイクロソフトはLinuxで何をしようとしているのか?オープンソース化計画について知っておくべきことすべて - TechRepublic

マイクロソフトはLinuxで何をしようとしているのか?オープンソース化計画について知っておくべきことすべて - TechRepublic

「MicrosoftとLinux」という言葉は、もはや聞き慣れたものになっているはずだ。MicrosoftはLinux Foundationだけでなく、Linuxカーネルセキュリティメーリングリスト(より限定的なコミュニティ)にも参加している。Microsoftは「LinuxとMicrosoftハイパーバイザーを組み合わせた完全な仮想化スタックを構築する」ために、Linuxカーネルにパッチを提出している。そして、MicrosoftがWindowsにコンテナサポートを追加しようとした際には、既に社内で開発していたWindows中心の実装ではなく、元々Linux向けに設計されたオープンソース仕様を採用した。

Azureのお客様は、Linuxサポート契約でもWindows Serverライセンスと同様のハイブリッドなメリットを享受できるようになりました。WindowsはLinuxバイナリを実行でき、一部の主要なMicrosoftアプリケーションはLinux上で利用可能になり、新しいサービスもLinuxで構築される可能性があります。Azure Kubernetes Serviceのような分かりやすいサービスだけではありません。Microsoft Tunnelは、iOSおよびAndroidアプリがAzure ADを介してオンプレミスの企業リソースに接続するためのVPN代替手段であり、Linuxサーバー上にDockerコンテナとしてインストールされます。

参照: Windows 10 スタートメニューのハック(TechRepublic Premium)

最近の Azure Open Day で、Kubernetes の共同設立者であり、Microsoft のコーポレート副社長である Brendan Burns 氏は、Microsoft が Linux を深く理解しており、Linux をベースとした既存のオープンソース プロジェクトに貢献しているほか、Dapr (Distributed Application Runtime) のような新しいプロジェクトも設立していると述べました。

「AzureはLinuxとコンテナインフラストラクチャにクラス最高のサポートを提供できます。これは、ハイパースケールクラウドでLinuxを稼働させるために必要なことを深く理解しているからだと思います」とBurns氏は述べています。「私たちはLinuxとコンテナコミュニティの両方に深く理解し、積極的に関わっています。そして、これらすべての環境にソースコードを提供しています。」

つまり、Microsoft は Linux を愛しているのです。

しかし、Windowsカーネルを捨ててLinuxカーネルに置き換えるという考えは捨て去るべきです。なぜなら、MicrosoftのLinuxへのアプローチははるかに実用的かつ包括的だからです。Microsoftは現在、徹底的なクロスプラットフォーム化を進めていますが、すべてのアプリケーションがLinuxに移行したり、Linuxのメリットを活用したりするわけではありません。むしろ、Microsoftは顧客が存在する場合、あるいはオープンソースプロジェクトのエコシステムを活用したい場合に、Linuxを採用またはサポートします。

がんからクラウドへ

2008 年に Hyper-V がリリースされたとき、SUSE Linux Enterprise Server は、Hyper-V で公式にサポートされた (そしてパフォーマンスを向上するように「改良された」) 最初の非 Windows オペレーティング システムとなりました。これは、Microsoft と Novell が相互運用性に取り組む契約を締結してから 2 年後、そして当時の CEO である Steve Ballmer が Linux ライセンスを「触れるものすべてに知的財産の意味で付着する癌」と悪名高く例えてから 7 年後のことでした。

マイクロソフトはLinuxユーザーをWindows Serverのエンタープライズ機能に引き入れたいと考えていたことは間違いありませんが、カスタマーサポートも重要でした。2009年、マイクロソフトとRed Hatは、マイクロソフトがWindows Server 2008およびHyper-V上でRed Hat Enterprise Linuxを検証し、Red HatがLinux上で仮想化されたWindows Serverゲストを検証し、両社が両OSを併用するエンタープライズ顧客に共同でテクニカルサポートを提供すると発表しました。

時間が経つにつれて、Microsoft の Linux サポートは、実用的ではなくなったとしても、より熱心になっていきました。.NET は、オープン ソースかつクロス プラットフォームに移行しなければ、顧客ベースを失うことになります。また、これは、3 ~ 5 年に 1 回、Windows の新バージョンとともに出荷されるフレームワークではなく、コミュニティとともに GitHub 上に構築されるモジュール式のアジャイル プロジェクトになることも意味しました。

Azure上のLinuxワークロードは、顧客独自のアプリケーションとISVアプリの両方において、Windows Server VMを上回り始めました。「Azure Marketplaceで提供されているイメージを見ると、その60%がLinuxベースです」と、Azureマーケティング担当シニアディレクターのTalal Alqinawi氏は最近TechRepublicに語りました。「Azureでは、SAPのような最大規模のエンタープライズワークロードをサポートしていますが、現在ではほぼ完全にLinux上で実行されています。」

その結果、Microsoft は Red Hat や Ubuntu などのディストリビューションと連携して、Azure 向けに Linux カーネルの調整を開始しました。Azure で Linux を実行しているときに顧客がバグに遭遇した場合、Microsoft はそのバグに取り組み、問題を修正するためのコードを提供します (または、SAP などのワークロードをより効率的に実行できるようにします)。

参照:すべてのユーザーが習得すべきExcelのヒント60選

同様に、2016年にSQL ServerをLinux対応にしたことで、コンテナ化とDevOpsへの投資によってWindows Serverへの移行を望まないデータベース顧客を巡り、MicrosoftはOracleとの競争を継続することができました。2017年、当時Microsoftのデータベースシステムグループに所属していたトニー・ペトロシアン氏は次のように述べています。「Linuxが普及しているという明白な理由に加え、コンテナやプライベートクラウド技術の多くがLinuxインフラストラクチャ上に構築されており、SQL Serverをそのエコシステムの一部にしたいと考えたことが、私たちにとって大きな動機の一つでした。」

PowerShell が 2018 年にクロスプラットフォームのオープンソース プロジェクトになったころ、PowerShell の作成者であり、当時 Azure インフラストラクチャのチーフ アーキテクトであった Jeffrey Snover 氏は、次のように心から語っていました。「当社はクロス OS 企業になりつつあります。『海は川を拒まない』というのが私の言い方ですが、私たちは、使用しているプラ​​ットフォームに関係なく、すべての人にとっての企業でありたいと思っています。」

Linuxのサポートは、Kubernetesを活用したハイブリッドクラウド、コンテナを活用したエッジコンピューティング、そしてWindowsを実行するためのリソースが不足していることが多いIoTデバイスにとって重要です。Windowsは長年にわたりモジュール化が進んでおり、Nano ServerからGUIを取り除いたことで、完全なWindows Serverよりもはるかに小さなイメージになりましたが、カスタムLinuxビルドであればさらに小さくすることができます。

マイクロソフトが2015年に安全でアップデート可能なIoTプラットフォームとしてAzure Sphereの開発を開始した際、Azure Sphere OSがIoT版Windowsではなく、Windowsで初めて採用したセキュリティイノベーションとカスタムLinuxカーネルを組み合わせたのは驚くべきことではありませんでした。当時、Azureは既に、マイクロソフトのスイッチ抽象化インターフェース(SAI)仕様とDebianをベースにしたネットワークOS、SONiCを開発していました。

Microsoftの購買力は、ネットワークハードウェアサプライヤーにSONiCのサポートを要請し、Azure用に購入するすべてのネットワークハードウェアでNOSを実行できるようにしました(これによりSONiCのサポートは広く普及し、先進的な企業が自ら導入できるようになりました)。また、SONiCをオープンソース化し、Open Compute Projectに提出することで、ハードウェアベンダーや、Alibaba、そして(買収以前から)LinkedInなどのクラウドプロバイダーが改善に貢献できるようになりました。

Microsoft は、コンテナーと VM の両方を実行して Azure ネットワーク全体をエミュレートし、ネットワークの変更を実際に行う前にテストするシステムである Azure Open Network Emulator (元々は CrystalNet と呼ばれていました) にもカスタム Linux カーネルを使用しました。

開発者の生産性

MicrosoftのLinuxシステムグループは、IaaS向けに設計された社内Linuxディストリビューション、CBL-Mariner(Common Base Linuxの略)も開発しました。これはAzure Stack HCI上でAzure Kubernetes Serviceを実行するために使用されますが、繰り返しになりますが、Ubuntuのような汎用的なLinuxディストリビューションではありません。

WSL2(Windows Subsystem for Linux)に使用されているLinuxカーネルも同じグループが開発しています。WSL2はWindowsにLinuxカーネルを搭載し、Linuxバイナリを実行できるようにするものです。これは開発者の負担を軽減するためのものです。多くのツールやフレームワークは開発者がLinuxを使用していることを前提としているためです。Visual Studio CodeはLinuxでも利用可能ですが、Microsoftはここ数年、開発者をWindowsに誘導することに注力してきました。

「開発者が今できることを、彼らの現状に合わせて提供しようと真剣に取り組んでいます」と、Windows開発者プラットフォームチームのAndrew Clinick氏はTechRepublicに語った。WSLはLinuxコマンドラインツールへのアクセス手段としてスタートしたが、開発者たちはそれ以上のものを求めていた。「今ではGUIアプリを実行できるようになり、基本的にLinuxで期待されるものはすべて実行できるようになったため、あらゆるワークフローを実行できます」とClinick氏は語る。「私たちは、『WindowsでLinuxが使えるならいいか』というレベルではなく、包括的なソリューションを提供しようとしています。Windowsをあらゆるアプリケーションを構築できる最高の場所にしたいのです。WSLは、AzureとのLinux統合という形でその一翼を担います。コードがどこで実行されていても、Windows上で作成し、Windowsで活用できます。もちろん、クラウドでもです。」

.NET 5のリリース時、Visual Studioチームは開発者にとってのWSL 2の価値を非常に実用的な言葉で説明しました。「LinuxをターゲットとするWindows .NETユーザーにとって、WSL 2は実稼働環境への適合性と生産性の絶妙なバランスを実現しています」。リモートのLinux環境またはコンテナでデバッグを行うということは、コードは実稼働環境で実行されることになりますが、WSLでローカルにデバッグする方がより高速で便利です。

Microsoftは、顧客にWebクライアントの使用を勧めるのではなく、Linux向けのTeamsクライアント(Linuxで初めて登場するMicrosoft 365アプリ)を開発するために、かなりの説得力を必要としたようだ。Windows、Mac、iOS、Android、Linuxをそれぞれ使用するスタッフを抱える顧客は、開発者と管理者を除くLinuxデバイスで作業する全員を同じコラボレーションプラットフォーム上で連携させることができた。User VoiceやTeams用の非公式Linuxクライアントに寄せられた9,000件を超えるリクエストは、明確な顧客ニーズがあることを示している。Linux版Teamsクライアントのステータスは、「作業中」から「却下」、「審査中」、「バックログ」へと変化し、ついに承認された。

このやり取りは、マイクロソフトとLinuxの関係が長い道のりであることを改めて示しています。社内の開発者はLinuxでの作業に慣れ、オープンソースコミュニティで重要な役割を果たすようになってきていますが、製品チームは依然としてビジネスモデルとリソース配分について検討する必要があります。開発者とインフラストラクチャは、マイクロソフトにとってこれらの決定が最も明確に示されている領域です。

組織が全従業員が同じプラットフォームで通信することを望むのと同様に、ネットワーク内を移動しながら標的を探す攻撃者にとって、アプリケーションサーバーがWindowsかLinuxかは問題ではありません。そのため、Defenderの各種セキュリティツールをLinuxに導入することは、macOS、iOS、Androidに導入し、顧客に包括的なエンドポイントソリューションを提供することと似ています。

「Microsoft Defenderでは、過去1年ほどでLinuxサポートを提供してきました。Android向けの作業は完了しており、iOS向けのプレビューもあります」と、Microsoftセキュリティ担当ゼネラルマネージャーのアンドリュー・コンウェイ氏は語った。

「Azure プラットフォーム側の Azure Defender コンポーネントについて見てみると、チームは Azure Arc を活用して、Azure Defender の保護範囲を Azure 内の資産だけでなく、ハイブリッドクラウド、GCP、AWS などの資産にも拡張しています」とコンウェイ氏は付け加えました。「これは、あらゆるワークロードにセキュリティを提供するという、当社のクロスプラットフォームおよびクロスクラウド アプローチの一環です。」

新しいChromiumベースのEdgeブラウザをLinuxに移植するというアイデアが最初に浮上したとき、Edgeチームが抱えていた疑問は、「MicrosoftはEdgeをLinuxに移植すべきだ」と主張する人々が、LinuxでEdgeを使いたいのか、それともMicrosoftにEdgeのクロスプラットフォーム化について何かを証明してもらいたいのか、というものでした。Linux版Edgeの実現を声高に訴える熱心なユーザー層はターゲットユーザーの一部ではあるものの、開発者の意見も決定に大きく影響したと、テクニカルプログラムマネージャーのショーン・ラーキン氏は今年のIgniteのセッションで説明しました。

「Linux は CI/CD、自動化、ブラウザ自動化の分野で大きな市場シェアを占めていることを私たちは知っています。そのため、テストの実行、テストの失敗、自動化ツールの動作が可能な限りシームレスであるかどうかに関係なく、一貫したエクスペリエンスを提供するために、あらゆるシステムやプラットフォーム上のあらゆるブラウザでテストする機能を提供したいと考えました」とラーキン氏は述べた。

Linux 上の Hyper-V?

Hyper-Vは長年にわたりLinuxの仮想化を実現しており、その優れた動作はMicrosoftがLinuxカーネルに大きく貢献した理由の一つでした。カーネルにHyper-Vが組み込まれれば、あらゆるLinuxディストリビューションにHyper-Vが組み込まれることになるからです。しかし、なぜMicrosoftはWindows ServerではなくLinuxをホストとしてHyper-Vを動作させることを提案しているのでしょうか?

マイクロソフトのベテランHyper-V開発者の一人であるベン・アームストロング氏は、慎重な回答をしてくれました。「Windows 8の開発中、当時Windows Server専用だったHyper-VをWindowsクライアントに移植するためにリソースを投入しました。Windows 8でHyper-Vを有効化することで、Windows 10にVBS、VSM、Credential Guardなど、さらに多くの機能を実装できるようになりました。」

「Hyper-V が Linux をルートパーティションとして利用できるようにするための最近の Linux カーネルの貢献は、まさにこの点にまで至っています。ビジネスニーズが生じた場合、この構成を迅速にサポートできるよう準備を整えておきたいと考えています」とアームストロング氏は付け加えました。

マイクロソフトは、ここでのビジネスチャンスが何なのかは明言していない。しかし、Windowsカーネルを捨てるよりも、Azure Stack HCIなどのサービスによるハイブリッドクラウドやKubernetesのサポート(あるいは、Armシリコンを使ったサーバー市場への参入を表明すればAppleとの競争に備えること)の方が可能性が高いだろう。セキュリティ強化から、仮想マシンが依存するAPIのパフォーマンスを最適化するための低レベルの変更まで、Windowsカーネルには依然として多額の投資を行っている。

Tagged: