CI / CD パイプラインで API デリバリーを自動化するための 6 つの重要なヒント
Google Cloud Japan Team
※この投稿は米国時間 2023 年 7 月 22 日に、Google Cloud blog に投稿されたものの抄訳です。
最新のソフトウェア開発において、継続的インテグレーションと継続的デプロイ(CI / CD)のパイプラインを使用したデリバリーの自動化は、たとえるならば費用を 65% 削減しながら生産量を倍増させる自動車の組み立てラインといえるでしょう。Postman が発表した最近のレポートによると、51% を超える回答者が、所属している組織では開発作業の半分以上が API に費やされていると答えています。開発の大部分を占めている API ですが、ではなぜ API を CI / CD パイプラインに統合すべきなのか、その理由を探ってみましょう。また、Apigee を組織の CI / CD プロセスに統合するためのベスト プラクティスとツールについてもご紹介します。
CI / CD パイプラインで API デリバリーを自動化する 4 つの理由
Apigee は機能豊富な API 管理プラットフォームで、API の構築、保護、管理、公開に必要なツールをデベロッパーに提供します。では、API を Apigee にデプロイするプロセスを自動化したい場合はどうすればよいでしょうか。そこで役立つのが CI / CD です。Apigee を CI / CD パイプラインに組み込むことで、API のデプロイを自動化し、環境間にわたる一貫性を促進して、API のパフォーマンスをリアルタイムでモニタリングできます。これらのメリットには、次の 4 つが含まれます。
API のデプロイを自動化することで、製品化までの時間を短縮し、顧客の要求に迅速に対応する。
API のテストと保護のプロセスを自動化することで、不具合を早期に発見し、API のセキュリティを向上させる。
API のデプロイと管理に必要な人員、ツール、インフラストラクチャを節約することで費用を削減する。
API の使用状況を追跡し監査することで、可視性とコンプライアンスを高める。
API のデリバリーと管理を効果的に自動化するための主なツールと役立つヒント
Cloud Build などのプロダクトを使用して API デリバリーを CI / CD パイプラインに統合することで、開発プロセスが効率化されます。たとえば、Google Cloud でアプリケーションを構築するデベロッパーは、Cloud Run、Google Kubernetes Engine(GKE)、Cloud Functions、App Engine などのツールで他のワークロードと並行して API のデリバリーを行えます。
運用の自動化には、開発プロセスにおける無限とも思えるようなさまざまな側面を含めることができます。大まかにいうと、API 管理を効果的に行う CI / CD パイプラインの主要な構成要素には、以下が挙げられます。
1. API プロキシの構築とテスト
Apigee を初めて使用する場合、コンソールの包括的なビジュアル ツールを活用し、便利なドラッグ&ドロップ インターフェースを使って API プロキシの構築とデプロイを行います。VS Code 拡張機能や Apigee エミュレータを活用することで、API プロキシ開発を強化できます。このローカル設定により、ローカル プロキシのデプロイ、テスト、シームレスなコードの commit とともにオートコンプリート機能を使用して、Apigee 環境全体にわたってデプロイを進めるためのパイプラインをトリガーできます。
役立つヒント: Apigee の有用性を最大化するには、Debug ツールを使用して API トランザクションのあらゆる詳細を検査します。そして最後に、必ず Apigee コンソールからプロキシをエクスポートして、ソース リポジトリに commit しましょう。これらのベスト プラクティスを把握しておくことで、Apigee を最大限に活用できるようになります。
2. API コードの保存とバージョン管理
すべての CI / CD パイプラインの基盤である堅牢なソースコード管理を実現し、変更の追跡と管理を容易に行うことができます。他の GCP 開発とシームレスに統合するために、フルマネージドの Git リポジトリである Cloud Source Repositories を使用したり、組織の取り組みに応じて GitHub、GitLab、Bitbucket などの一般的なツールを活用したりもできます。
役立つヒント: 適切なブランチ戦略を採用することで、複雑さを軽減し、効率的なデリバリーを維持できます。こちらのコミュニティ投稿でさまざまなブランチ戦略を確認し、ユースケースに適した戦略を選択しましょう。また、コードベースを健全で最新の状態に保つために、ソースコードへの commit やマージを頻繁に行うようにします。定期的なコードレビューも、コードを改良し、品質のチェックポイントを作成するうえで役立ちます。
3. 静的コード分析を使用したコード品質の確保
定期的な静的コード分析により、潜在的なエラーやセキュリティの脆弱性を検出して、コードの品質を向上させることができます。また、コードが一貫したスタイルに従っている状態にすることで、コードの標準化を促進できます。静的コード分析には、apigeelint(Apigee バンドルの分析)、JSHint と ESLint(JavaScript の分析)、Checkstyle と PMD(Java の分析)、または SonarQube(多言語サポート)を使用できます。
役立つヒント: ツールをコードエディタと統合すると、コードを記述しながら分析結果を確認できます。品質ゲート / しきい値を定義し、ビルド パイプラインの一部としてツールを実行します。しきい値を満たさない場合は、そのビルドを失敗としてマークします。
4. 単体テストとコード カバレッジによるコードの復元力の確保
単体テストは、メソッドやクラスなど、コードの個々の単位に焦点を当てます。これは、コードの各単位が想定どおりに動作することを確認するのに役立ちます。コード カバレッジは、単体テストでカバーされるコードの割合を測定します。コード カバレッジの割合が高いほど、より多くのコードがテスト済みであることを示し、エラーのリスクを減らすことができます。単体テストやコード カバレッジに使用できるツールには、Mocha と Chai(JavaScript 用)、JUnit(Java 用)、Cobertura と Istanbul(nyc)(コード カバレッジ用)があります。
役立つヒント: すべてのコードの単体テストを作成します。これには、新しいコードも既存のコードも含まれます。ビルドプロセス中に単体テストを実行することで、コードがデプロイされる前に、単体テストに必ず合格していることを確認できます。カバレッジのしきい値を設定し、しきい値を満たさない場合は、そのビルドを失敗としてマークします。これにより、コードが単体テストによって十分にカバーされていることを確認できます。
5. コードの構成、パッケージ化、デプロイ
API のデプロイを成功させることは、頑丈な建物を建設することに似ています。入念に計画され、デプロイ可能な形式(ZIP ファイル)にパッケージ化され、その後で実装(Apigee にインポートし、Apigee 環境にデプロイ)される、強固なブループリント(Apigee コード)が必要です。パッケージ化のフェーズでは、メタデータとマニフェストを使用してブループリントの詳細が作成されます(建設における建設計画の標識と準備に類似しています)。また、機密情報を除くすべての Apigee 構成はブループリントに統合でき、適切なツールにより使用できます。ツールについては、Apigee API に基づいて構築された、さまざまなオープンソースのオプションから選択できます。一般的に使用されているものには、Apigee Deploy Maven プラグイン、apigee cli、apigee-sackmesser、Apigee API を使用したカスタム スクリプトなどがあります。
役立つヒント: アーティファクト システムを使用して、これらのバンドルを保存しましょう。こうすることで、バンドルの管理と追跡が容易になります。また、ターゲット サーバー、Key-Value マップなど、必要なすべての構成をソースコード リポジトリの一部として維持すると、コードをさまざまな環境にデプロイしやすくなります。パイプラインとソースコードを使用して、プロキシを下位環境から本番環境に昇格させることで、コードが本番環境で常に最新であることを保証できます。
6. 機能テストまたは統合テストによる変更の確認
統合テストは、API の初舞台に向けた厳しい最終リハーサルであると見なします。サードパーティのシステムとも連携しなければならない場合を含め、さまざまなシナリオで API が滞りなく役割を果たすかどうかを検証する機会です。API が想定どおりに動作していることを確認するにあたり、Apickli(cucumber.js ベース)、Postman、JUnit などの優れたツールを自由に使用できます。
役立つヒント: これらのテストをソースコードの一部として管理し、デプロイ先の環境に基づいてさまざまなテストスイートを実行しましょう。そうすることで、テストの追跡と管理が容易になります。また、デプロイ直後にこれらのテストを実行し、しきい値を満たさない場合は、そのビルドを失敗としてマークします。これにより、デプロイ中に発生した可能性のある問題を特定して修正できます。機能テストが失敗した場合に備えて、以前の動作バージョンや安定バージョンを展開するロールアウト計画を作成しておきます。こうすれば、デプロイ中に発生した可能性のある問題の影響を最小限に抑えることができます。
ここで、パイプラインを完成させるための過程で検討できるオプションについて、いくつかご紹介しましょう。
API の耐久テスト: パフォーマンス テストを実行することで、API が長期的に耐えられるかどうかを確認できます。
明確でアクセスしやすいドキュメント: 最新の API ドキュメントを掲載して、デベロッパー ポータルを最新に保ちます。Apigee Smartdocs Maven プラグインなどのツールを使えば、特に Drupal デベロッパー ポータルで、これを簡単に行えます。
下図に示されているのは、ほとんどのお客様で行われている、包括的なリファレンス実装の典型的なパイプラインの例です。デベロッパーがコードをリポジトリに commit するとトリガーされます。このパイプラインは、Cloud Build などの任意の CI / CD プラットフォームで実行できます。
今すぐ使用を開始する
今すぐコンソールから直接 Apigee への取り組みを始めることも、Apigee の無料評価を開始することも可能です。Google のアクセラレータを活用し、サンプルや高度な技術ガイダンスを使って開発に着手できます。ご不明な点がある場合、またはサポートが必要な場合は、多数の専門家がサポートを提供している Apigee コミュニティをぜひご利用ください。
- プロダクト マーケティング マネージャー Varun Krovvidi