クラウドでアプリのパフォーマンスを最適化する 5 つの原則

クラウドでアプリのパフォーマンスを最適化 

私たちが暮らすこの急速に変化する世界では、遅いことは受け入れられなくなっており、スピードと俊敏性は、引き続きエンタープライズ クラウド導入の主な動機の 1 つです。 しかし、アプリのパフォーマンスを向上させ、セキュリティを確保しながらアプリの展開を加速する任務を負っている DevOps 実践者として、クラウドの速度低下を克服するためにシステムとプロセスを最新化するには何が必要ですか? いくつか提案があります。

1. インフラストラクチャ・アズ・コードはあなたの味方です

99% の場合、「手動」という言葉は無気力と予測不可能性の両方と同義である可能性があります。速度と信頼性を追求する場合、自動化から始めるのが良いことにほとんどの人が同意するでしょう。 アプリをスケールアウトするために追加のクラウド リソースを起動する場合でも、重要なアプリ サービスを展開して構成する場合でも、API 呼び出しを実行したり、コンソールで 1、2 回クリックしたりするのと同じくらい簡単に実行できる必要があります。 ここでの成功の鍵は、インフラストラクチャ・アズ・コード (IaC) を活用することです。 インフラストラクチャ/NetOps/SecOps の担当者と協力して、展開内容と展開方法を詳細に記述した検証済みの定義ファイルを作成することで、インフラストラクチャとサービスを高速かつ繰り返し可能で信頼性の高い方法でプロビジョニングできるようになります。

このテンプレート化されたアプローチをセルフサービス展開に活用することで、最終的には他のチームへの依存度が下がり、手動のインフラストラクチャ プロビジョニングに対するチケットベースのリクエストによって発生する展開のボトルネックを防ぐことができます。

2. CI/CD パイプラインを最大限に活用する

Infrastructure-as-Code は、デプロイメントを高速化しようとする場合に正しい方向への一歩となりますが、完全な CI/CD パイプラインの価値を活用することで、さらに多くのメリットが得られます。 新しいアプリケーション コードをより頻繁に統合し、それらの更新を自動的に本番環境にプッシュする機能に加えて、アプリ サービスの挿入をパイプラインに統合することもできることをご存知でしたか? これらのサービスをコード (IaC) として定義し、定期的に監視、更新、検証できるソース管理ツール内に保存することで、CI/CD ツール (Ansible や GitLab など) は API 呼び出しを介してこれらのサービスを自動的にデプロイメントに取り込むことができます。 そうすることで、展開を遅らせることなく、すべてのアプリが適切なセキュリティとコンプライアンスの制御を備えてリリースされることが保証されます。

3. コンテナを導入しましょう…ただし安全に実施しましょう

アプリケーション全体に必要なコード、ライブラリ、バイナリを、プラットフォーム間で迅速かつ一貫して展開できる軽量パッケージにバンドルする機能は、最近のコンテナ採用の急増の基盤となっています。 これらの特性は、クラウドでの速度を最適化する際に有利であり、アプリを即座に起動およびスケールアウトし、CI/CD プロセスを加速し、高度に動的で管理しやすいマイクロサービス アーキテクチャを構築する機能を提供します。

こうした誇大宣伝はさておき、速度の追求に夢中になりすぎて、アプリケーション ポートフォリオの他の部分と同じ (またはそれ以上の) レベルのセキュリティとアプリ パフォーマンスの最適化を必要とするアプリがまだあることを忘れてしまうのは、非常に簡単なことです。 残念ながら、既存のアプリ サービスをコンテナの固有のニーズに合わせて改造しようとしても、成功する可能性は限られます。 代わりに、コンテナを真にサポートし、望ましくない停止やセキュリティ/コンプライアンスの問題を回避するには、コンテナ オーケストレーション システムと統合する、より動的なサービス セットを特定する必要があります。

4. 知識の可視性は力なり

アプリをすぐに起動して実行することは重要です。 それらをそこに維持し、ユーザーが利用できるようにすることは、まったく別の課題です。 アプリケーションの運用開始後は、ネットワークの中断、プラットフォームの問題、サイバー攻撃、コードのバグなど、アプリケーションの健全性に対する脅威が無数に存在します。 このため、単一のアプリケーション停止のトラブルシューティング作業は、干し草の山から針を探すような作業のように感じられることがよくありますが、異なるクラウド環境間で複数のアプリケーション障害が同時に発生した場合の規模を考えてみてください。 どこから始めますか?

このシナリオでは、可視性は知識の前段階であり、アプリの問題の解決策を探すときに非常に貴重になります。 アプリケーション スタックの各レイヤーの可視性が高まるほど、運用上の異常や根本原因を特定する能力が高まります。 そのためには、マルチクラウド アーキテクチャ全体でアプリの問題をより迅速に解決するために、クラウドとアプリの両方に依存しない集中型の可視性ソリューションを実装することが重要です。

5. チームワークが夢を実現する

最後に、クラウドの俊敏性は、適切なツールとテクノロジーを持つことだけがすべてではありません (もちろん、それらは間違いなく役立ちます)。 それは人とプロセスに関することでもあります。 「ネットワークの速度は、最も遅い回線の速度と同じになる」という格言には、ある程度の真実が含まれています。 この引用は、クラウド内でアプリを構築、展開、管理する責任のあるチームに当てはめた場合にも当てはまります。 これは通常、DevOps、SecOps、NetOps、および少なくともアーキテクトにまたがるチームの取り組みであり、個人または共同作業の非効率性がチーム全体に影響を及ぼす可能性が高くなります。

2020 年のアプリケーション サービスの現状を入手: DevOps エディション

サイロを解体し、チーム間で定期的かつ堅牢なエンゲージメント モデルを実施することで、計画、トラブルシューティング、情報共有を加速し、全員が同じペースで進むための優れた基盤が提供されます。 部門横断的な専門知識をより有効に活用して自分の生活を楽にできるだけでなく、他の職種における自動化やプロセス最適化などを推進することで、全員のスピードアップに貢献できるようになります。

関連コンテンツ
報告

分散システムの可観測性

O’Reilly のこのレポートでは、監視の課題とトレードオフの概要を示し、分散システムに最適な監視戦略を選択するのに役立ちます。

レポートをダウンロードする ›

記事

ネイティブ クラウド サービスから必要なものをすべて入手できていますか?

クラウドネイティブのセキュリティおよびアプリ パフォーマンス サービスが手に負えなくなったことを示す兆候は何ですか?

記事を読む ›

解決

失敗せずにスピードを選ぶ

開発を遅らせることなく、ビジネスに必要なセキュリティ、パフォーマンス、可視性を実現する方法をご確認ください。

もっと詳しく知る >

ウェビナー

チーム間で連携してコードから顧客への提供を迅速化

アプリ開発の責任は、スピードを優先してネットワークやセキュリティから開発者へと移行しつつあります。

ウェビナーを見る ›