【IIJ GIOの裏側を語る#3】 自社開発に拘るクラウドオーケストレータ

連載『IIJ GIOの裏側を語る』では、IIJのクラウドサービス「IIJ GIO」の安定稼働を支える仕組みを、サービスの開発者や基盤運用エンジニアが解説します。

今回は、「自社開発に拘るクラウドオーケストレータ」についてご説明します。

サービスを構成するソフトウェアにオープンソースのプロダクトは欠かせません。OS、Webサーバ、アプリケーションサーバ、データベース、etc…。ご多分に漏れず、IIJ GIOインフラストラクチャーP2(以下、IIJ GIO P2)のシステムでもCentOS、MySQL、Railsなどが随所に利用されています。

一方で、サービスのコアとなるシステムは、当然ながらサービス固有のソフトウェアで構成されます。IIJ GIO P2を構成する多数のマイクロサービス群は、ほとんどが自社開発のIIJ独自技術が満載されたものになっているのです。

今回はその辺りの自社開発に込められたこだわりの部分に触れたいと思います。

OpenStackと自社基盤

実は、3年前にIIJ GIOのIaaSを抜本的にリニューアルすることが決まった際、OpenStackの採用も検討しました。

OpenStackの品質にいささか不安はありましたが、プロビジョニングシステムとしては完成度を高めつつありました。さらに、オンプレでOpenStackの導入を検討されているお客様から、ハイブリッドクラウドを構成するにはパブリッククラウド側もOpenStackで構成されていると都合が良いとの声もいただいていました。
それに、サードパーティから提供される様々なドライバ等、今後OpenStackをとりまく環境が充実していくであろうことに魅力を感じていたことも事実です。

ですが、やはり最終的には既存の自社基盤を大幅にアップデートすることで、サービス全体のエンハンスを進めていく方針に決定しました。その過程には紆余曲折がありました。

しかし今振り返ってみると、システムの可用性や運用の効率化を高いレベルで実現するには、やはり自社基盤に一日の長ありと判断したことは間違いではなかったと思います。

運用プロセスがサービスデザインに反映されたIIJ GIO P2

サービスを成長させていくためには、魅力的な機能を提供していくことはもちろんのことですが、長期的に安定してサービス提供されることが同等以上に大事なことだと考えています。なんらかのメンテナンスの度に停止を伴うようでは、お客様に安心してシステムをお預けいただくことは難しいでしょう。

IIJ GIO P2はこの点を重視して、サービスデザインの段階から運用プロセスを合わせて設計しています。障害にしろメンテナンスにしろ、極力止まらないクラウドを目指して開発が進められました。

これはIIJ GIOだけでなく、長年のあいだ自社サービス基盤を運用してきた実績から得られた知見に基づくものです。これだけの大規模なシステムで起こりうる課題を把握し、その対応策をシステム設計に反映するのは、そう簡単に真似できるものではありません。

実際にIIJ GIO P2をサービスインしてから1年(2016年12月現在)がたちましたが、機能停止を伴うメンテナンスは一度しか行っていません。その裏では数々のハードウェア障害や数百回に及ぶ大小様々なメンテナンスが実施されているのですが、それをお客様が意識することはほとんどなかったはずです。

お客様の仮想マシンが稼働するハイパーバイザに脆弱性が発覚したこともありましたが、それすらも大半のお客様には影響を及ぼすことなく対応を終えています。

運用に高度なノウハウが求められるOpenStack

一方、OpenStackを取り巻く環境は日々変わっているものの、少なくとも検討段階では可用性を考えるといくつか不安がありました。

まず、OpenStackは半年ごとのリリースサイクルが取られていますが、古いパッケージはセキュリティアップデートも比較的早い段階で終わり、EOL(End Of Life)を迎えます。つまり、セキュアな基盤を維持するためには毎年アップデートを続けなければならないということです。しかも、無停止でアップデートを成功させるには、かなりのノウハウが必要とされることは明白でした。

このことはOpenStackに独自の改修を行うのであれば、アップデートのたびに新パッケージへ改修箇所を追随させていかなければならないことも意味します。さらには、OpenStackのいくつかのコンポーネントは冗長構成を独自に検討しなければならず、これもまた大きな負担となることが想像できました。

OpenStackベースのクラウドサービスを提供されている事業者、独自拡張を加えたディストリビュータ、オンプレをOpenStackで管理されている方々、それぞれかなりのノウハウを蓄積しながら運用を行っているはずです。素のOpenStackで不足なく利用されているケースはおそらく少数派でしょう。

かつて開発と運用はそれぞれ役割分担してサービス開発、提供を行っていたものですが、いまや運用を知らずしてサービスを開発できる時代ではなくなりました。

可用性、スケーラビリティ、将来を見越したアップデート計画などを開発者自身が精通していないと、サービスリリースにこぎつけたとしても、その後の苦労は並々ならぬものが待っているはずです。

※2016年12月に弊社ブログに掲載した記事を、一部加筆修正しました。