アプリケーションの開発とデプロイ
アプリケーション開発のパターンとプラクティスを確認し、Azure Pipelines を構成し、サイト信頼性エンジニアリング (SRE) のベスト プラクティスを実装します。 SRE は、アプリケーションの開発とデプロイ、変更管理、監視、緊急応答に対するソフトウェア エンジニアリングのアプローチです。
計画、トレーニング、および証明
アプリケーションの開発とデプロイの計画には、次のチェックリストとアプリケーション開発に関するリソースを使用してください。 次の質問に答えてください。
- アプリケーション開発環境と設定ワークフローを準備しましたか?
- Kubernetes アプリケーションの開発をサポートするためのプロジェクト フォルダーの構造はどのようにしますか?
- アプリケーションの状態、構成、およびストレージの要件を特定しましたか?
SRE チェックリスト
開発環境を準備する。 ツールを使用して環境を構成して、コンテナーを作成し、開発ワークフローを設定します。
詳細については、次を参照してください。
アプリケーションをコンテナー化する。 アプリケーション スキャフォールディング、内部ループのワークフロー、アプリケーション管理フレームワーク、CI/CD パイプライン、ログの集計、監視、アプリケーション メトリックなどの、エンドツーエンドの Kubernetes 開発エクスペリエンスについて理解を深めます。
詳細については、次を参照してください。
一般的な Kubernetes シナリオを確認する。 Kubernetes はマイクロサービスを提供するためのプラットフォームであるとしばしば考えられますが、より広範なプラットフォームになりつつあります。 バッチ分析やワークフローなどの一般的な Kubernetes シナリオの詳細については、一般的な Kubernetes シナリオの概要 (ビデオ) をご覧ください。
Kubernetes 用にアプリケーションを準備する。 Kubernetes 用にアプリケーションのファイル システム レイアウトを準備し、週単位または日単位のリリース用に整理します。 Kubernetes のデプロイ プロセスによって、信頼性のあるゼロダウンタイムのアップグレードがどのように実現されるか理解します。
詳細については、次を参照してください。
アプリケーション ストレージを管理する。 適切なストレージ オプションを提供できるように、パフォーマンスのニーズとポッドのアクセス方法を理解します。 接続されたストレージをバックアップし、その復元プロセスをテストする方法を計画します。
詳細については、次を参照してください。
アプリケーション シークレットを管理する。 キー コンテナーを使用してキーと資格情報を格納して取得します。 アプリケーション コードに資格情報を保存しないでください。
詳細については、次を参照してください。
運用環境へのデプロイとベスト プラクティスの適用
運用環境向けにアプリケーションを準備するときは、次のチェックリストを使用します。 次の質問に答えてください。
- アプリケーションのすべての側面を監視できますか?
- アプリケーションのリソース要件を定義しましたか? スケーリング要件はどのようになりますか?
- 運用システムに影響を与えることなく、アプリケーションの新しいバージョンをデプロイできますか?
SRE ベスト プラクティスのチェックリスト
readiness と liveness の正常性チェックを構成する。 Kubernetes は readiness と liveness のチェックを使用して、アプリケーションがトラフィックを受信する準備ができたこと、およびアプリケーションの再起動が必要になるタイミングを確認します。 チェックを定義しないと、Kubernetes はアプリケーションが実行されているかどうかを判断できません。 詳細については、liveness と readiness の確認に関するページを参照してください。
ログ記録、アプリケーションの監視、およびアラートを構成する。 コンテナーの監視は、複数のアプリケーションを含む大規模な運用クラスターを実行するときは特に重要です。 コンテナー化されたアプリケーションに推奨されるログ方法は、標準出力 (
stdout
) と標準エラー (stderr
) のストリームに書き込みを行うことです。詳細については、次を参照してください。
アプリケーションのリソース要件を定義する。 Kubernetes クラスター内のコンピューティング リソースを管理する主な方法は、ポッドの要求と制限を使用する方法です。 これらの要求と制限が、どのコンピューティング リソースをポッドに割り当てるかを Kubernetes スケジューラに通知します。 詳細については、「ポッドのリソースの要求と制限を定義する」を参照してください。
アプリケーションのスケーリング要件を構成する。 Kubernetes はポッドの水平自動スケーリングをサポートしており、CPU 使用率などの選ばれたメトリックに応じて、デプロイのポッドの数を調整します。 オートスケーラーを使用するには、ポッド内のすべてのコンテナーで CPU の要求と制限が定義されている必要があります。 詳細については、ポッドの自動スケーリングの構成に関するページを参照してください。
自動化されたパイプラインと DevOps を使用してアプリケーションをデプロイする。 コードのコミットから運用環境へのデプロイまでのすべての手順を完全に自動化することで、チームはコードの構築に専念でき、手動による手順でのオーバーヘッドと潜在的な人的エラーを解消できます。 新しいコードのデプロイが迅速になり、リスクが少なくなるため、チームは俊敏性と生産性を向上させ、実行中のコードについて確信を持つことができます。
詳細については、次を参照してください。
最適化とスケーリング
アプリケーションが運用環境で実行されたら、アプリケーションのデプロイのチェックリストを使用してワークフローを最適化し、アプリケーションとチームのスケーリングを準備します。 次の質問に答えてください。
- 横断的なアプリケーションの問題はアプリケーションから抽象化されていますか?
- 新しい機能やバージョンを繰り返し適用する一方で、システムとアプリケーションの信頼性を維持できますか?
アプリケーションのデプロイのチェックリスト
API ゲートウェイをデプロイする。 マイクロサービスへのエントリ ポイントとして機能する API ゲートウェイにより、マイクロサービスからクライアントが分離され、別のセキュリティ レイヤーが追加され、横断的問題を処理する負担を排除することでマイクロサービスの複雑さが軽減されます。 詳細については、「Azure Kubernetes Service にデプロイされたマイクロサービスで Azure API Management を使用する」を参照してください。
サービス メッシュをデプロイする。 サービス メッシュは、トラフィック管理、回復性、ポリシー、セキュリティ、強力な ID、可観測性などの機能をワークロードに提供します。 アプリケーションはこれらの運用上の機能から切り離され、サービス メッシュがそれらをアプリケーション レイヤーからインフラストラクチャ レイヤーに移動します。
詳細については、次を参照してください。
SRE プラクティスを実装する。 SRE は、重要なシステムとアプリケーションの信頼性を維持し、マーケットプレースが要求する速度で反復する実証済みのアプローチです。
詳細については、次を参照してください。