Skip to main content
QUICK REVIEW

[論文レビュー] Microservices: a Language-based Approach

Claudio Guidi, Ivan Lanese|arXiv (Cornell University)|Apr 26, 2017
Software System Performance and Reliability被引用数 4
ひとこと要約

この論文は、一般言語がサービスの組み合わせや調整のためのネイティブな抽象化を欠いているとして、マイクロサービス開発における言語ベースのアプローチを提唱している。本稿では、ポート、インタフェース、ワークフローといった一等級の言語的構造を用いてマイクロサービスをモデル化する手法を提案し、Jolieプログラミング言語を用いて実証している。これにより、モジュラー性の向上、エラーの低減、複雑なメッセージ交換インタラクションの体系的管理が可能となる。

ABSTRACT

Microservices is an emerging development paradigm where software is obtained by composing autonomous entities, called (micro)services. However, microservice systems are currently developed using general-purpose programming languages that do not provide dedicated abstractions for service composition. Instead, current practice is focused on the deployment aspects of microservices, in particular by using containerization. In this chapter, we make the case for a language-based approach to the engineering of microservice architectures, which we believe is complementary to current practice. We discuss the approach in general, and then we instantiate it in terms of the Jolie programming language.

研究の動機と目的

  • 主流のプログラミング言語がマイクロサービスの組み合わせにネイティブな抽象化を欠いている問題に対処すること。
  • コンテナ化などのデプロイメント中心の実践から、マイクロサービス工学における開発中心の言語サポートへ視点を移すこと。
  • 一等級の言語的構造を通じて、モジュラーで組み込み可能かつ型安全なサービスの調整を可能にすること。
  • マイクロサービス向けに設計された言語が、一般言語よりも複雑なワークフローとメッセージ交換パターンを明確に表現できることを実証すること。

提案手法

  • ポート、インタフェース、ワークフローといった一等級の言語的構造を用いてマイクロサービスをモデル化する。
  • 入力ポートおよび出力ポートでの受信および送信操作を定義し、明示的なインタフェース定義を用いてサービスの振る舞いを記述する。
  • 順序、条件分岐、ループ、並列構成といったワークフロー構造を用いて、サービスの論理を構造化する。
  • 相関セット(csets)を用いて動的メッセージ処理を実装し、複数の並列クライアントセッションを管理する。
  • 繰り返しでイベント駆動のインタラクション(例:ショッピングカート操作)をモデル化するための「provide-until」構文を導入する。
  • 振る舞いとデプロイメントを分離することで、実行時におけるポートの場所やプロトコルの動的設定を可能にする。

実験結果

リサーチクエスチョン

  • RQ1プログラミング言語が一等級の抽象化を通じてマイクロサービスの組み合わせと調整をどのようにネイティブにサポートできるか。
  • RQ2明示的なインタフェースとポートが、マイクロサービス開発におけるモジュラー性の向上とエラーの低減に果たす役割は何か。
  • RQ3一般言語におけるアドホック実装と比較して、言語ベースのアプローチがメッセージ交換の調整の複雑さをどの程度軽減できるか。
  • RQ4ワークフロー構造(例:provide-until)の統合が、マイクロサービスの振る舞いの表現力をどのように向上させるか。
  • RQ5Jolieのような言語が、明確さや正しさを損なうことなく、細粒度のサービスの組み合わせと実行時プロセス管理の両方をどの程度サポートできるか。

主な発見

  • Jolie言語は、ポートとインタフェースに対する一等級のサポートを提供しており、サービス契約や依存関係を明確に指定できる。
  • 『provide-until』のようなワークフロー構造の使用により、オンラインショッピングシステムにおける顧客セッションのような長時間で状態を持つインタラクションを自然にモデル化できる。
  • 相関セット(csets)により、複数の並列プロセスを実行時で管理でき、メッセージが正しいセッションにルーティングされることを保証する。
  • 振る舞いとデプロイメントの分離により、論理を変更せずにサービスエンドポイントやプロトコルの動的再設定が可能になる。
  • 通信構造を明示的かつ組み込み可能にすることで、低レベルの調整論理に起因するエラーのリスクを低減できる。
  • Jolieの設計により、サービスの組み合わせを言語の主要な関心事として扱うことで、モジュラーでスケーラブルかつ保守可能なマイクロサービスアーキテクチャが実現できる。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。