Architect Elevator Blog日本語版

Real life writes the best stories, so ride the architect elevator up and down Enterprise IT with me. -- Gregor Hohpe

ハイブリッドクラウド象の分割

シンプルかつ記憶しやすい思決定モデルを使えば、エレベーターアーキテクトはより良い決定をより意識的に行うことができます。ハイブリッドクラウドはこのための良いテストケースです。

ハイブリッドマルチクラウドに関する以前の記事で説明したように、ハイブリッドクラウドは、少なくとも一時的な状態としてあらゆる企業のクラウドシナリオにあらわれます。理由は単純です。ある日、全てのワークロードがデータセンターから魔法のようになくなることはありません。いくつかのアプリケーションはすでにクラウドにあり、他のアプリケーションはいまだにオンプレミスにあります。そして、これら二つの場所にデプロイされたアプリケーションは協調して動作する必要があるでしょう。

つまり、ハイブリッドが流行語になるのは当然でしょう。とはいえ、アーキテクチャ思考を適用することには大きなメリットがあります。それでは、前回の定義から始めてみましょう。

ハイブリッドクラウドアーキテクチャはワークロードをクラウドとオンプレミス環境に分割します。一般的に、これらのワークロードは協調して動作します。

Hybrid and multi

きちんとしたクラウドコンピューティング戦略を定義すること自体がすでに十分複雑なので、単純な定義が一番役にたちます。単純な定義はさまざまな人々がコンセプトや決定を理解するのに役立ちます。それだけではなく、どのように作られているかに焦点を当てるかわりに、どのように利用されるのかを強調します(構造ではなく意図に注目するのはパターンの著者の性なのかもしれません)。

残念ながら、定義は最初の一歩にすぎません。定義したものを実現するためには何か具体的なものに発展させる必要があります。そのために、アーキテクトエレベータに乗って数階降りて、重要なニュアンスを理解し、分類してみましょう。

二つに分離された環境はハイブリッドではない

いくつかのワークロードをクラウドにそして残りをオンプレミスに置くのは、残念ながら単に別のコンピューティング環境をポートフォリオに追加しているにすぎません。複雑さを求めるCIOはいません。つまり、これは良い計画ではないように思えます。

複雑さを求めるCIOはいません。クラウドを別のデータセンターにしてはいけません。

したがって、ハイブリッドと呼ぶためには環境全体の統合管理が必要です。ハイブリッドカーの例で考えてみましょう。ハイブリッドカーで難しいのは、バッテリーと電気モーターをガソリン車に組み込むことではありません。二つのシステムをシームレスに調和のとれた方法で機能させることが難しかったのです。これが、トヨタプリウスがハイブリッドカーと呼ばれる理由です。

先ほどの定義を見直しましょう。

ハイブリッドクラウドアーキテクチャはワークロードをクラウドとオンプレミス環境に分割します。一般的に、これらのワークロードは協調して動作します。両方の環境は統合管理されます。

Hybrid Cloud

さまざまな環境の統合管理は簡単ではありませんが、いくつか方法があります。

よく考えてみると、これらの選択の判断は別の記事にするに十分なボリュームです。この記事では、ハイブリッドクラウドの基本的な決定について考えてみましょう。

ハイブリッドの分割 - 31種類の味

ハイブリッドクラウドの重要なアーキテクチャ上の決定事項はワークロードの分割方法です。つまり、ITシステムのどの部分をクラウドに移行し、どの部分をオンプレミスに残すかです。この決定は、ITシステムのつなぎ目を見つけるという考え方に密接に関係しています。Mike Feathersは彼の古典と言えるWorking Effectively with Legacy Code(日本語訳はレガシーコード改善ガイド)の中で(知る限り)はじめてつなぎ目について説明しました。つなぎ目は分割による依存関係があまり増えずに、パフォーマンスの低下のような実行時の問題を引き起こさない場所です。

ワークロードを分割する31の方法を記述することはできないので、興味をひくタイトルをつけたことを謝っておきます。とはいえ、できる限りカタログ化したいと思います。これはいくつかの点で役に立ちます。

クラウド象の分割方法

企業がハイブリッド環境にまたがってワークロードを分割する方法は少なくとも八つあります。もっと見たことがある人もいるかもしれません。

Ways to split hybrid cloud

この一覧の主な目的は知られていない選択肢を見つけることではありません。基本的な確認に便利なようによく知られている選択肢を集めたものです。それぞれのアプローチをもう少し詳しく見てみましょう。

層: フロントとバック (Tier: Front vs. Back)

Separating by tier

顧客やエコシステムに面しているコンポーネント、別名「フロントエンドシステム」、あるいは「エンゲージメントシステム」をクラウドに移行し、バックエンドシステムを維持するのは一般的な戦略です。

私は2スピードアーキテクチャは好きではありませんが、理由によってはこのアプローチが当然の選択になります。

これらのわかりやすい利点に加えて、次の注意すべき点を除くと、アーキテクチャはそれほど興味深いものではありません。

「2スピードIT」の興奮が消え去ったとしても、このアプローチは依然として優れた移行の中間ステップです。ただし、長期的な戦略と混同してはいけません。

世代: 新しいものと古いもの (Generation: New vs. Old)

Separating by generation

密接に関係しているのは、新しいもの古いものによる分割です。すでに説明したように、新しいシステムは一般的にスケーラブル、かつ独立してデプロイできるように設計されているため、クラウドにデプロイするのが自然であることが多いでしょう。また、新しいシステムは比較的小規模で、クラウドネイティブと呼ばれるにふさわしいものです。クラウドネイティブという言葉はクラウドへの移行(移住)を禁じているように見えるので好きではありませんが。

繰り返しになりますが、この分割には理由があります。

繰り返しになりますが、考慮すべきこともあります。

新しいシステムを開発しているのであれば、これは全体としては良いアプローチと言えます。最終的に古いもの新しいものでを置き換えられます。

重要度: 重要でないものと重要なもの (Criticality: Non-critical vs. Critical)

Separating by criticality

多くの企業は本腰を入れる前につま先を水につけることを好みます。初期の学習曲線と避けがたい失敗を許容できるいくつかの単純なアプリケーションでクラウドを試すでしょう。「早く失敗」し、その過程で学ぶのは理にかなっています。

重要でないアプリケーションのクラウドへの移行は良いスタートです。しかし、限界もあります。

一般的には「つま先を水につける」戦略は「全てが落ち着くまで待て」アプローチに勝ります。

ライフサイクル: 開発と本番 (Lifecycle: Development vs. Production)

Separating by lifecycle

有名な象(私のようなベジタリアンにとってはナス)を分割する方法はたくさんあります。ランタイムコンポーネントの分割と異なるアプローチはアプリケーションライフサイクルによる分割です。例えば、規制による制約のため本番環境はオンプレミスのままで、ツール、テスト、ステージング環境をクラウドで実行することができます。

ビルドとテスト環境をクラウドに移行するのは良い考えです。

アーキテクチャはトレードオフの問題であることはご存知でしょう。したがって、次の点に注意してください。

このアプローチは本番用のワークロードをクラウドで動かすことが禁じられているが、クラウドをできる限り活用したい開発チームにとって最も一般的な選択肢です。

データ区分: 機密性の高くないものと機密性の高いもの (Data Classification: Non-sensitive vs. Sensitive)

Separating by data classification

ハイブリッドクラウドにおける計算という側面は比較的単純です。コードを異なる環境に再デプロイするのは簡単ですから。データは違います。データは大体一箇所にあるので、移行、あるいは同期が必要です。計算処理だけを移行し、データをオンプレミスに置いたままにすると、パフォーマンスが大幅に低下するでしょう。つまり、クラウドへの移行を妨げることが多いのはデータです。

データ区分はアプリケーションをクラウドに移行する際の障害となる可能性があるので、機密性の高いデータをオンプレに置いたまま機密性の低いデータだけをクラウドに移行するのは自然な分割方法です。

しかしながら、このアプローチは今日のコンピューティング環境に必ずしも当てはまらない前提に基づいています。

したがって、規制やポリシーの制約に対応するためにこのアプローチから始めることは適切ですが、長期的な戦略として用いる場合には注意が必要です。

データの鮮度: バックアップと稼働中 (Data Freshness: Back-up vs. Operational)

Separating by data freshness

全てのデータが常にアプリケーションによってアクセスされるわけではありません。実際のところ、多くの企業では大部分のデータが「コールド」、つまり滅多にアクセスされません。例えば、過去のレコードやバックアップがそうです。クラウドプロバイダーは滅多にアクセスされないデータ向けの魅力的な選択肢を提供しています。AmazonのGlacierはこのようなユースケースを対象とした最初の製品の一つです。Azure Storage Archive TierGCP Coldline Cloud Storageのような特別なストレージサービス層を提供しているプロバイダもあります。

データをクラウドにアーカイブすることは道理にかなっています。

残念ながら、制約もあります。

しかしながら、クラウドによるバックアップは企業にとってクラウドの恩恵をすぐに受けることのできる良い方法です。

稼働状況: 災害時と通常時 (Operational State: Disaster vs. BAU)

Separating by operational state

システムの稼働状況によってワークロードを分割することもできます。わかりやすい稼働状況の分類は、物事が順調か(「通常」)、あるいは主なコンピュータリソースが稼働していないか(「災害」)です。システムをオンプレミスで動かすことを望んでいる、あるいは規制機関が望んでいるとしても、オンプレミス上のシステムが利用できなくなった場合に、全く利用できないより、クラウド上のシステムを利用できるほうが良いかもしれません。

同じコードを両方の環境で動かす、ただし異なる状況ににおいてという点で、このワークロード分割アプローチは他のアプローチと大きく異なっています。

しかしながら、物事はそれほど単純ではありません。

つまり、このアプローチは大量のデータを必要としない計算タスクに最も適しています。例えば、メインサイトが利用できない時も顧客が注文可能なeコマースサイトです。これは、メインシステムが復旧するまで、(公開)カタログから選び注文を保存することによって可能です。可愛いらしい404、あるいは500ページよりは良いでしょう。

ワークロードの需要: バーストと通常 (Workload Demand: Burst vs Normal Operations)

Separating by workload demand

大事なことを言い忘れていましたが、ひどい緊急事態でなくとも、通常時はオンプレミスで実行しつつ、時々ワークロードをクラウドに移行することはできます。かつて頻繁に引用されたアプローチはバーストをクラウドで実行する事です。つまり、オンプレミスの処理能力は固定で、それ以上の処理能力が必要になったら一時的にクラウドに拡張します。

今までと同様にこの選択肢にも利点があります。

しかしながら、人々がこの選択肢についてもはや話さないのには理由があります。

この選択肢はシミュレーションのような計算中心のワークロードに最適です。また、クラウド上で急いで機械的に何かをするような一回限りの計算タスクにも向いています。例えば、このアプローチはニューヨークタイムズが600万枚の写真をデジタル化したり円周率を31兆桁まで計算したりするのに最適でした。

実践してみよう

ほとんどの企業はハイブリッドクラウドを避けることができません。したがって、ハイブリッドクラウドを最大限に活用するの良い計画が必要です。ワークロードをクラウドとオンプレミス環境に分割するための選択肢は多いため、これらの選択肢をカタログ化する事により、考え抜かれ、明確に話し合われた決定が可能となります。また、「一つのサイズで全てに対応できる」と宣言することを避けることができます。これらはより良いアーキテクトであるための考え方です。

楽しい分割と移行を!

ps: もし、まだ知らないのであれば、Simon Wardleyのハイブリッドクラウドに対する面白い見解を読んでみてください。

その他のクラウド戦略に関する見解

注: この記事の執筆や関連するクラウド移行によって象に被害がなかったことを証明します。