こんにちは。Chief Technologistの梅野です。
今日はアプリケーション・モダナイゼーションで提供しているアーキテクチャや方法論について書いてみます。 世間では色々な種類のモダナイゼーションが叫ばれていますが、レッドハットが提唱しているものはちょっとユニークかもしれません。
アプリケーション・アーキテクチャ
アプリケーションモダナイゼーションでのアーキテクチャは?と言ったら、皆様すぐに思いつくのはマイクロサービスアーキテクチャではないでしょうか。ところが、このマイクロサービスアーキテクチャについてお客様にお伺いすると、結構バラバラのご意見を伺います。
- 既存の業務アプリでのユースケースに沿った、画面・ロジック・データが一体化したアプリの粒度 (分けることが出来ない)
- サーバレス技術を使った、関数レベルのサービス提供
マイクロサービス を考える前に、まずはマイクロではないサービスを考える必要があります。 まず、皆様の会話の中で「サービス」のことを「一連の業務を支援するアプリ」捉えられているケースがあります。確かに業務視点でみると、それを「サービス」と呼んでいるかもしれません。ですが、この観点だけで「サービス」を定義してよいのでしょうか。 レッドハットでは、「ITとしてのサービス」をまず最初に定義しましょうと提唱しています。ITとしてのサービスとは、下記のようなものです。
次に、このITとしてのサービスを横軸として、縦軸に業務を刺してみます。
そうすると、ITとしてのサービスと業務が交わったところ、ここを黄色の点線で囲ってみます。
この、黄色の点線を「マイクロサービス」として考えてみるのはいかがでしょうか。全てのアプリケーションは同じITとしてのサービスで構成が可能です。いくつかの業務では、例えばUIサービスが無いものもあるかもしれませんが、それはたまたま無いだけで、全てのアプリケーションが同じアーキテクチャで構成できるというのは理想のはずです。「フレームワーク」というのが実装面での共通設計であるように、アーキテクチャとして共通設計できることは、見通しが良くなるものです。
各ITとしてのサービスをレッドハット社の製品に当てはめるとこのようになります(UIだけ、リッチなものがないですが...)
ここで、先程のご意見にあった
- 既存の業務アプリでのユースケースに沿った、画面・ロジック・データが一体化したアプリの粒度 (分けることが出来ない)
- サーバレス技術を使った、関数レベルのサービス提供
ですが、
1.はモノリスアプリがスライスされるだけなので、あまり効果は見込めません。むしろ、切ってはいけないところで切ってしまいうと、より複雑性が生まれてしまいます。アプリの中で画面・ロジックとデータは一体型にせずに分けるべきと思います。
2.はマイクロサービスと言う概念とサーバレスという実行技術を混同されているものと思われます。あくまでもアーキテクチャとしてのマイクロサービス、実行体としてのサーバレス(サーバー上で常駐起動させていなくとも瞬時に呼び出せる技術で、リソースの省力化などを目指す技術)は別物であると認識いただくべきです。
他のソリューション
アプリケーションモダナイゼーションでは、マイクロサービスアーキテクチャ以外にも下記のようなアーキテクチャや考え方を適用すると、より効果的になります。
- 脱バッチソリューション(イベントドリブンアーキテクチャ)
ルール駆動開発手法 (過去に何回か赤帽エンジニアブログでも紹介しております!) rheb.hatenablog.com
適切なツールを使ったデータの移行
- 現新比較を繰り返すテスト方法と進捗率の確認
- コンテナプラットフォームを利用したBlue Greenデプロイメント
次回以降、このあたりもご紹介していきたいと思います。
うめの