モダンなアプリケーション開発へ、移行戦略の「6R」とは?
レッドハットではモダナイゼーションの移行戦略を「6R」と分類している。アプリケーションを廃棄する「Retire」、維持(塩漬け)する「Retain」、新しい筐体へアプリケーションを移行する「Rehost」、アーキテクチャの変更やコードの大幅な変更を必要とせず最適化する「Replatform」、開発方法やアーキテクチャを変更しクラウドネイティブ化する「Refactor」、SaaSへの移行やアプリケーションの一部をサービス(as a Service)に置き換える「Repurchase」の6つ戦略だ。
「Retain」や「Rehost」なら、少ない労力で移行が可能だ。一方、大胆に作り替える「Refactor」では、大仕事になる分効果も大きい。レッドハットでは、これら「6R」を学ぶことができる実践的なハンズオンのワークショップ「Modern App Development(MAD)Roadshow」を提供している。ここで得られる知識を活かせば、モダナイズの成功が見えてくるだろう。しかし、現実はそう簡単ではない。その理由について、暮林氏は「複雑で混沌とした状況を踏まえて交通整理するのがモダナイゼーション」と説明する。
モダナイゼーションのプロジェクトは「ほぼジオゲッサー」と暮林氏は言う。ジオゲッサーとは、ブラウザゲームの1つだ。プレイヤーはランダムにGoogleマップ上のどこかの地点に落とされ、周囲に見えるGoogleストリートビューの景色から現在地を当てるルールになっている。モダナイゼーションも、ジオゲッサーのように現在地を探すことから始める。
モダナイゼーションの方向性を定めていくとき、モダナイズ対象を4象限に分けて現状を整理する。下図のように、対象領域が曖昧であると図の上部に、既存領域に強く依存していると左側に分類される。
図の左上は既存かつ曖昧な領域で、範囲が広くてどこから手を付けたらいいか分からないという状態にあたる。ここでは「ドメイン駆動設計(戦略的DDD)」と呼ばれる手法が使われる。図の左下は、既存で対象が明確なので「アプリケーションシンプリファイ」という手法を利用する。図の右上は曖昧で新規寄りの領域で「アジャイルアプローチ」を使う。また、図の右下は新規システム開発になるので、モダナイゼーションからは対象外となる。順序としては左上のドメイン駆動設計から始めて、アジャイルアプローチかアプリケーションシンプリファイに移ることが多い。