新しい IBM Developer JP サイトへようこそ!サイトのデザインが一新され、旧 developerWorks のコンテンツも統合されました。 詳細はこちら

IBM Developer Blog

IBM Developer サイトで最新の出来事をフォローし、情報を入手しましょう。

ワークロードを段階的に移行するのか完全なビジネス変革に取り組むのかに関わらず、いずれはアプリケーションをクラウドに移行する必要があります。


この記事は「Architecture Center: Modernize your application」の翻訳です。

ビジネスの変革、製品化までの時間短縮、競争上の優位性の維持という目標を達成するためには、アプリケーション・モダナイゼーションが必要になります。クラウドを採用すると、企業は最新テクノロジーの導入を促進し、より多くのデータ、アナリティクス、AI にアクセスして、既存のアセットの総利益率を伸ばしやすくなります。さらにアプリケーション・モダナイゼーションによって、開発用のアセットを分離し、アプリケーション運用の統合に重点的に取り組むことができます。この手法は、コードのデリバリーと既存のミドルウェアの移行を単純化します。

包括的なアプリケーション・モダナイゼーション・フレームワークとは、アプリケーション・モダナイゼーションのベスト・プラクティス、計画と評価、自動移行、DevOps 手法のすべてが盛り込まれたフレームワークを指します。アプリケーションをマイクロサービスにリファクタリングして Kubernetes によってオーケストレーションするコンテナーなどのテクノロジーを導入することも、ビジネスの迅速化と単純化に役立ちます。アプリケーション・モダナイゼーションの全過程にわたり、IBM はこうした最新テクノロジーを導入できるよう支援し、IBM の専門家たちによって確実に成功へと導くことができます。まずは、IBM Cloud Pak™ for Applications を使用したアプリケーション・モダナイゼーションのリファレンス・アーキテクチャーをご覧ください。

このアーキテクチャーでは、アプリケーション・チームの既存のさまざまなエンタープライズ・アプリケーションが IBM WebSphere® Application Server Network Deployment クラスター内で動作します。アプリケーションの所有者と運用チームは、これらの既存のアプリケーションをモダナイゼーションして、アプリケーション運用を Kubernetes コンテナー・プラットフォームに統合します。アーキテクチャー内で既存のアプリケーションが分析されて、アプリケーションをモダナイゼーションして新しい環境への移行を自動化する方法に関するレコメンデーションが生成されます。生成されたレコメンデーションに基づくアプリケーション・モダナイゼーションによって生まれる新しいアプリケーション・ライフサイクルでは、このアーキテクチャーに統合された開発ツールとベスト・プラクティスを使用してアプリケーションを構築できます。構築されたアプリケーションのデプロイメントは、ロールバックとアップグレードを容易にするために自動化されます。デプロイ後のアプリケーションは、計測機能、モニタリング機能、ロギング機能を備えた統合運用プラットフォーム内で実行されます。

alt

図中のステップ(1)-(6)

  1. アプリケーション開発・運用チームが既存のエンタープライズ・アプリケーションを詳しく検査し、アプリケーション・コンテナーへの移行とモダナイゼーションによってもたらされる影響を分析します。分析の結果、優先順位が高いと判断されたアプリケーションが選択されます。自動化された移行プロセスで、分析によるレコメンデーションに基づき、Liberty コンテナーとして実行するための開発および運用アセットが生成されます。IBM Cloud Transformation Advisor により Dockerfile と構成ファイルが作成され、必要となるソース・コードの変更が識別されます。
  2. 選択された Liberty アプリケーションで Liberty MicroProfile フレームワーク用の IBM 認定コンテナー・イメージを使用します。この次世代の開発環境では、クラウド・プラットフォーム内で実行するアプリケーション・コンテナー・イメージを作成するためにプロジェクト・アクセラレーターとコンテナー・テンプレートが使用されます。
  3. 変更をアプリケーションにコミットすると、継続的ビルド・パイプラインがトリガーされます。このパイプラインにより、アプリケーションがビルドされ、ランタイムとアプリケーションがコンテナー内にパッケージ化されます。さらに DevOps 自動化ツールにより、Liberty アプリケーション・デプロイメントを定義する Kubernetes リソースが更新されます。
  4. Liberty アプリケーションのデプロイメントは、IBM 認定コンテナーに付属の Helm のチャートと Kubernetes の Operator を使用して一貫して自動化されます。
  5. アプリケーションが出力する、Kubernetes クラスターに関するログ情報が収集され集約されます。クラスター内にデプロイされているすべてのアプリケーションにわたり一貫して、ログと指標が収集されます。
  6. IBM 認定コンテナーに付属の事前定義されたダッシュボードでは、Liberty アプリケーションから取得する主要な指標が定義されています。これらの指標は Grafana ダッシュボードで表示されます。クラスター内にデプロイされたすべての Liberty アプリケーションにわたり一貫して、アプリケーションの正常性を管理できます。

図中の各ダイアグラム詳細

  • Transformation Advisor
    アプリケーションの移行を分析して自動化するツール。既存のアプリケーションとミドルウェアをスキャンして分析情報とレコメンデーションを提供し、クラウド・プラットフォームへの移行とデプロイメントを自動化します。
    製品: Transformation Advisor
  • IBM WebSphere Network Deployment
    移行後の Java エンタープライズ・アプリケーションの既存のミドルウェアをプライベート・クラウド上の仮想マシン内で実行します。
    製品: IBM WebSphere® Application Server Network Deployment
  • WebSphere Application Server VM Quickstarter
    既存の WebSphere Application Server アプリケーションを仮想マシンとしてプライベート・クラウド内で実行可能にする、IBM Cloud Private のコンポーネント。クラウド上の VM 内で WebSphere Application Server Network Deployment を実行してデプロイメントを自動化することにより、アプリケーションを効率的に運用できるようにします。
    製品: IBM WebSphere® Application Server VM Quickstarter
  • Liberty と MicroProfile
    MicroProfile は、マイクロサービス・アーキテクチャー内でのアプリケーション開発用に最適化された Java Enterprise フレームワークを提供します。Open Liberty は MicroProfile 用のオープンソース・ランタイムです。Liberty は IBM がサポートしているランタイムであり、IBM Cloud Pak for Applications 内で利用できます。
    製品: IBM WebSphere® Liberty, Open Liberty, Eclipse MicroProfile
  • Spring
    軽量のクラウド・アプリケーションを構築するための Java ランタイム・フレームワーク。
    製品: Spring
  • オープンソース
    クラウド・アプリケーションを作成するには、さまざまなオープンソース・フレームワークを使用できます。アプリケーション・ランタイムをコンテナー化するマイクロサービス・アーキテクチャーを使用することで、開発チームがコンポーネントの目的に応じて最適なフレームワークを選択できます。
    製品: Node.js, Python, Swift, Knative
  • アクセラレーター
    各種のフレームワークとランタイムに対応するプロジェクト・テンプレートにより、新しいマイクロサービス・アプリケーションの作成にかかる時間を短縮できます。
    製品: IBM Cloud™ Pak for Applications, Kabanero
  • 自己主張型コンテナー・テンプレート
    コンテナー・イメージの構成について標準的な定義があると、開発者の作業が効率化され、一貫した形で運用を管理できます。さらに、開発者が一貫した一連のツールとプラットフォームを使用することで、オペレーターは 1 つに統合された共通のツール一式に重点を置けるようになります。
    製品: IBM Cloud™ Pak for Applications, Kabanero
  • アプリケーション・コンテナー・イメージ
    アプリケーション開発の成果物は、一度構築すれば複数のプラットフォーム環境にデプロイできるコンテナーです。コンテナーはアプリケーション・ランタイムとアプリケーション・バイナリーを標準的な形式に結合し、クラウド・プラットフォーム内でイメージとして実行できるようにします。
    製品: IBM Cloud™ Pak for Applications, Open Container Initiative
  • 統合開発環境 (IDE)
    独自の開発ツールを持ち込むことも、アプリケーションとクラウド・プラットフォームに対応する複数のサービスを統合した IDE を使用することもできます。
    製品: IBM Cloud™ Pak for Applications, Eclipse Che, Visual Studio Code, Eclipse
  • Open Liberty
    MicroProfile 用のオープンソース・ランタイムです。MicroProfile は、マイクロサービス・アーキテクチャー内でのアプリケーション開発用に最適化された Java Enterprise フレームワークを提供します。
    製品: Open Liberty
  • Liberty
    IBM でサポートされる、MicroProfile 用のランタイムです。MicroProfile は、マイクロサービス・アーキテクチャー内でのアプリケーション開発用に最適化された Java Enterprise フレームワークを提供します。
    製品: IBM WebSphere® Liberty, IBM Cloud Pak™ for Applications
  • WebSphere
    アプリケーション・コンテナー内の J2EE アプリケーション・ランタイム。このランタイムを使用すると、アプリケーション・コードを大幅に変更することなく、WebSphere Application Server アプリケーションをコンテナー・プラットフォーム内で実行できます。コンテナーとしての WebSphere は、同じくコンテナーとして実行される他のクラウド・ネイティブ・アプリケーションとの運用上の整合性を確保します。
    製品: IBM WebSphere®, IBM Cloud™ Pak for Applications
  • Spring Boot
    Spring Boot は、クラウド・ネイティブ・アプリケーションを構築するための軽量の Java ベースのフレームワークです。マイクロサービスと Web ベースのアプリケーションを構成して実行するために使用できます。
    製品: Spring Boot
  • オープンソース
    クラウド・アプリケーションを作成するには、さまざまなオープンソース・フレームワークを使用できます。アプリケーション・ランタイムをコンテナー化するマイクロサービス・アーキテクチャーを使用することで、開発チームがコンポーネントの目的に応じて最適なフレームワークを選択できます。
    製品: Node.js, Python, Swift, Knative
  • チャート
    コンテナー・イメージのインストールとデプロイメントは Helm のチャートを使用して自動化されます。チャートは一連の Kubernetes リソースとそれぞれのリソースに対応するデプロイ時の構成を定義します。
    製品: IBM Cloud™ Pak for Applications, Helm
  • Operator
    Operator は、Kubernetes クラスター内にデプロイする時点でのコンテナー・イメージのパッケージング、インストール、ライフサイクルを自動化します。
    製品: IBM Cloud™ Pak for Applications, Operator Hub
  • セキュリティー
    コンテナー・イメージを詳しく検査して脆弱性の有無を確認してください。また、すべてのコンテナー・イメージには共通のセキュリティー手法を適用する必要があります。
    製品: IBM Cloud™ Pak for Applications
  • ダッシュボード
    デプロイ後のアプリケーションのモニタリングおよび運用に使用する一連のダッシュボード。
    製品: IBM Cloud™ Pak for Applications, Grafana
  • デプロイメント自動化
    Kubernetes はアプリケーションのデプロイメントを管理し、Helm チャートと Operator を使用して、必要に応じてアプリケーション・コンテナーのデプロイメントを自動化します。
    製品: IBM Cloud™ Pak for Applications, Helm, Operator Hub
  • デプロイメント・オーケストレーション
    Kubernetes はコンテナー・プラットフォームとして、アプリケーション・コンテナー・イメージを格納するポッドのデプロイメントをオーケストレーションします。オーケストレーションによって、十分な数のアプリケーションのインスタンスが確保されます。また、正常に動作していないアプリケーション・コンテナーはオーケストレーションによって再起動されるため、可用性と復元力が維持されます。
    製品: IBM Cloud™ Pak for Applications, Kubernetes
  • アップグレードとロールバック
    コンテナー・プラットフォームは、アプリケーションの可用性を維持しつつデプロイメントがアップグレードされるように、新しいアプリケーション・コンテナーのデプロイメントを自動化します。新しいデプロイメントを元に戻す必要がある場合も、自動化により、アプリケーションがコンテナー・イメージの前のバージョンに復元されます。
    製品: IBM Cloud™ Pak for Applications, Kubernetes
  • アプリケーション・コンテナー
    アプリケーション・コンテナーのイメージは、Kubernetes ポッド内にデプロイされて実行されます。クラスター内のワーカー・ノード上のコンテナーのライフサイクルは、ポッドによってオーケストレーションされます。
    製品: IBM Cloud™ Pak for Applications, Open Container Initiative
  • 運用統合
    整合性を確保したアプリケーション管理プラットフォームを実現するために、実行中のアプリケーションの運用を統合します。このようなプラットフォームではすべてのアプリケーションでログと指標が画一的に収集されて、アプリケーションのデプロイメントが自動化されるため、アプリケーション運用が単純化されます。
    製品: IBM Cloud™ Pak for Applications
  • ロギング
    クラウド・コンテナー・プラットフォームは実行中のすべてのコンテナーからログの出力を収集して集約します。運用データの検索と視覚化を可能にするために、ログ・データにはインデックスが付けられます。
    製品: IBM Cloud™ Pak for Applications, ELK – Elasticsearch, Logstash, and Kibana
  • モニタリング
    クラウド・コンテナー・プラットフォームは実行中のコンテナーからアプリケーション指標を収集して保管します。収集された指標データは、運用データの視覚化に利用できます。
    製品: IBM Cloud™ Pak for Applications, ELK – Elasticsearch, Logstash, and Kibana
  • 計測
    クラウド・コンテナー・プラットフォームは実行中のアプリケーションの使用状況について、きめ細かく細分化された計測値を収集し、報告します。計測された指標は、払い戻し、詳細な監査、分析に使用できます。
    製品: IBM Cloud™ Pak for Applications
  • Red Hat OpenShift Container Platform
    Kubernetes などのオープンソース・プロジェクトをベースに構築されたクラウド・コンテナー・プラットフォーム。このスケーラブルで信頼できるクラウド・プラットフォームは、オンプレミス・インフラストラクチャー上で実行することも、パブリック・クラウド内のリソースを使用して実行することもできます。
    製品: Red Hat OpenShift Container Platform

非機能要件

アプリケーション・モダナイゼーション・アーキテクチャーは、以下の非機能要件を満たす必要があります。

セキュリティー

アプリケーションをモダナイゼーションするときに、アプリケーション、データ、インフラストラクチャーが確実に保護されるようにするには、セキュリティーが不可欠の側面となります。DevSecOps プロセスにセキュリティーを組み込んで、エンジニアリング・チームが常にセキュティーに関する問題を管理できるようにしてください。DevOps パイプラインの一環として、コンテナー・イメージを検査して脆弱性の有無を確認する必用もあります。

プラットフォームで使用可能にされている共通のセキュリティー手法に従います。このプラットフォームは、アイデンティティーとアクセス権の管理手法を確立し、クラウド・インフラストラクチャーにアクセスする開発者とオペレーターに常にアクセス権と権限を適用します。アプリケーションごとに、クラウド内のすべてのアプリケーションのユーザーに適用する、適切なアイデンティティーおよびアクセス管理を定義する必要があります。それに加え、このプラットフォームでは他のセキュリティー手法も一貫した方法で対処できます。クラウド・プラットフォームでの処理は継続的にモニタリングできるため、クラウド・プラットフォーム上のすべてのアプリケーションにわたって常に可視性を確保できます。

サービスの管理と復元力

アプリケーション・モダナイゼーション・アーキテクチャーがターゲットとするクラウド・プラットフォームは、従来型、最新型、クラウド・ネイティブのワークロードを含め、さまざまなワークロードをサポートします。これらのワークロードをすべて一貫した方法でパッケージ化、デプロイ、管理できるようにする必要があります。

ワークロードを有効にする最初のフェーズは、運用の点でアプリケーションをモダナイゼーションすることです。クラウド・ネイティブのマイクロサービスから取得したか、コンテナー化された従来のアプリケーションから取得したかを問わず、ログ、指標、イベントを一貫した方法で管理します。この一貫性こそが、運用チームが依存するサービス管理アーキテクチャーをより良いものにします。さらに、基礎となるインフラストラクチャーでは、アプリケーションが常にプローブを宣言して、そのライブネスとレディネスを検証できるようにします。Helm のチャートと Kubernetes の Operator は、アプリケーション・デプロイメントを一貫した、かつ自動化されたものに変えるためのアセットを提供します。

モダナイゼーションに取り組む中で、GitOps とコードとしてのインフラストラクチャーを使用可能にする必要があります。これらの手法は、全体的な生産性を向上させ、開発者とデプロイ済みアプリケーションを管理するオペレーターとの間のコラボレーションを促進します。

多くのアプリケーションでの主な目標は、システムの可用性と復元力を向上させることです。クラウド・インフラストラクチャーは、アプリケーションのスケーリングをサポートして負荷の増加に対処し、障害が発生したアプリケーション・デプロイメントを再起動して復元できるよう支援します。可用性と復元力の向上という目標を達成できる形でアプリケーションがこれらのサービスとやり取りする方法を考えてください。また、単一障害点をすべて排除し、アプリケーションの正常性と障害を特定するための指標とプローブを用意してください。

DevOps

アプリケーション・モダナイゼーションのプロセスは、アプリケーション・テクノロジーに影響するだけでなく、インフラストラクチャー、開発プロセス全体、組織の文化にも影響を及ぼします。アプリケーション・モダナイゼーションに投資する際は、最新のクラウド・ネイティブ手法をより有効に活用するために、DevOps の原則を評価してソフトウェア・デリバリーに適用する必要があります。

アプリケーション・ワークロードに常に変更が適用されるようにするには、アプリケーションとインフラストラクチャーで DevOps パイプラインで自動化された継続的デリバリーをサポートすることが必須です。この仕組みを実現すれば、関連するクラスターに変更を加えることなく、アプリケーション・ワークロードを開発環境、テスト環境、または本番環境にデプロイできます。アプリケーション・ワークロードは、他のクラウド・インフラストラクチャー・プロバイダー内で実行されているクラスターにもデプロイできます。

開発者は、プロジェクトの作成から開発環境内での新しい変更のデプロイに至るまで、自身が行うさまざまな開発アクティビティーを自己管理できるようでなければなりません。開発者がプロジェクトを作成して、承認されたテクノロジーを使用できるよう、プロジェクト全体で開発者用のツールを統一してクラウド・プラットフォームに統合する必要があります。