Aviator が Google Cloud でデベロッパーのコラボレーションを拡大
Ankit Jain
Founder and CEO, Aviator
※この投稿は米国時間 2024 年 6 月 6 日に、Google Cloud blog に投稿されたものの抄訳です。
編集者注: この投稿では、元 Google 社員が設立したエンジニアリング生産性プラットフォームである Aviator のチームが、コードのレビューからビルド、テスト、マージ、デプロイまで、開発ライフサイクル全体にわたってデベロッパーのコラボレーションに関する課題を解決するツールを構築するため、どのように Google Cloud を活用しているかについて説明します。この投稿をお読みになった後にご質問やご不明な点がございましたら、こちらのフォームに記入して Aviator にご相談ください。
Google は、過去 20 年間にわたりエンジニアリングの生産性向上に多額の投資を行ってきましたが、これはこの業界の大部分で数年前までは主要な重点分野ではありませんでした。しかし、リモートワークの増加と AI 環境の急速な進化により、組織がエンジニアリング チームの有効性向上を目指すなかで、データドリブンなこの分野が注目を集めるようになりました。
私たちは、Google 社員時代にエンジニアリングの生産性向上における課題(および機会)を直接経験しています。私たちが Aviator のビルドに乗り出したのはそのためです。Aviator は、チームが日々の業務から必要ではあるものの単純なタスクを排除し、開発ライフサイクルのあらゆるステップでのパフォーマンスを向上させるのに役立つエンジニアリング生産性プラットフォームです。
Google Cloud でスケーラブルなサービスを構築
私たちのミッションは、Google レベルの生産性を誇るエンジニアリングをすべてのデベロッパーに提供することであるため、Aviator を Google Cloud 上でゼロからビルドすることは簡単な選択でした。また、私たちは、技術トレーニング、ビジネス サポート、十分なクラウド プロダクト クレジットを提供する Google for Startups プログラムに応募し、参加しました。これにより、私たちのチームはコストをあまり気にせず、複数のクラウド機能を利用することができました。
私たちは、DORA(DevOps Research and Assessment)チームが開発した主要な指標を指針として、次の特長を持つプラットフォームを Google Cloud で構築しました。
-
迅速かつ柔軟なコードレビュー: 自動化されたコードレビュー ルール、レビュー担当者による即時の提案、定義された応答時間目標によってコードレビューのサイクルを最適化します。これらの機能により、デベロッパーはコードをより速くリリースし、開発チームの作業速度を高め、コードを本番環境に導入するまでにかかる全体的な時間を短縮できます。
-
レビュー サイクルの加速: スタックされた pull リクエスト(PR)(個別に順次レビューしてから同期できる複数の小さなコード変更)によりコード変更を分割して、開発のボトルネックを解消し、マージの競合を回避します。
-
効率化され、カスタマイズ可能なマージ: 何千もの PR をスケールし、古くなった pull リクエスト、マージの競合、互換性のない変更、破損したビルドを削減するために構築された高スループットのマージキューを使用して、ビジー状態のリポジトリを制御します。これにより、独立したコード変更が開発のメインラインにマージされる前に検証されるため、デプロイの頻度と変更時の障害率が改善されます。
-
スマートなサービス固有のリリースノート: チームがリリースノートを自動的に生成し、すべての環境でのデプロイ、ロールバック、リリースを簡単に管理できるようにする単一のダッシュボードを使用して、整理されていないリリースノートやエラーが発生しやすい確認手順を排除します。このリリース フレームワークによってデプロイの頻度とロールバックも改善され、開発チームが本番環境での障害回復に費やす時間を短縮し、より信頼性の高いプロダクトとシステムを提供できるようになります。
スケーラブルなサービスを実現するために、私たちはさまざまな Google Cloud プロダクトを使用しました。たとえば、Aviator は設計上、自動アクションの実行にバックグラウンド タスクを使うことが多いです。私たちは、Aviator を数百万のコード変更を作成する数千人のアクティブ ユーザーに対応できるようスケールするために Google Kubernetes Engine(GKE)を選択しました。Kubernetes Pod は、使用の拡大に応じて水平方向にスケールできます。また、Google Cloud によって、CD プラットフォームに認証情報を保存することなくデプロイを管理できるようになりました。さらに、Google Cloud の最新の IAM アーキテクチャを活用して、認証管理の柔軟性を高めました。
Aviator は、Google Cloud を使用し、以下の追加機能によってエンジニアのコラボレーションと管理をさらに効率化することもできます。
システムのヘルス モニタリング
Prometheus は、インフラストラクチャやアプリケーションなどの構成されたターゲットから時系列データを収集する pull モデルが使用されるオープンソースのモニタリング プラットフォームです。私たちは、Managed Service for Prometheus を使用して、スケーリングと信頼性を心配することなく、Aviator のエンドツーエンドのモニタリングとアラートを設定できました。また、Cloud Monitoring の一部として、このソリューションでは 6,500 を超える無料の指標に加え、サービスのパフォーマンス、可用性、健全性の全体像を 1 か所で提供する Prometheus 指標を利用できます。
ログ管理
Aviator は、主に API 呼び出しを使用して、GitHub、PagerDuty、Slack などのサードパーティ サービスとアクティブに連携します。これらの API 呼び出しは、これらのサービスの信頼性やネットワークの問題が原因で失敗することがよくあります。この問題に対処するため、私たちは Google Cloud の堅牢なログ管理機能を使用し、報告された問題を簡単にトラブルシューティングして、解決できるようにしました。またこれによって、さまざまなサービスに関するログのフィルタリング、構造化されたクエリの作成、特定の条件に基づくアラートの作成も簡単になりました。
低速クエリの検出
コア データベースには、Cloud SQL を使用しました。これは、高い可用性とパフォーマンスを即時に提供する Google Cloud の PostgreSQL 向けフルマネージド データベース サービスです。最近では、Aviator で低速クエリを検出できるよう、Sqlcommenter を使用したクエリへのタグ付けを検討しています。このオープンソース ライブラリは、すべてのクエリをサンプリングしてタグ付けするため、各低速クエリのソースを迅速に特定できます。また、アプリケーションのバックエンドとスムーズに統合する Sqlcommenter Python ライブラリも使用しています。
レート制限管理
私たちのチームは非常に多くのサードパーティ サービスと連携しているため、サードパーティ サービスで許可されている制限を超えないようにしながら、ユーザーに安定したエクスペリエンスを提供できるよう、レート制限を管理することも非常に重要でした。さらに、Aviator 自体にもレート制限が必要な API が多数あります。私たちは、Memorystore for Redis を活用して、受信 API 呼び出しと送信 API 呼び出しのレート制限を追跡、適用するプロセスを簡素化しました。
自己ホスト型、単一テナント、クラウド
Aviator は、エンジニア 20 人から 2,000 人超まであらゆる規模のエンジニアリング チームをサポートしているため、インストールにはさまざまな方法があります。私たちにとって、Aviator がさまざまな種類の要件とニーズを満たせることが不可欠でした。
現在、デベロッパーは Aviator の設定時にクラウド、自己ホスト型、単一テナントのうちいずれかのインストール オプションを選択できます。各オプションについて、詳しく見ていきましょう。
クラウド インストール
このバージョンはユーザーにとって最もシンプルな設定であり、Kubernetes クラスタを使用し、Google Cloud 上の Aviator によって完全に管理されます。また、標準の日次デプロイによって更新されます。
自己ホスト型
プライベート クラウド上で設定できる Aviator の自己ホスト型バージョンを好むユーザーもいます。この設定では、Helm チャートをプライベート リポジトリに公開し、Aviator ソフトウェアの新しいリリースを Docker イメージとして Google Cloud の Artifact Registry にアップロードします。
自己ホスト型を選択したすべてのお客様に対し、Docker イメージをホストするプライベート リポジトリへの読み取り専用権限が付与された認証キーを使用して新しい IAM サービス アカウントを作成し、ユーザーと共有します。これによってプロセスがシンプルかつ安全になり、ユーザーは Aviator の自己ホスト型バージョンをインストールできるようになります。
単一のテナント
単一テナント インストールは自己ホスト型バージョンと非常に似ていますが、Aviator が独自の Google Cloud アカウント内でインストールを管理する点が異なります。これにより、ユーザーは Aviator の設定でセキュリティと管理を強化できます。
AI の検討
LLM の最近の進歩により、エンジニアリングの生産性を拡大できるチャンスがさらに膨らみました。Aviator は、開発ライフサイクルのさまざまなステージを支援できる AI を活用したいくつかのツールの導入をすでに検討し始めています。
-
テスト生成: AI を活用してテストケースを自動生成することで、開発者の時間を大幅に節約でき、開発サイクルの早い段階で潜在的なバグを検出できるようになります。
-
コードの自動補完: AI を搭載した GitHub Copilot などのツールは、コード スニペットをリアルタイムで提案するため、開発者はより迅速かつ正確にコードを記述できます。
-
予測型のテスト選択: コード変更に基づき、失敗する可能性のあるテストを予測することで、AI は各サイクルで実行されるテストの数を減らし、開発プロセスを大幅に高速化できます。
Google は AI のリーダーとして、10 年以上にわたって AI イノベーションの最前線に立ち続けており、Vertex AI や Gemini などの業界をリードする AI テクノロジーを提供する Google Cloud は、他にはない存在となっています。Google Cloud のようなパートナーを持つことで、Aviator は優れた AI 基盤を獲得し、開発を加速させ、生成 AI 機能を驚くほどのスピードでリリースできます。
まとめ
エンジニアリングの生産性は単なるパフォーマンス指標ではなく、ビジネスの成功を推進する重要な要因です。デベロッパーのコラボレーションと効率性を改善することで、企業は製品化までの時間を大幅に短縮し、変化する市場の需要に迅速に対応できるようになります。Google Cloud は、この取り組みにおいてかけがえのないパートナーであることが証明されました。信頼性、速度、パフォーマンスと最先端の AI 機能を兼ね備えた Google Cloud は、複雑さを抽象化しながら迅速なイテレーションをサポートする独自の機能を備えています。Aviator は、これらのツールを引き続き活用して、エンジニアリングの生産性の限界を押し広げていきたいと考えています。
Google Cloud がスタートアップにどのように役立つかについてや、最近立ち上げられた Startup Learning Center のリソースを活用する方法についての詳細もご確認ください。