SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

アプリケーションエンジニアのためのOpenStackライブラリ「oslo.messaging」徹底解説

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本稿は、アプリケーションエンジニアのためのOpenStackの記事です。ここでの内容によって、皆さんが携わるアプリケーションのサステナビリティ(Sustainability)の向上に寄与できると考えています。OpenStackはIaaSクラウド機能を提供するOSSとして知られていますが、普段アプリケーションの開発を行うエンジニアにとってはレイヤの違いから縁遠い存在に思えるかもしれません。本稿ではそうしたアプリケーションエンジニアが活用できるOpenStackプロジェクト「oslo」についての紹介と、RPCと通知機能を提供するライブラリ「oslo.messaging」の機能と使い方について徹底解説していきます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

 また、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は、RabbitMQZeroMQなどの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を使用した場合のソフトウェアアーキテクチャのイメージ
oslo.messagingを使用した場合のソフトウェアアーキテクチャのイメージ

 このようにoslo.messagingによって、ミドルウェア・プロトコル非依存の通知、RPCをアプリケーションに実装できます。これによってユーザはさまざまなMQシステムを選択できるようになり、アプリケーションをサステイナブル(Sustainable)にすることができます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
oslo.messagingの環境構築方法

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

大山 裕泰(株式会社DMM.comラボ)(オオヤマ ヒロヤス)

DMM.com ラボ所属ソフトウェアエンジニア。アリエル・ネットワーク株式会社、グリー株式会社を経て現在に至る。最近は主にインフラ基盤の構築、運用、機能開発を行う。共著書に「次世代ネットワーク制御技術 OpenFlow入門」がある。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9725 2016/10/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング