今日のソフトウェア・アプリケーションは、何百万人ものグローバル・ユーザーをオンデマンドで処理し、複数のプラットフォームや環境で実行する必要があります。また、高可用性を提供し、増大するサイバーセキュリティの脅威に耐える必要があります。また、市場環境の変化に対応するイノベーションの実現も必要です。
モダン・アプリケーションは、スケーラビリティ、俊敏性、移植性、耐障害性を重視して構築されています。これにより、従来のアプリケーションよりもはるかに高速なペースでアイデアを試し、実現できます。
モダン・アプリケーション開発では、アジャイルな配信方法、DevOps、モジュラー・アーキテクチャ、統合セキュリティ、クラウド・インフラストラクチャを使用して、開発チームがセキュアなアプリケーションを高速な開発サイクルでリリースできるようにします。
従来のアプローチとの違いなど、モダン・アプリケーション開発について知っておくべきことをご紹介します。
モダン・アプリケーションとレガシー・アプリケーションの比較
従来のアプリケーションは、通常、1 層のソフトウェア・アプリケーションとして緊密に統合されたアーキテクチャ上に構築され、すべてのコンポーネントが 1 つのプラットフォームに組み込まれています。アプリケーションの要素間の明確な分離はありません。更新には新しいリリースが必要で、アプリケーションの 1 つのコンポーネントにバグが発生すると、アプリケーション全体に影響します。従来のアプリケーションは通常、物理ハードウェア上で開発・インストールされるため、コストがかかり、保守も必要になります。
一方、モダン・アプリケーションでは、コンポーネントを個別に開発できるマイクロサービスの形でモジュラーアーキテクチャを使用しています。個々のチームを単一のマイクロサービスに割り当てることができます。単一のマイクロサービスは、特定の機能に最適な開発言語、データベース、ライブラリを使用して構築されます。マイクロサービスは、アプリケーションの他の側面に影響を与えることなく、個別にリリースおよび更新されます。この開発モデルは、リリースの高速化とアプリケーションのダウンタイムの削減を可能にします。
モダン・アプリケーション開発の基本要素
モダン・アプリケーションは、さまざまなユースケース向けに構築されていますが、同じ基本原則に基づいています。モダン・アプリケーション開発の基礎となる要素をいくつか見てみましょう。
アジャイル・プラクティスとの連携を強化
従来の開発アプローチでは、プロセスの最初に要件の収集が行われます。プロジェクトの最終段階まで、開発者とユーザー間のやり取りはほとんどありません。
一方、アジャイルな開発プロセスでは、設計、開発、展開の反復が頻繁かつ段階的に行われます。これにより、要件の変化に迅速に対応できます。開発・運用チーム、ビジネス関係者、ユーザーは、継続的なフィードバックを提供できる統合コラボレーション環境で働くことができます。
俊敏な環境での継続的なコラボレーションは、チームがアイデアやソリューションを共有することを奨励します。これにより、開発段階を経るにつれて、問題解決が迅速になり、プロジェクトの目的が明確になります。
DevOps 対応
DevOps は、開発チームと IT 運用チームのタスクを統合し、アプリケーション開発のライフサイクルを短縮するソフトウェア開発の実践と文化です。DevOps には、アジャイルで反復的なソフトウェア開発プラクティス、自動化、開発チームと運用チーム間の信頼と結束の文化の採用が含まれます。
DevOps環境には、自動化された継続的な統合と継続な提供/展開(CI/CD)ツール、リアルタイム監視、インシデントと構成の管理、マイクロサービスやコンテナのサポートのためのクラウド・コンピューティングが含まれます。
開発チームは、提供されるソフトウェアが堅牢でエラーがないことを保証します。継続的なリリース・サイクルで運用チームと連携します。運用チームは、開発者がイノベーションと迅速なアプリケーション開発プロセスをサポートする作業環境を確保します。
DevOps は、チーム間のサイロを解消し、効率性を高めます。DevOps は自動化ツールを統合し、開発環境の構築、テスト、構成、展開、監視を管理します。これにより、問題の追跡、診断、修正を可能な限り迅速に行うことができます。
自動化
モダン・アプリケーションは自動化に大きく依存しています。実際、CI/CD、継続的テスト、アプリケーション・パフォーマンス監視、セキュリティ監視などのプロセスはすべて自動化されています。
自動化は、コード・チェックインのトリガーやプロセスの構築、コード機能、品質、カバレッジ、セキュリティのテストの実行、ステージング環境や実稼働環境にアプリケーションを自動的に展開するために使用できます。
ツールは、マシンのプロビジョニング、仮想サーバーのスピンアップ、ネットワークとファイアウォールの構成、パフォーマンスとセキュリティのためのアプリケーションの監視などの運用活動を含む、配信パイプラインのエンドツーエンドの自動化をサポートするために使用されます。
その結果、自動化により、モダン・アプリケーションの開発において、一貫性、スピード、より高い精度と信頼性を実現します。
継続的な統合と継続な展開(CI/CD)
モダン・アプリケーション開発において、CI/CD は、小規模なコード増分を迅速にテストおよびリリースするためのパイプラインを作成します。小規模なコード・リリースを複数提供でき、欠陥も少なくなります。対照的に、従来のアプリケーション開発では、チームは通常、1 年に 1 つか 2 つのコード・リリースしか提供しません。
アプリケーション・コードの変更は、中央リポジトリに統合され、自動化されたビルド・プロセスがトリガーされます。ビルド・プロセスでは、検証および統合テストも実行され、開発者は開発プロセスの早い段階でバグや統合の問題を検出して解決できます。
継続的な展開は、継続的な統合に続きます。コードの変更は、テスト環境と実稼働環境に展開されます。CI/CD により、開発チームは、コードが開発チェーン内を移動する際に、コードが安定しており、エラーがないことを前提に運用することができます。
マイクロサービス、API、Containersの使用
モダン・アプリケーションは、マイクロサービス、標準化されたアプリケーション・プログラミング・インターフェイス(API)、コンテナを含むフレームワーク上に構築されています。
マイクロサービスは、アプリケーションを個別に展開できる、疎結合された独立したサービスに分割します。このモジュラー・アーキテクチャにより、開発者は他のサービスを中断することなくアプリケーションの拡張や更新を行うことができます。
モダン・アプリケーションでは、マイクロサービスやデータベースを1対1でマッピングすることで、デカップリングされたデータストアを使用します。これは、各マイクロサービスが独自の専用データベースを使用できることを意味します。これにより、中央データベースのボトルネック(従来のモノリシック開発で見られる問題)を防ぐことができます。
API は、マイクロサービスやり取りするためのゲートウェイとして使用されます。これらは HTTPS 経由で利用可能で、マイクロサービスのデータと機能へのアクセスを提供します。API は、既存のコードの再利用をサポートし、開発の手間とアプリケーションの負担を軽減します。
コンテナは、マイクロサービスをサポートする環境を提供する小型ソフトウェアパッケージです。コード、ランタイム、システム・ツール、ライブラリ、依存関係など、マイクロサービスに必要なものがすべて含まれています。コンテナ、マイクロサービスを周囲の環境から分離し、 環境(開発やステージングなど)全体で一貫した性能を確保します。
クラウド・アーキテクチャを使用して開発
モダン・アプリケーション開発では、クラウド技術を使用して、基盤となるハードウェアからアプリケーションを抽象化します。クラウドは、仮想化、サーバーレス技術、サービスとしてのソフトウェア(SaaS)、サービスとしてのプラットフォーム(PaaS)、サービスとしてのインフラストラクチャ(IaaS)などのサービスとしてのソリューションをサポートしています。これらのソリューションは、スケーラブルなインフラストラクチャを提供し、物理ハードウェアで開発環境を設定する必要がなくなります。
クラウドベースのサービスは、サーバー、ネットワーク・インフラストラクチャ、ストレージ、CPU、メモリなど、モダン・アプリケーション開発のための仮想リソースをプロビジョニングできます。プロジェクト資産とリソースをクラウドに保存することで、最新のアプリケーション開発プロセスにより、チームとステークホルダー間のコラボレーションが向上します。
モダン・アプリケーションは、パブリック、プライベート、ハイブリッド、マルチクラウドなど、複数のクラウド環境で実行できます。これにより、複数のクラウド・プロバイダを柔軟に利用し、必要に応じて環境を組み合わせることができます。
DevSecOps
DevSecOps は DevOps プロセスを拡張し、しばしば"シフト・レフト・セキュリティ" と呼ばれます。 このアプローチは、開発プロセスの早い段階でセキュリティを組み込むことをめざしており、アプリケーションの設計に不可欠な要素となっています。そのため、セキュリティはもはやセキュリティ・チームの単独の責任ではありません。
DevSecOps は、ソフトウェア・デリバリー・パイプラインを通じて強化された自動化を導入し、セキュリティ攻撃の可能性を高める脆弱性を排除します。セキュリティは、コード・リポジトリ、ビルド管理プログラム、展開ツールなどのツールを使用して開発プロセスに統合されます。セキュリティ管理とプロセスは、開発パイプラインと、パイプラインを通じてリリースされるソフトウェアの両方に適用されます。
DevSecOps は、アプリケーション開発チームが、従来の開発サイクルの最後に発生するテストや問題解決プロセスによって生じる遅延を回避できるよう支援します。セキュリティをモダン・アプリケーション開発に組み込むことで、セキュリティを犠牲にすることなく、ソフトウェアをより迅速にリリースできます。
ピュア・ストレージの DevOps ソリューションがモダン・アプリケーション開発をサポート
モダン・アプリケーションは、イノベーションを促進し、市場投入までの時間を短縮し、総所有コストを削減し、アプリケーション・セキュリティを向上させます。ピュア・ストレージ DevOps ソリューションは、次のようなメリットをもたらします。
- セルフサービスの開発環境によりCI/CD パイプラインを加速し、市場投入までの時間を短縮します。
- セルフサービスの開発環境とコンテナベースの PaaS により、コーディングを高速化します。
- インフラ・アズ・コード(IaC)で自動化され、反復可能なプロセスを構築し、継続提供を可能にします。
ピュア・ストレージの DevOps ソリューションが、CI/CD パイプラインとモダン・アプリケーション開発の実践をサポートすることで、企業の競争優位性をどのように向上させるか、詳細をご覧ください。