1. ホーム
  2. ブログ
  3. データ活用
  4. データ連携と統合を科学するブログ
  5. マイクロサービスアーキテクチャ再考

マイクロサービスアーキテクチャ再考

マイクロサービスアーキテクチャは、マイクロサービスの集合によって構成されるシステムを指す言葉です。マイクロサービスアーキテクチャによって様々なメリットが得られます。

(マイクロサービスおよびマイクロサービスアーキテクチャの定義については、JamesLewis & MartinFowlerのMicroservicesならびに日本語訳(いずれも外部リンク)をご覧ください。) 

しかしながら、WebAPIやサーバレスアーキテクチャのように、既存のシステムを否定するかのような、特定の技術や設計手法によってシステムを構築する事だと誤解されている場合があります。

 

実際には、既存システムを肯定しつつ、有効に活用しながら、最適なシステムへと導くのが、本来のマイクロサービスアーキテクチャの考え方です。

 


マイクロサービスの誤解

 

マイクロサービスとは、協調して自律的に動作するサービスを指します。

多くの場合、データをWebAPIで提供する方式や、機能をHTMLに埋め込むJavaScriptをサーバ(CDN)からダウンロードさせる、といった方式で提供されるのですが、こうしたWeb技術のみを指すと誤解される事があります。

こうした誤解から、大規模な既存システムを保有する組織にとって、既存のシステムとは大きく異なる方式なので、あまり関係のない話、という印象を持たれる場合があります。

 

しかし、マイクロサービスそのものは、特定の通信方法やインフラは限定しませんし、直接の関連もありません。Webサーバによるサービスである必要もありません。

むしろ、新しい技術による新システムを新規作成するのではなく、既存のシステムをいかに最適にサービス分解していくか、といった問題領域に対して、検討の指針を与えるのがマイクロサービスアーキテクチャです。

 

既存システムをマイクロサービスに分解する方法論としては、以下を利用します。

 

「ドメイン駆動開発」「継続的デリバリ」「オンデマンド仮想化」「インフラ自動化」

 

習熟度に応じて、これらの方法論を段階的に展開していくのが、マイクロサービスアーキテクチャです。

 

また、「小規模で自立的なチーム」として、サービス開発チームをビジネス機能ごとの人員に合わせるアプローチや、「大規模システム」を安全に運用する為の”人”中心の解決アプローチも、同様に駆使していきます。

 

このように、マイクロサービスアーキテクチャは、既に活用されてつづけている、強力な方法論の世界から生まれました。

 


マイクロサービスを特定の技術に依存させない

 

既存システムをマイクロサービスアーキテクチャに移行するにあたって、サービス間の連携において、昨今広く利用されるHTTP RESTに変える為に、SpringなどのWEBサーバ技術を用いて、サービス化したいと考える方がおられるかもしれません。

しかしながら、マイクロサービスを載せるサービス基盤について、特定の通信プロトコルなど、技術を限定する形式を選択するのはおすすめしません。

 

パフォーマンスが必要となったとき、HTTP REST からネイティブ通信に変更する、といった方法が容易に行えなければなりません。なぜなら、HTTP Restは必ずしも高速ではなく、低レイテンシを要求するケースには向かない為です。

 

HTTP RESTに依存させずに、土管のように振る舞ってインフラに徹するサービス基盤を選択するべきです。

 

また、AWS lambdaを使うようなサーバレスアーキテクチャなど、特定のコンテナを用いる前提のもとでサービス化する事もおすすめしません。

当然、既存のシステムを、わざわざPythonなどに組み替える事は考えないと思いますが、コンテナを限定してしまうと、コンテナ固有の技術に依存する結果となります。

 

lambdaの場合、コンテナ固有の技術といえるのが、数種に限定されてしまうプログラム言語です。

プログラム言語のように、実装の方式がコンテナの形態に依存するケースでは、技術と機能実現の方法が密接に結合してしまうので、より良い技術が台頭してきた時に、技術を置き換える事が出来ず、サービスの柔軟性が損なわれる事になります。

サーバレス方式は、スタートアップのような、ビジネスモデルが離陸するかどうかが見えない、長期的な展望があまり重要でないスモールスタート指向には有効でしょう。

しかし、ビジネスとして既に成功し、必要な機能が確立された企業の既存システムに向いているとは言えません。

 

長期的な視野に立ち、既存のシステムに柔軟を与えながらサービス化させていくには、裏方に徹しつつ、あらゆる方法でサービス間の接続を可能にする、サービス基盤を選択する事が重要となります。

 


マイクロサービスアーキテクチャを実現するサービス基盤

 

弊社では、既存のシステムを大きく変える事無く、柔軟性を与える事ができるサービス基盤である

webMethods」を販売しています。

マイクロサービスアーキテクチャでは、既存システムを分割して自律的なサービスをマイクロサービスとして作ります。こうして作られたマイクロサービス同士を連結させるには、メッセージ通信にあたっての柔軟性が重要です。

「webMethods」では、RESTを初め、SOAP、MQ、MQTT、WebSocketなど、さまざまなメッセージ通信の方式を選択できるので、既存システムに柔軟性を与えます。

 

このように、既存のシステムをマイクロサービス化するには、インフラとしての役割に徹するサービス基盤の利用が有効です。

「webMethods」を活用して、是非、既存システムを、スムーズにマイクロサービスアーキテクチャへと導いてください。

 


(2017/9/1 マイクロサービスおよびマイクロサービスアーキテクチャの定義に関するリンクを追記しました)

 

おすすめ記事