アプリケーション・モダナイゼーションで有効なソリューション -マイクロサービスアーキテクチャ-

こんにちは。Chief Technologistの梅野です。

今日はアプリケーション・モダナイゼーションで提供しているアーキテクチャや方法論について書いてみます。 世間では色々な種類のモダナイゼーションが叫ばれていますが、レッドハットが提唱しているものはちょっとユニークかもしれません。

アプリケーション・アーキテクチャ

アプリケーションモダナイゼーションでのアーキテクチャは?と言ったら、皆様すぐに思いつくのはマイクロサービスアーキテクチャではないでしょうか。ところが、このマイクロサービスアーキテクチャについてお客様にお伺いすると、結構バラバラのご意見を伺います。

  1. 既存の業務アプリでのユースケースに沿った、画面・ロジック・データが一体化したアプリの粒度 (分けることが出来ない)
  2. サーバレス技術を使った、関数レベルのサービス提供

マイクロサービス を考える前に、まずはマイクロではないサービスを考える必要があります。 まず、皆様の会話の中で「サービス」のことを「一連の業務を支援するアプリ」捉えられているケースがあります。確かに業務視点でみると、それを「サービス」と呼んでいるかもしれません。ですが、この観点だけで「サービス」を定義してよいのでしょうか。 レッドハットでは、「ITとしてのサービス」をまず最初に定義しましょうと提唱しています。ITとしてのサービスとは、下記のようなものです。

次に、このITとしてのサービスを横軸として、縦軸に業務を刺してみます。

そうすると、ITとしてのサービスと業務が交わったところ、ここを黄色の点線で囲ってみます。

この、黄色の点線を「マイクロサービス」として考えてみるのはいかがでしょうか。全てのアプリケーションは同じITとしてのサービスで構成が可能です。いくつかの業務では、例えばUIサービスが無いものもあるかもしれませんが、それはたまたま無いだけで、全てのアプリケーションが同じアーキテクチャで構成できるというのは理想のはずです。「フレームワーク」というのが実装面での共通設計であるように、アーキテクチャとして共通設計できることは、見通しが良くなるものです。

各ITとしてのサービスをレッドハット社の製品に当てはめるとこのようになります(UIだけ、リッチなものがないですが...)

ここで、先程のご意見にあった

  1. 既存の業務アプリでのユースケースに沿った、画面・ロジック・データが一体化したアプリの粒度 (分けることが出来ない)
  2. サーバレス技術を使った、関数レベルのサービス提供

ですが、

1.はモノリスアプリがスライスされるだけなので、あまり効果は見込めません。むしろ、切ってはいけないところで切ってしまいうと、より複雑性が生まれてしまいます。アプリの中で画面・ロジックとデータは一体型にせずに分けるべきと思います。

2.はマイクロサービスと言う概念とサーバレスという実行技術を混同されているものと思われます。あくまでもアーキテクチャとしてのマイクロサービス、実行体としてのサーバレス(サーバー上で常駐起動させていなくとも瞬時に呼び出せる技術で、リソースの省力化などを目指す技術)は別物であると認識いただくべきです。

他のソリューション

アプリケーションモダナイゼーションでは、マイクロサービスアーキテクチャ以外にも下記のようなアーキテクチャや考え方を適用すると、より効果的になります。

  • 脱バッチソリューション(イベントドリブンアーキテクチャ)
  • ルール駆動開発手法 (過去に何回か赤帽エンジニアブログでも紹介しております!) rheb.hatenablog.com

  • 適切なツールを使ったデータの移行

  • 現新比較を繰り返すテスト方法と進捗率の確認
  • コンテナプラットフォームを利用したBlue Greenデプロイメント

次回以降、このあたりもご紹介していきたいと思います。

うめの

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。