BT

新しい あなたは、アーリーアダプター?それともイノベーター?そんな皆様に、InfoQの新機能をご案内しています。詳細はこちら

マイクロサービスのデータを管理する

| 作者: Srini Penchikala フォローする 13 人のフォロワー , 翻訳者 h_yoshida フォローする 0 人のフォロワー 投稿日 2017年8月8日. 推定読書時間: 4 分 |

原文(投稿日:2017/06/28)へのリンク

Stitch FixのエンジニアリングVPであるRandy Shoup氏は月曜日、QCon New York 2017 Conferenceにおいて、マイクロサービスベースのアプリケーションにおけるデータと分離永続化の管理について講演を行なった。その中で氏は、氏とそのチームが、購買や在庫管理、スタイリングレコメンデーションなどすべてのビジネスにわたって機械学習の技術を適用した経緯について解説した。

パーソナライズされたレコメンデーションは、機械学習を通じてインベントリを実行し、アルゴリズムによるレコメンデーションを作成することで生成される。アルゴリズムで生成したレコメンデーションは、次に、全国のスタイリストによって手作業で調整されることで、パーソナライズされたスタイルレコメンデーションが完成する。

マイクロサービスアーキテクチャは進化している。eBayTwitterAmazonといった企業はいずれも、モノリスからマイクロサービスへと移行する過程において、いくつかのアーキテクチャのイテレーションを経験している。

単一の目的を持つこと、明確に定義されたインターフェースを用意すること、モジュール化されて独立していることなどに加えて、マイクロサービスは分離永続化(isolated persistence)に関しても責務を負う必要がある。Shoup氏は、マイクロサービスを永続化する手段として、独自データストアの運用と、永続化サービスの利用という2つのアプローチについて論じた。最初のアプローチでは、サービスチームが所有し運用する独自データベースのインスタンスにデータを格納する。永続化サービスを利用するアプローチでは、別のチームあるいはサードパーティプロバイダがサービスとして運用するデータベース内の、独立したスキーマにデータを格納する。その場合のデータは、他のすべてのサービス利用者から隔離されていなくてはならない。

イベントはマイクロサービスアーキテクチャを支える機能のひとつであり、実世界の動作を表現する手段として、金融などの分野のアプリケーションで使用されている。イベントはサービスインターフェースの重要な部分である。サービスインターフェースには、サービスの生成するすべてのイベントと、サービスが利用するすべてのイベントを含めることが必要だ。

モノリシックな共有データベースからマイクロサービスを抽出するには、次のような手順が必要である。

  • サービスの作成: サービスのバウンダリにはサービス本体と、サービスが使用するデータベースを含む必要がある。
  • サービスを利用するアプリケーション: 新たに作成したサービスを使って、アプリケーションを共有データベースから切り離す。
  • プライベートデータベースへの移行: 共有データベース上のデータを、新設したプライベートデータベースに移動する。クライアントアプリケーションはすでにデータベースには直接依存していないので、これによって影響を受けることはない。
  • 繰り返し: マイクロサービスが必要なアプリケーション内の他のビジネス機能についても、これと同じプロセスを実行する。

Shoup氏はさらに、共有データや結合、トランザクションに関わるユースケースのためのマイクロサービス技術についても論じている。

共有データ: 単一のシステム・オブ・レコード(SoR)にすべてのデータを所有するサービスを作成する。これ以外のデータのコピーはすべて、読み取り専用の非公式なキャッシュである。共有データへのアクセスには3つの選択肢 — 同期ルックアップ(データ取得のために別のサービスを呼び出す)、キャッシュを備えた非同期イベント、共有メタデータライブラリ — のいずれかを使用することができる。

結合: データを別々のサービスに分割すると、結合が非常に難しくなる。マイクロサービスの世界でのデータ結合の実現は、クライアントアプリケーション内の結合を使って実行するか、あるいは2つのサービスが発行するイベントを監視し、それらの非正規化結合をメンテナンスした“マテリアライズドビュー”を作成することで可能になる。

トランザクション: トランザクション管理はモノリシックデータベース内では容易だが、データがさまざまなサービスに分割されているマイクロサービスアーキテクチャでは非常に難しい問題だ。復帰処理を逆順で適用することによるロールバック機構を備えたワークフローとして、トランザクションを実装する。支払処理や経費承認など多くの実世界システムでは、すでにこれを実行している。このようなワークフローは、ファンクションズ・アズ・ア・サービス(サーバレスアーキテクチャ)を使用する場合にも理想的なものだ。

 

この記事を評価

採用ステージ
スタイル

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT