AWS / SAP-C02

SAP-C02-149 · セクション 17 / タスク 4.1

7Rs Migration Strategy

Rehost / Replatform / Refactor / Re-architect / Repurchase / Relocate / Retain / Retire

Migration Candidateを識別した後は、

このApplicationを
どのような方法で扱うか

を考えます。

AWSへのMigrationでは、代表的な移行戦略として7Rsがあります。

Rehost

Replatform

Refactor / Re-architect

Repurchase

Relocate

Retain

Retire

重要なのは、

AWSへ移す
=
すべてRehost

ではないことです。

Applicationごとに、

現在のApplicationを残したい?

どの程度変更できる?

新しい製品へ置き換える?

現在は移行しない?

そもそも残す必要がある?

という条件が異なります。

ゴール

このページでは、

Applicationをどう扱いたい?
↓
ほぼ変更せず移す
→ Rehost

一部をCloud向けに最適化して移す
→ Replatform

アーキテクチャ自体を再設計する
→ Refactor / Re-architect

別製品 / SaaSへ置き換える
→ Repurchase

既存Platformを大きく変えず移す
→ Relocate

今はSource Environmentに残す
→ Retain

不要なので廃止する
→ Retire

という違いを判断できることがゴールです。

1. 7Rsは「AWSへ移す方法」だけではない

7Rsの中には、

AWSへ移す戦略

だけでなく、

今は移さない

Application自体を廃止する

という判断も含まれます。

例えば、

Rehost
Replatform
Refactor
Repurchase
Relocate

はApplicationの移行や置き換えに関係します。

一方、

Retain
Retire

では、

今はSource Environmentへ残す

または

Application自体を終了する

という判断になります。

したがって最初から、

どのAWS Serviceへ移す?

だけを考えないことが重要です。

2. Rehost — Applicationをほぼ変更せず移す

Rehostは、

Lift and Shift

とも呼ばれます。

基本的な考え方は、

現在のApplication
↓
Applicationへ大きな変更を加えない
↓
AWSへ移行

です。

例えば、

On-premises VM
↓
Amazon EC2

のように、現在のApplication構成を大きく変更せず移します。

3. Rehostの決定打は「Migration時の変更を最小化したい」

例えば、

Data Center退去期限
→ 6か月後

Application
→ 現在正常稼働

大規模なコード変更
→ Migration期限内には困難

という状況なら、

まずCloudへ移してから後で最適化する方針が考えられます。

この場合、

変更量を抑える

Migration速度を優先

アーキテクチャのモダナイゼーションは後段

という条件から、

Rehost

が候補になります。

Rehostを選んだからといって、

将来も永遠に同じアーキテクチャ

という意味ではありません。

Migration後にモダナイゼーションすることもできます。

4. Replatform — 移行と同時に一部を最適化する

Replatformは、

Lift, Tinker and Shift

または、

Lift and Reshape

とも呼ばれます。

考え方は、

現在のApplication
↓
一部をCloud向けに最適化
↓
ただし全面的なアーキテクチャ再設計まではしない
↓
AWSへ移行

です。

5. ReplatformはRehostとRefactorの中間にある

例えば現在、

Application
↓
EC2相当のServer

Database
↓
自己管理

という構成があるとします。

Application全体を書き直すのではなく、

Application
→ 大きく維持

Database
→ マネージドデータベースへ変更

のように、一部のPlatformをCloud向けに最適化する場合はReplatformを検討できます。

つまり、

ほぼそのまま
→ Rehost

一部最適化
→ Replatform

アーキテクチャを大きく再設計
→ Refactor / Re-architect

と区別します。

6. マネージドサービスを使うだけで必ずReplatformとは限らない

移行戦略は、

AWS Service名

だけで決めません。

同じAmazon RDSなどを利用する場合でも、

Application構造

Database Engine

コード変更

Target Architecture

によって必要な変更量は異なります。

重要なのは、

どのServiceを使うか

ではなく、

現在のApplicationからTargetへどの程度変更するか

です。

したがって、

マネージドサービスを使う
=
必ずReplatform

ではありません。

7. Refactor / Re-architect — アーキテクチャ自体を再設計する

Refactor / Re-architectは、

現在のアーキテクチャ
↓
アーキテクチャを変更
↓
クラウドネイティブな機能を活用

する戦略です。

例えば、

Monolithic Application

が、

スケーリングしにくい

Releaseに時間がかかる

変更の影響範囲が大きい

という業務・技術上の問題を抱えている場合、

単にServerをAWSへ移すだけでは根本問題が残ります。

そこで、

アーキテクチャ自体を再設計

することを検討します。

8. Refactorは「移行ついでの小変更」ではない

例えば、

OS Versionを更新する

Databaseをマネージドサービスへ移す

Instance Sizeを変える

程度だけであれば、必ずしもRefactorではありません。

Refactor / Re-architectでは、

Application Componentの分割

Architecture Patternの変更

Cloud-native設計への変更

など、

Applicationのアーキテクチャそのものへ大きな変更

を加えます。

そのため一般に、

変更量

複雑さ

試験範囲

も大きくなります。

9. 大規模MigrationではRefactorを無条件に選ばない

Cloud-native化にはメリットがありますが、

Cloud-native
=
Migration時に必ずRefactor

ではありません。

大規模Migrationでは、

Application数が多い

Migration期限が短い

変更Riskを抑えたい

場合があります。

そのため、

まずRehost / ReplatformなどでMigration
↓
Migration後にModernize

する方が適切な場合もあります。

重要なのは、

モダナイゼーションの効果とMigration時の変更量を分けて考えること

です。

10. Repurchase — Applicationを別製品へ置き換える

Repurchaseは、

Drop and Shop

とも呼ばれます。

現在のApplicationをそのままAWSへ移すのではなく、

現在のApplication
↓
別のProduct / Serviceへ置き換え

ます。

代表的なのは、

On-premises Package
↓
Vendor SaaS

への置き換えです。

11. Repurchaseでも移行作業がなくなるわけではない

Repurchaseの場合、

旧ApplicationのServerを
そのままAWSへ移す

わけではありません。

しかし、

既存Data

User

Authentication

Integration

などを新しいProductへ移行・接続する必要がある場合があります。

つまり、

Applicationを置き換える
=
移行作業がなくなる

ではありません。

変わるのは、

既存Applicationを移すのではなく、新しいProductへ業務を移行する

という点です。

12. Relocate — 既存Platformを大きく変えず移す

Relocateでは、

Applicationのアーキテクチャ

を大きく変更せず、

既存Platform / Infrastructure単位

で移します。

AWSの現在の定義では、大量のServerを含むPlatformをCloud版Platformへ移したり、既存AWS Resourceを別VPC・Region・Accountへ移すケースなどもRelocateに含まれます。

基本的な考え方は、

既存の運用モデルやアーキテクチャを
できるだけ維持
↓
配置場所を変更

です。

13. RehostとRelocateを区別する

RehostもRelocateも、

大きなApplication Rewriteを避ける

点では似ています。

違いは判断単位です。

Rehost

Application / Serverを
AWS Infrastructureへ移す

Relocate

既存PlatformやInfrastructure群を
アーキテクチャを大きく変えず移す

つまり、

Server / Application中心のLift and Shift
→ Rehost

Platform / Environment中心の移動
→ Relocate

と考えると区別しやすくなります。

14. Retain — 今は移行しない

Retainは、

Source Environmentへ残す

戦略です。

例えば、

Data Residency制約

特殊Hardware Dependency

Migration Riskが高い

別Applicationを先に移行する必要がある

最近大きな設備投資をした

近い将来SaaS版へ置き換える予定

などにより、

現在はAWSへ移さない

という判断ができます。

15. Retainは「永遠にOn-premises」の意味ではない

RetainしたApplicationでも、

現在は移さない

だけで、

将来も絶対に移さない

とは限りません。

例えば、

Dependency解消

Hardware Refresh

Compliance要件変更

SaaS提供開始

などにより、後から戦略を再評価できます。

したがって、

Retain
=
現在のMigration Scopeでは残す

と考えます。

16. Retire — Applicationを廃止する

Retireは、

ApplicationをMigrationしない

点ではRetainと似ています。

しかし理由が違います。

Retireでは、

Application自体を
Decommission / Archive

します。

例えば、

利用者がいない

業務価値がない

別Systemへ機能統合済み

維持Costだけ発生

古いComponentのSecurity Riskがある

ようなApplicationです。

17. RetainとRetireを区別する

Retain

Applicationは必要
↓
現在は移さない
↓
Source Environmentで継続

Retire

Applicationを残す必要がない
↓
停止 / 廃止

したがって、

AWSへ移さない

という結果だけで両者を同じにしないことが重要です。

決定打は、

Applicationを今後も使う必要があるか

です。

18. 7Rsを変更量で整理する

Migration Strategyは、Applicationへ加える変更の大きさでも整理できます。

変更しない / 最小
│
├─ Relocate
│
├─ Rehost
│
├─ Replatform
│
└─ Refactor / Re-architect
               │
               ↓
           変更が大きい

ただし、

Repurchase

は既存Applicationを新Productへ置き換えるため、この一本の変更量だけでは表せません。

また、

Retain / Retire

はAWSへApplicationを移す戦略ではありません。

この整理は、

似ている戦略を区別するための目安

として使います。

19. 7Rsはビジネス要因と技術的制約から選ぶ

戦略を選ぶときは、

どれが最もCloud-nativeか

だけを基準にしません。

例えば、

Migration期限

Application変更許容度

業務価値

モダナイゼーションの必要性

Vendor Productの有無

Compliance

Physical Dependency

などが関係します。

例1

Data Center退去
→ 6か月

コード変更
→ 最小化したい

ならRehostが候補になります。

例2

現在のPackage
→ SaaS版へ置換可能

Infrastructure運用
→ 終了したい

ならRepurchaseが候補になります。

例3

Monolith
→ 事業成長を阻害

アーキテクチャ変更
→ 許容

ならRefactor / Re-architectが候補になります。

20. Strategy名だけではTarget Architectureは確定しない

例えば、

Replatform

と判断しても、

具体的にどのAWS Serviceへ移すか

まですべて自動的に決まるわけではありません。

同様に、

Refactor

と判断しても、

Serverless

Container

Event-driven

のどれを採用するかは別のアーキテクチャ判断です。

7Rsは、

Migrationの方向性

を表します。

具体的なTarget Architectureの詳細は、Application Requirementを基に後続で決定します。

21. 7Rs選択は後続Planningの入力になる

7Rsを分類すると、

どのApplicationを
どの方向で扱うか

が明確になります。

例えば、

Application A
→ Rehost

Application B
→ Retire

Application C
→ Repurchase

Application D
→ Replatform

という形です。

この情報は後続で、

Cost / Business Case

移行の複雑さ

Migration Wave

Migration Sequence

などを評価する際の入力になります。

このページでは、それらの詳細な比較までは行いません。

22. 7Rsの全体フロー

Applicationを今後も必要とする?
│
├─ No
│   → Retire
│
└─ Yes
    ↓
現在AWSへ移行する?
│
├─ No
│   → Retain
│
└─ Yes
    ↓
別Product / SaaSへ置き換える?
│
├─ Yes
│   → Repurchase
│
└─ No
    ↓
既存Platformを大きく変えず移す?
│
├─ Yes
│   → Relocate
│
└─ No
    ↓
Applicationをほぼ変更せず移す?
│
├─ Yes
│   → Rehost
│
└─ No
    ↓
一部最適化で十分?
│
├─ Yes
│   → Replatform
│
└─ No
    ↓
アーキテクチャ自体を再設計
→ Refactor / Re-architect

これは絶対的な実装手順ではなく、

7つのStrategyの違いを整理するための判断フロー

です。

混同ポイント

混同 正しい判断
AWSへ移すならすべてRehost Applicationごとに7Rsを評価する
マネージドサービスを使えば必ずReplatform 現在からTargetへの変更内容で判断する
小さな設定変更もRefactor アーキテクチャそのものを再設計するのがRefactor / Re-architect
Cloud-nativeが理想なのでMigration時は必ずRefactor Migration期限や複雑さを考慮する
Repurchaseなら移行作業はない Data / User / Integrationなどの移行が必要な場合がある
RehostとRelocateは同じ RehostはApplication / Server中心、RelocateはPlatform / Environment中心
Retain = 廃止 必要なApplicationを現在のEnvironmentへ残す
Retire = 将来Migration 不要ApplicationをDecommission / Archiveする
7Rsを決めればTarget Architectureも完全確定 7RsはMigrationの方向性であり、詳細Architectureは別途設計する

SAP-C02での判断

7Rsを問われた場合は、

Applicationは必要?
↓
今Migrationする?
↓
Product自体を置き換える?
↓
Platformをそのまま移す?
↓
Application変更を最小化する?
↓
一部最適化する?
↓
アーキテクチャを再設計する?

と考えます。

決定打は、

現在のApplicationを
どの程度残し

どの程度変更し

そもそも移行するのか

です。

まとめ

7Rsは、

Rehost
→ Applicationをほぼ変更せず移行

Replatform
→ 一部をCloud向けに最適化して移行

Refactor / Re-architect
→ アーキテクチャ自体を再設計

Repurchase
→ 別Product / SaaSへ置き換え

Relocate
→ 既存Platformを大きく変えず移動

Retain
→ 現在はSource Environmentへ残す

Retire
→ Applicationを廃止

と整理できます。

重要なのは、

AWS Service名

だけでStrategyを決めることではありません。

ビジネス要因
+
変更許容度
+
現在のApplicationの業務価値
+
技術的制約

を使って、Applicationに適した方向性を判断します。

理解確認

このページの内容を8問で確認します。

理解確認8問へ →