本稿は、アプリケーションエンジニアのためのOpenStackの記事です。ここでの内容によって、皆さんが携わるアプリケーションのサステナビリティ(Sustainability)の向上に寄与できると考えています。OpenStackはIaaSクラウド機能を提供するOSSとして知られていますが、普段アプリケーションの開発を行うエンジニアにとってはレイヤの違いから縁遠い存在に思えるかもしれません。本稿ではそうしたアプリケーションエンジニアが活用できるOpenStackプロジェクト「oslo」についての紹介と、RPCと通知機能を提供するライブラリ「oslo.messaging」の機能と使い方について徹底解説していきます。
また、OpenStack自体について興味がある方は『マイクロサービスアーキテクチャが支えるOpenStackの動作と仕組み』の連載記事も併せてご参照ください。
osloとは?
osloはOpenStackの各コンポーネント(OpenStackの最も大きなソフトウェアモジュールの単位)で共通で利用するライブラリを集めたプロジェクトです。
その昔のOpenStackでは設定ファイルやコマンドライン引数の解析、メッセージパッシング、ロギングなどといった処理がコンポーネントごとに個別で存在しており、開発・メンテナンスコストが掛かることが問題になっていました。
そして2013年にリリースされたOpenStackのメジャーバージョンGrizzlyで共通ライブラリ群を提供するolsoプロジェクトが発足し、同じ年にリリースされたHavanaで設定ファイルとコマンドライン引数の解析を行うoslo.configと、通知やRPCの仕組みを提供するoslo.messagingがリリースされました。現在では、国際化や並行処理など、本稿執筆時点で34のプロジェクトが存在しています。
余談ですが、olsoプロジェクトのネーミングは、イスラエルとパレスチナの和平協定「オスロ合意」にちなんで付けられたという経緯があったりします。
oslo自体はOpenStackのプロジェクトですが、用途はOpenStackに限定されません。例えばoslo.configは、設定ファイルとコマンドライン引数の解析を行うライブラリとして広く知られており、SDN Framework Ryuなどで採用されています。他にもロギング処理全般を行うolso.logやCLIフレームワークのcliffなどが有名で、OpenStackユーザ会のメンバーによる解説などもあります。
本稿で取り上げるoslo.messagingは、RabbitMQやZeroMQなどのMQシステムを介した通知やRPCの仕組みを提供します。以降でoslo.messagingとその使い方について詳しく解説していきます。
oslo.messagingの概要
oslo.messagingの使い方について見ていく前に、oslo.messagingについての理解を深めるため、なぜこの仕組みを使うと良いかについて考えてみます。
MQを利用した通知やRPCの仕組みは、もちろんoslo.messagingが登場する以前から存在していました。RabbitMQを使う場合にはPikaというAMQPライブラリを用いてそれらの処理を行うことができます。またZeroMQを使う場合には、PyZMQライブラリを用い、Kafkaにも同様のPythonライブラリが存在します。
しかし、これらを用いることによって、アプリケーションにミドルウェアないしはプロトコル依存のコードが入ってしまいます。例えばMQに「RabbitMQ」を使っていて、これを「Kafka」に切り替えたいと思った場合、アプリケーションにそれなりの規模のコード修正が必要になると思います。
これに対しoslo.messagingは各MQライブラリを抽象化しており、利用するMQに応じてドライバを選択できる仕組みを提供しています。そのため、先のようにMQをRabbitMQからKafkaに変更したいといった場合でも、設定ファイルを変更するだけでアプリケーションのコード修正を行わずにMQを切り替えることができます。
このようにoslo.messagingによって、ミドルウェア・プロトコル非依存の通知、RPCをアプリケーションに実装できます。これによってユーザはさまざまなMQシステムを選択できるようになり、アプリケーションをサステイナブル(Sustainable)にすることができます。
この記事は参考になりましたか?
- この記事の著者
-
大山 裕泰(株式会社DMM.comラボ)(オオヤマ ヒロヤス)
DMM.com ラボ所属ソフトウェアエンジニア。アリエル・ネットワーク株式会社、グリー株式会社を経て現在に至る。最近は主にインフラ基盤の構築、運用、機能開発を行う。共著書に「次世代ネットワーク制御技術 OpenFlow入門」がある。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
