SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

特集記事

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

oslo.messagingの環境構築方法

 この後の解説で実際にoslo.messagingのサンプルを動かすため、ここで実行環境を構築します。ここではVagrantで構築したUbuntu 16.04環境にoslo.messagingの実行環境を構築する方法を紹介します。

 Vagrantのインストール方法については、過去の記事で詳しく解説されておるので、そちらを参照してください。ここでは、以下のとおりVirtualBoxとVagrantが皆さんの環境にインストールされた状態から解説をはじめます。

$ VBoxManage --version
5.0.26r108824
$ vagrant -v
Vagrant 1.8.5
$

 使用するVagrant Boxは、chefが公開しているモノを利用します。Vagrantがインストールされたマシンで以下のコマンドを実行するとUbuntu 16.04が構築されます。

$ vagrant init bento/ubuntu-16.04; vagrant up --provider virtualbox

 構築後、以下のコマンドでログインできます。以降の操作は構築したUbuntu 16.04環境内で実行してください。

$ vagrant ssh

 まずは必要なパッケージのインストールを行います。

vagrant@vagrant:~$ sudo apt-get update; sudo apt-get install -y rabbitmq-server python-pip unzip git

 次にoslo.messagingと依存パッケージのインストールを行います。

vagrant@vagrant:~$ sudo pip install oslo.messaging

 最後にoslo.messagingによるRPCおよび通知を行うサンプルコードを取得します。サンプルは以下のリポジトリを利用します。

 次のコマンドでリポジトリの最新版を取得します。

vagrant@vagrant:~$ git clone https://github.com/userlocalhost2000/oslo-messaging-examples.git

 以上で、oslo.messagingを動かす環境が整いました。以降では、oslo.messagingをどのように使うかについてサンプルを用いて解説していきます。

oslo.messagingを使ったRPC処理の実装

 それではサンプルコードを動かしながらoslo.messaingでRPC over MQを行う方法を解説していきます。

 その前に、システムのアウトラインについて簡単に把握したいと思います。以下は、クライアント/サーバの内部アーキテクチャについて表した図になります。

内部アーキテクチャ(出典:ツチノコブログ)

内部アーキテクチャ(出典:ツチノコブログ

 クライアント側ではRPCClientオブジェクトがユーザアプリケーションに対して、RPC処理のインターフェースを提供します。またTransportオブジェクトが、RabbitMQやKafka、ZeroMQなどの各種MQを抽象化し、ユーザはRPCClientが提供するインターフェースを通してMQ非依存なRPCリクエストをサーバに送ることができます。

 サーバ側では、ユーザからのRPCリクエストを処理するServerオブジェクトを生成します。その際、サーバ側のアプリケーションで各PRC要求に対応するコールバック関数を定義したクラス(Endpoint)を1つ以上実装してやり、それらをServerオブジェクト生成時に指定します。

 それではサンプルコードを見ながらそれぞれの使い方を把握し、実際に動かしてみます。

次のページ
実装(RabbitMQ編)

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

特集記事連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9725 2016/10/27 14:00

イベント

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

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

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

メールバックナンバー