Microsoftが2016年にSQL ServerをLinuxに移植すると発表したとき、それは業界全体のビッグなサプライズだった。しかし昨年の一年間で、MicrosoftのLinuxなどオープンソースのサポートはいよいよ明白になり、とにかく同社のツールはユーザーのいるところならどこへでも持っていく、という姿勢も明確になってきた。
同社は今日(米国時間7/17)、SQL Server 2017の最初のリリース候補バージョンをリリースしたが、それは、WindowsとLinuxとDockerコンテナで動く初めてのバージョンだ。Dockerのコンテナは、それだけでもユーザーが100万以上いるから、この新バージョンへの関心も大きいだろう。そしてこのニューバージョンは多くの新しい機能やスピードの改良などがあるものの、最大の見どころはやはり、Linuxのサポートだ。
MicrosoftのDatabase SysytemグループのゼネラルマネージャーRohan Kumarによると、彼はMicrosoftに勤めてすでに18年あまりになるが、最近では、ミッションクリティカルなワークロードにSQL Serverを採用する企業が増えている。しかも同時に多いのは、多くのユーザー企業のITがWindows ServerとLinuxの混成環境になっていることだ。そしてそんな企業にとっては、自分たちがかつて選んだデータベースをLinuxで使えないことが、彼らの脚を引っ張る要素になっている。
“多くの企業にとって今や、従来からのメインのデータベースをLinuxでも動かせることは、明白なニーズになりつつある”、とKumarは言う。“うちはこれまで、Windowsをもっぱらメインで使うよう、顧客に強制してきた”。最近は、これまでと違う‘別のMicrosoft’があって、それがいろんな点でポジティブな姿勢を見せているが、しかし変化は企業の基本姿勢にまで及んではいないのだ。
しかしKumarによると、最近の企業世界でもうひとつ多いのが、Oracle離れだ。そして、Linuxを動かしたいが、データベースは(オープンソースでなく)エンタープライズのサポートが充実しているブランド製品を使いたい、となると選択は自(おの)ずと限られてくる。
Kumarも言うように、Linuxのサポートを試みるのは、彼のデータベースグループにとって今回が初めてではない。“これまで二回トライしたが、会社の承認が得られなかった”、と彼は語る。“それが、うちの会社の戦略レベルの方針になりえる、という認識が当時はなかったのだ”。しかしトップがSatya Nadellaに変わった三年前に、彼のチームは再度、Linuxポートプロジェクトの社内上部売り込みをトライした。“また、すったもんだがある、と覚悟していたけど、驚いたことに、すぐにゴーサインが出た”、とKumarはそのときのオドロキを語る。
やっと会社の方針として決まったけれども、実際の作業はたいへんである。SQL Serverの何千万行ものコードを、どうやってLinuxにポートするのか? しかもKumarは、機能面での妥協はいっさいやりたくなかった。だから、100点満点の完全な移植か、無か、のどちらかだ。ただしWindows用のGUIといくつかのツールは、今のところこの原則の例外だ。
レドモンドのベトナム料理店でフォーのどんぶりをすすりながら、チームは答を見つけた。それがDrawbridgeだ。Drawbridは2011年に始まった研究プロジェクトで、小さなAPIを対外的インタフェイスとして提供するコンテナ、その中では、アプリケーションを効率的に動かせるよう構成されたベーシックなバージョンのWindowsが動く。その基本的なアイデアは、それによりもっとベターでセキュアな仮想マシンを提供することだった。OSのライブラリがアプリケーションやメモリ管理、そしてそのほかの重要な機能を動かし、その下層のオペレーティングシステムを統合する。
約2年前にSQL Serverのチームは、これをLinuxポート努力のコアにすることを決めた。“トップは適切な量の懸念を表明した”、という言い方をKumarはするが、研究プロジェクトにすぎなかったDrawbridgeの本番利用に対しては、上部の少なからぬ懸念があったことだろう。
このOSレイヤが、いろんな意味で、このプロジェクトを可能にした源泉だ。SQL Serverは、WindowsやWindows Serverにできないことを、自前でやっている。それはとくに、メモリ管理の面だ。しかしチームはすでに、標準的なOSの機能をSQLサーバーの OSレイヤに組み込んでいる。そのおかげで、Drawbridgeに収められたSQL Serverはたとえば、自分でメモリを管理できる。このやり方がうまくいったのでチームは、単純にLinux上のSQL Serverを作るのではなく、SQL OSとDrawbridgeでやった仕事を新たにSQL Platform Abstraction Layerという抽象化層へと実装し*、今ではそれがWindowsとLinuxで動く。〔*: 上図、PAL==Platform Abstraction Layer, 関連記事。〕
その結果SQL Serverのチームは、単一のコードベースから仕事ができ、コードが実際に動く対象プラットホームの違いを気にする必要がなくなった。たとえばMicrosoftのAzureでも、上記の抽象化層を持ち込むだけである。
SQL Server for Linuxは今年の後半に一般供用されるが、今日すでに、2社で本番稼働している。ハードウェアが同じなら、スピードはLinuxバージョンとWindowsバージョンで変わらない。
Kumarはすでに、最終リリースのその先を見つめている。データベースの世界もイノベーションが加速していくことは確実だが、しかし1年に一度とかもっと短いアップデートサイクルをミッションクリティカルなシステムには望まないユーザー企業もある。だからSQL Server 2016, 2017と立て続けに例年のリリースをやった次の年となる2018年は、アップデートなしという珍しい年になるかもしれない。