8周年を迎えたOpenStack Swift:Amazon S3との連携が強化、マルチクラウドとファイルシステムをサポート
ここでは、先日のOpenStack Summit Vancouver 2018から得られたOpenStack Swiftの最新動向を紹介していきます。
8周年を迎えたOpenStack Swift - 環境の変化とSwiftの開発
SwiftはOpenStackの中でも開発が始まった当初から存在するプロジェクトで、オブジェクトストレージの機能を提供しています。最初のSwiftがRackSpaceでプロダクションにデプロイされたのは2010年の5月17日であり、このバンクーバサミットの直前で8周年を迎えたことになります。
SwiftのProject Updateセッション※1でPTLのJohn Dickinson氏は「この8年でSwiftを取り巻く環境が大きく変わってきた」ということを強く主張しています。当初はAmazon Web Serviceの対抗として進められたOpenStackの開発ですが、現在のマルチクラウド環境の変化、運用の変化に合わせて、OSSの開発や方向性も柔軟に変化しています。John氏は、こうした環境の変化に追従し、ユーザの利用用途に合わせて開発を進めていくことが重要と考えており、最近のリリースに含まれる大きな変更や開発活動にもそれが現れています。
※1: https://www.openstack.org/videos/vancouver-2018/swift-project-update-1
この8年間の軌跡でとりわけ印象的だったのは、開発当初のコード量は16,000行でシンプルな実装だったSwiftが、最新では約200,000行に及び、うち3/4はテストコードであるということです。テストコードは、基本的には機能の保守のために追加されていきますので、この実績値からSwiftが、いかにユーザが使っているAPIを大切にし、保守に注力しながら開発されているかがわかると思います。
Amazon S3とのエコシステムを意識した新機能たち
Swiftの通算48回目のアップデートとなる2.18.0はバンクーバーサミットの後、5月30日にリリースされました。この2.18.0ではAmazon S3を意識した大きな機能が複数含まれています。
Amazon S3互換API機能はそのうちの1つです。OpenStack Grizzlyの頃に機能整理の一環でサードパーティ化されたのち、NTTが中心となりメンテナンスしていました。最新の2.18.0のリリースから、SwiftがS3 APIを標準としてサポートするという方針でアップストリームのリポジトリに再度マージされました。この背景にあるのは、Swift APIに加えてAmazon S3 APIをSwiftの標準APIとして備えることで、マルチクラウド環境でのエコシステムとしてのSwift利用を促進していこうという考えです。
もう1つの大きな機能であるContainer-ShardingもAmazon S3を意識しています。この機能は、Swiftのオブジェクトリストの取得に利用しているデータベースが、登録オブジェクト数の増加で肥大化する問題を解決するためのものです。具体的には、Swiftのオブジェクトリストを保持しているデータベースを複数の部分データベースに分割し、肥大化したデータベースへのアクセスや容量を分散します。
この機能は特に、Amazon S3の「1アカウントに対するバケット数には上限があるが、1バケット内のオブジェクト数には上限がない」というルールを実現する上で重要です。1バケット内のオブジェクト数が非常に多くなった際にこのContainer-Shardingの機能を利用することで、データベースの肥大化やそれに伴う性能の問題を回避できるようになります。また特に重要なポイントは、「既存のSwiftクラスタに対して適用できる」ということであり、すでにこうした性能問題に直面しているユーザを直接的に助けていくことができます。
ProxyFSと1space - マルチクラウドとファイルシステムサポートに見るSwiftの将来性
コミュニティとしてのSwiftの開発が進む一方で、ユースケースやエコシステムも面白い動きが出てきています。SwiftStak社のJoe Arnold氏は本サミットの発表※2で、SwiftのエコシステムであるProxyFSと、1spaceを利用したマルチクラウド時代のシングルネームスペースの実現というコンセプトを打ち出しました。
ProxyFSと1spaceはいずれも、SwiftStack社がgithub上でソースコードを公開しているOSSです。ProxyFSはSwift上で完全なPOSIXファイルシステムを実現し、1spaceはオンプレミスとクラウド間でデータを同期するソフトウェアです。
ProxyFSのユニークな点は、異なるAPIに対する双方向でのデータの読み書きをサポートしていることです。そのため、ProxyFSのファイルシステムを経由してSwiftに書き込まれたデータをSwift APIやS3 APIを経由して読み出したり、またその逆も可能です。これによって、ファイルシステムが必要なレガシーアプリケーションを利用するユーザの期待に応えるだけでなく、クラウドネイティブなアプリケーションへの移行時に、元のデータを新しいオブジェクトストレージに移すことなく利用するなども可能です。
一方、1spaceは、もともとオンプレミスのSwiftとAmazon S3のデータの同期のために作られていた「s3-sync」という機能が元になっています。1spaceはs3-syncの機能に加え、オンプレミスで保存されてから一定期間経ったファイルをクラウドストレージへ移動するといったような、ライフサイクル管理を含めたデータマネージメントをサポートする、と紹介されています。
Joe氏の発表では特にProxyFSと1spaceの組み合わせによって「オンプレミスのファイル、オブジェクトストレージで書き込まれたデータを任意のクラウド上で同様にファイルやオブジェクトとして取り出せる」といったユースケースを想定していると紹介しました。
今回のサミットで筆者は、SwiftをAI基盤として利用する可能性の検討について発表しました※3。完全なPOSIXファイルシステムを実現可能なProxyFSは、現在流行っているほとんどのAIフレームワークのデータ置き場として利用可能だろうという認識があり、非常に魅力的に感じました。Swiftそのものはスケーラビリティや堅牢性などで十分に実績のあるソフトウェアであり、こうした機能面でのエコシステムが入ってくることでユースケースはさらに拡大していくと考えられます。
終わりに
Swiftはパブリッククラウドでの導入やeBay※4のような大容量のデータを保存したいというユースケースに対して着実に実績を拡大している一方で、こうしたレガシーアプリのサポートやより使いやすいストレージシステムを目指したエコシステムの充実が進んできています。SwiftのProject Update※5では今回紹介した内容以外にも、Swift上でのFunctional-as-a-Serviceを目指したOpenStack Storlets、OpenStack Qinling、Swiftのログからbilling用の統計情報を取り出すsloggingなど、多様なエコシステムについて触れています。
単なるデータバックアップ用のストレージとしてだけでなく、さまざまなユースケースやIT業界の動向に対応して柔軟に進化していくOpenStack Swiftの動向が今後も楽しみです。
※4: https://www.openstack.org/videos/vancouver-2018/how-swift-is-reshaping-the-future-of-storage-at-ebay
※5: https://www.openstack.org/videos/vancouver-2018/swift-project-update-1
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Swift最新動向:Go言語実装と暗号化が導入間近。File Systemインテグレーションがキーに!
- OpenStackとコンテナの技術動向
- OpenStackのアーキテクチャを理解しよう
- テレコムからIoTまでさまざまなユーザ事例が公開されるOpenStack
- Red Hat Summit、気合の入ったデモでコンテナ、マルチクラウド、機械学習まで見せる
- OpenStackコミッター座談会~「OpenStack Summit Tokyo 2015に向けて」
- Amazon S3のライバル? Google Cloud Storageに触れてみる
- クラウド環境をサポートするライブラリ「Apache jclouds 2.1.1」リリース
- プライベート環境に最適なクラウドストレージとは?EMC ECSアプライアンス(前)
- OpenStackのセミナーでコントリビューターたちが語ったOpenStackの未来