Skip to Content
ガイド

モダン・アプリとは? 決定版ガイド

モダン・アプリケーションは、コンテナなどのクラウドネイティブ技術とアジャイル開発や DevOps のベストプラクティスを活用し、大規模な環境においても移植性、信頼性、俊敏性を実現します。

コンテナとは

※このページの内容が日本語である場合は、機械翻訳システムで翻訳したものです。

モダン・アプリケーションとは、最新の技術、開発方法、ベストプラクティスを使用して構築・展開されるあらゆるアプリケーションであり、最適なユーザーエクスペリエンスを提供します。モダン・アプリケーションは、クラウドネイティブです。これらは、緊密に結合されたモノリシック・アプリケーションとは対照的に、API を介して相互に通信するマイクロサービスとして設計されています。これらのマイクロサービスベースのアプリケーションは、通常、コンテナや Kubernetes などのクラウドネイティブ技術を活用します。

モダン・アプリケーションは、俊敏性、スケーラビリティ、移植性、信頼性を念頭に構築されています。

モノリシックではなく、マイクロサービスであるため、拡張性、再利用性、使いやすさに優れています。

多くの場合、アジャイル開発手法と DevOps のベストプラクティスに従って構築されており、継続的インテグレーションとデリバリー(CI/CD)パイプライン全体の自動化に重点を置いています。

では、現在のテクノロジーにおいて、具体的にどのようなものになるのでしょうか? このガイドでは、アプリをモダンにするさまざまな特徴について詳しく見ていきます。

詳しく見る:モダン・アプリケーション開発をわかりやすく解説

関連リソース

ナレッジ記事
モダン・アプリケーションが総所有コストを削減する仕組み

コンテナのメリット

従来のアプリケーション開発では、アプリケーションは単一の緊密に統合されたコードベースで構築されています。一方、マイクロサービス・アーキテクチャでは、アプリケーションを疎結合なサービスの集合体として設計します。

この開発アプローチには、多くのメリットがあります。

  • テスト可能なコード
  • デバッグ、保守、更新が容易
  • ストレージとコンピューティング・リソースのプロビジョニングをきめ細かく制御
  • 障害の分離性が向上し、よりレジリエントなアプリケーションを実現
  • ポータブルで独立してデプロイが可能:コンテナなどの仮想化技術により、コンポーネントをソフトウェアやハードウェア環境から切り離すことができます。

独自にデプロイ可能なモジュラー・サービスのコレクションを扱うため、他のサービスを中断することなく、1 つのサービスで作業することができます。また、サービス・バイ・サービス・レベルでの構築、テスト、展開、保守、アップグレードを行う機能により、開発時間を大幅に削減できます。

コンテナを利用するメリット

マイクロサービス・アーキテクチャにより、開発者はコンテナや仮想マシンなどの仮想化技術の可能性を最大限に引き出すことができます。これらのコア仮想化技術のいくつかを見てみましょう。

  • 仮想マシン(VM):ハードウェア・レベル(OS やハードウェアを含む)で仮想化を可能にします。ハイパーバイザにより、単一のサーバーで異なる OS の依存関係を持つ複数のアプリケーションを実行できます。
  • コンテナ:ソフトウェア・レベルで仮想化を有効にします(ホスト OS カーネルに依存します)。サービスを実行するには、バイナリ、ライブラリ、設定ファイルなど、必要なコードと依存関係を全て含む標準化されたソフトウェア・ユニットが必要です。
  • 仮想ボリューム(vVols):vVols は、分離されたデータ・ストアです。コンテナ化されたアプリケーションは、コンテナ化されたストレージから大きなメリットを得られます。vVols は、コンテナ化されたマイクロサービスと 1 対 1 でマッピングが可能で、中央データベースのボトルネックを防ぎます。

仮想化は、マイクロサービスに与える分離の程度をきめ細かくすることで、モダン・アプリケーション開発のためのマイクロサービス・アーキテクチャのメリットを高めるのに役立ちます。

仮想マシンを活用することで、同じマシン上で異なる OS 依存性を持つサービスを実行できます。また、コンテナや vVols を使用することで、単一のマシンで実行できるサービスを大幅に増やすこともできます。

最も重要なことは、仮想化により、マイクロサービスとそのリソースのプロビジョニングとデプロイをオンデマンドで自動的に拡張することが容易になることです。

仮想マシンとコンテナのトレードオフについて詳しくは、こちらをご覧ください。

コンテナとデータ・ストレージ

ステートレス・コンテナとサーバーレス・アーキテクチャをペアにする理由を理解するには、いくつかの用語を定義する必要があります。

  • ステートレス:アプリケーションが、ある実行から次の実行までの間に状態に関する情報を読み取らない、または保存しない場合、ステートレスであるといえます(例えば、計算アプリケーションを再度開くとゼロの読み取りになり、最後に計算が実行された時の記憶はありません)。
  • サーバーレス:開発者がクラウド・プロバイダなどのサードパーティにサーバー・リソースの管理を委ね、サーバー管理の詳細を意識することなく利用できる場合、そのアプリケーションはサーバーレスであるといえます。

設計上、初期のコンテナはステートレスでした。必要なときに起動し、処理を実行して消滅することで、アプリケーションの他の部分にリソースを解放できたからです。同様に、モダン・アプリケーションもコンテナをシンプルに保ち、必要に応じて機動させることができます。

サーバーレス・アーキテクチャと組み合わせることで、アプリケーション開発者は、基盤となるインフラ自体を管理することなく、リソースをオンデマンドでプロビジョニングする機能を呼び出すことができます。ステートレス・コンテナとサーバーレス・アーキテクチャを組み合わせることで、スケーラブルなアプリケーションの開発が大幅に簡素化されます。これは、エッジ・デバイスがイベントに応じて常にデータをストリーミングするエッジ・コンピューティング環境に最適です。ステートレス/サーバーレスの組み合わせにより、アプリケーションはリアルタイムの情報に応じてその場で容易に調整できます。

しかし、アプリケーションが複雑であればあるほど、コンテナ化されたマイクロサービスに永続ストレージが必要になる可能性が高くなります。このため、Portworx のようなコンテナ・データ・ストレージ・ソリューションは、ステートフルなコンテナ化アプリケーションへの永続ストレージの提供を簡素化します。アジャイルなデータ・ストアを 1 対 1 でマッピングすることで、スケーラビリティを向上させ、アプリケーションの実行中も状態を保持することが可能になります。

コンテナ・オーケストレーションとコンテナ管理とは

モダン・アプリケーションは、クラウドネイティブなアプリケーションです。サポートに必要な基盤となるインフラと密接に連携することで、Amazon Web Services (AWS)、Google Cloud、Microsoft Azure などのクラウド・エコシステムのメリットを享受できます。

では、クラウドネイティブなアプリケーションとは、どのような意味を持つのでしょうか。マイクロサービス・アーキテクチャと仮想化技術、サーバーレス・コンピューティングの組み合わせにより、ユーザーの需要に応じて、モダン・アプリケーションを動的にプロビジョニングできます。これらのマイクロサービスは、サービス・レイヤーで管理される API を介して独立して通信できます。

クラウドネイティブ・アプリケーションは、SaaS(ソフトウェア・アズ・ア・サービス)、PaaS(プラットフォーム・アズ・ア・サービス)、IaaS(インフラ・アズ・ア・サービス)などのクラウド・コンピューティングのデプロイ・モデルを最大限に活用します。これらのモデルは、利用するかどうかにかかわらず一定額を支払う従来の CAPEX(設備投資)型の支払いモデルに代わり、使用した分だけ支払う OPEX(運用経費)型の支払いモデルを採用しています。

クラウドネイティブとは何か、詳しく見る

Docker とは

モダン・アプリケーションとレガシー・アプリケーションの違いは、開発とデプロイメントの考え方にあります。

従来のアプリケーション開発手法では、最初に一連の直線的な全体計画を立て、それに従って進めます。開発は要件定義から始まり、明確に区分された各フェーズを経て、アプリケーション全体を本番環境にデプロイするまで順に進みます。開発者、オペレーター、ステークホルダー、エンドユーザー間のコミュニケーションは、長期化するソフトウェア開発のライフサイクル(SDLC)によって制約されます。コードベースはモノリシックで、パッチは大きくなり、バグ修正の展開、新機能の追加、基盤となる技術の更新を試みると、サービスの長期的な中断や予期しない副作用が発生しやすくなり、トラブルシューティングが困難になります。

では、モダン・アプリケーションでのソリューションは? アジャイル開発と DevOps のベストプラクティスを取り入れ、モノリシックなシステムからマイクロサービスへ移行することです。

アジャイル開発は、ソフトウェア開発に反復的なアプローチをとっています。マイクロサービスと組み合わせることで、開発者は複数の設計反復にわたって機能の構築、テスト、展開を段階的に行うことができます。SDLC は厳密に管理されており、エンドユーザー、ステークホルダー、開発者間のコミュニケーションのフィードバック・ループをより緊密にします。アジャイル開発手法には、スクラム、エクストリーム・プログラミング(XP)、テスト駆動型開発(TDD)などがあります。

DevOps は、開発者と運用チームを組織内で緊密に統合するソフトウェア開発の実践と文化です。SDLC は、構成管理、自動化、リアルタイム監視を使用してソフトウェアの開発、テスト、展開を合理化する CI/CD パイプラインとして再考されています。

モダン・アプリケーションは、常に可用性と性能が期待されています。モノリシックなパッチ、アップデート、バグによってサービスが中断するわけにはいきません。このため、モダン・アプリケーションは、アジャイル開発手法と DevOps のベストプラクティスを活用して、急速に変化するデジタル環境において常に最新の状態に保ち、競争力を維持します。

モダン・アプリケーションが市場投入までの時間を短縮する方法について詳しくは、こちらをご覧ください。

Kubernetes とは

デジタル化が進む世界では、データ保護が最重要課題となっています。モダン・アプリケーションには、次のようなデータ保護のメリットがあります。

  • コードの分離:ハッカーがシステム全体を侵害することが困難です。
  • モジュール型アーキテクチャ:SDLC 全体でより綿密で段階的なセキュリティ・テストを実施できます。
  • CI/CD パイプライン:開発者とユーザー間のフィードバック・ループを厳格にし、開発者が脆弱性を即座にパッチできます。
  • ディザスタ・リカバリの合理化:アプリケーション全体の中断を最小限に抑えながら、マイクロサービスを個別にバックアップ/リストアできます。
  • DevSecOps などの強化されたセキュリティのベストプラクティス

モダン・アプリケーションは、現代のセキュリティの脅威に対処できます。開発サイクルとコミュニケーション・フィードバック・ループの厳格化により、開発者はバグや脆弱性を悪用される前に特定し、対処することができます。

詳しく見る:モダン・アプリケーションのデータ保護のメリット

こちらの資料もご覧ください!

11/2020
VMware Hybrid Cloud Solution Brief | Solution Brief
Hybrid cloud and container adoption are growing rapidly. Advance to an effortless, optimized VMware environment.
ソリューションの概要
3 pages

関連リソースとイベント

動画
動画:エンタープライズ・データ・クラウドのメリット

会長兼 CEO のチャーリー・ジャンカルロが、ストレージ管理からデータ管理へのシフトこそが未来である理由を解説します。統合により、エンタープライズ IT の運用管理がいかに変わるかがわかります。

視聴する
リソース
従来のストレージは未来を支えません。

近代的なワークロードには、AI 対応の高速性、セキュリティ、拡張性が求められます。スタックの準備はできていますか?

現行のサイバー対策を評価する
Pure360 デモ
ピュア・ストレージを探索、体験、学習できます。

ピュア・ストレージの製品や機能をご紹介するオンデマンド動画/デモ付き動画をご用意しています。是非ご利用ください!

デモ動画を見る
ソート・リーダーシップ
イノベーション競争

ストレージ技術革新の最前線に立つ業界リーダーによる最新のインサイトと展望。

詳しく見る
このブラウザは現在サポートされていません。

古いブラウザには、セキュリティ・リスクが存在する場合があります。ピュア・ストレージの Web サイトをより快適にご利用いただけるよう、最新のブラウザにアップデートしてください。