製品 & テクノロジー

Snowflakeにおける開発者の生産性向上のための継続的な取り組み

Digital illustration of a woman looking at a computer screen with barcharts superimposed on the photo.

私はよく、「Snowflakeに入社した理由はなんですか。そしてなぜ開発者の生産性に注力しているのですか」と聞かれます。私は、ワールドクラスのエンジニアから学び、高度なコラボレーション文化を築くためにSnowflakeに入社しました。これらは、Snowflakeがロケットのような速度で成長している秘密の理由でした。Snowflakeは開発者の生産性の大幅な変革に着手しており、私はこの打ち上げられるロケットに飛び乗らなければなりませんでした。

最初から始めましょう。2012年、Benoit DagevilleとThierry CruanesはSnowflakeを設立しました。データベース分野の経験豊富なエンジニアである彼らは、多くのコードを書いてくれました。こうしたコードは今でもSnowflakeを支えています。Snowflakeの創業者は、年功序列に関係なく、すべてのエンジニアがコードを書くべきだと考えています。ハンズオンであることで、シニアアーキテクトとCTOは開発者の生産性の現場の実態を把握し、日々の苦労、タイムラインの実現可能性、ソリューションのトレードオフをより正確に把握することができます。

Snowflakeは急成長を遂げ、優秀な人材を雇用し、コードベースを急速に拡大させました。単一製品企業であるSnowflakeは、時が経つにつれ、ますます複雑で多機能なものになっていき、その結果、何年にもわたってテスト資料が確認されなくなり、開発環境はますます複雑化し、構築とテストにかかる時間が大幅に遅延し、開発者の生産性に悪影響を与えていました。また、システムを支えるインフラストラクチャは高負荷時には信頼性が低く、手動でのリトライが必要となり、開発者の生産性が損なわれていました。ツールの一元化とスケーリングには早くから取り組んでいましたが、うまくいきませんでした。

2023年初めには、継続的インテグレーション(CI)と開発者環境を改善するためのイニシアチブを開始しましたが、進捗は芳しくありませんでした。2023年後半までに、戦略の見直しが必要になりました。

私たちは、リーダーシップの優先事項、効果測定、お客様とのつながり、アカウンタビリティの4つの重要な要素を特定しました。

リーダーシップの優先事項

Snowflakeのリーダーシップは、開発者の生産性を全社の非常に重要な優先事項として定義しており、毎月CEOと経営幹部がレビューを行います。SnowflakeのCTOであるS Muralidharは、全社的な目標を定め、実際の作業を行う企業間チームを規定することに深く関わっています。開発者の生産性を高めるために、チームの人員が大幅に増強されました。その間に、社内の有志がコードのリファクタリング、テストのセットアップと実行時間の改善に取り組み、ビルドシステムと開発者環境のリプラットフォームを加速させました。 

効果測定

効果測定は、私たちが進歩しているかを理解するためのカギです。重要なのは、お客様の観点から見た成功を評価することであり、社内のマイルストーンに到達する能力ではありません。そのために、定性的なメトリクスと定量的なメトリクスを組み合わせたものを収集しています。

  • 製品の運用メトリクス:ビルドシステムの稼働時間、1日あたりのビルドシステムコマンドの総数

  • ユーザーが認識する製品のメトリクス:構築とテストのレイテンシー、正常稼働しているワークスペースの割合、新しいシステムの採用 

  • ユーザージャーニーのアウトプットメトリクス:開発者1人あたりの1週間の平均PR数、PRの送信から最初のレビュー、最後のレビュー、マージまでの各段階を通じたPRライフサイクルのレイテンシー

  • 開発者の全般的な感情:四半期ごとのCSAT(調査ベース)、最も苦慮している領域

私たちは、メトリクスに基づいて野心的な四半期目標を設定して注視しています。週1回の運用レビューでは、メトリクスの異常を深く掘り下げ、解決を目指します。メトリクスが開発者の体験と十分に結び付いていない場合、私たちはメトリクスを修正し、更新されたユーザーフィードバックを収集してユーザーの実際の体験との一貫性を確保します。

お客様とのつながり

Snowflakeのお客様は、優れたSnowflakeエンジニアでもあります。彼らの信頼を獲得し、フィードバックとイテレーションの好循環を築くには、1)彼らの体験を理解していること、2)着実な進歩を遂げていること、3)フィードバックに基づいて優先順位付けとイテレーションを行っていることを示す必要があります。

変化を推進するにあたって、Snowflakeのお客様は3つのカテゴリーに分類されます。つまり、アーリーアダプター、フォロワー、そしてラガードです。アーリーアダプターは、イテレーションに役立つ重要なフィードバックを与える鍵であり、信頼できるインサイダーとして所属するチームにイノベーションを促進し、採用を促進します。私たちは各チームのアーリーアダプターをチャンピオンとして特定し、定期的にインタビューを行って進捗と感情を追跡しました。 

そして、四半期計画に優先順位を付けるための重要な手段として、四半期調査におけるユーザーフィードバックを分析しました。私たちは、年功序列、主要なプログラミング言語、地理的ロケーションに基づき、さまざまな製品グループにわたって頻繁にユーザーインタビューを実施し、そのフィードバックを使用して、毎月のスプリントで優先順位を微調整しました。地理的なロケーションごとにチームのリズムや好みのコミュニケーションモードが異なるため、各エリアのチームに直接話を聞き、現地の開発者と交流するための最適なフォーラムを把握しました。また、お客様と常にやり取りしながら、主な課題の進捗状況を共有し、ロードマップに関するフィードバックを得ています。

アカウンタビリティ

私たちは開発者ツールを、公開されたサービスレベル契約のあるお客様向けの製品のように扱い、週1回のメールと隔週での製品アップデートでアカウンタビリティを明示しています。透明性を確保することにより、お客様の信頼を築き、フィードバックの流れを維持できるようになります。 

私たちは、効果測定を通じて進捗状況を把握し、お客様とのつながりを通じて改善を検証し、お客様にアップデートを提供することでアカウンタビリティを明示できるようになりました。このことによって、以下の4つのイノベーションの開発と採用が促進されました。すなわち、Bazel(ビルドシステム)、クラウドワークスペース(開発者環境)、SnowCI(継続的インテグレーション)、Snowfort(リグレッションテストフレームワーク)です。4つのイノベーション領域によって、私たちは技術的および組織的な課題を克服することができました。

Bazel

私たちのレガシービルドシステムであるMavenとCMakeにより、ビルドスクリプトと一貫性のないツールが急増し、さまざまなコンポーネントで作業する開発者の学習曲線が急激に悪化していました。ローカルビルドは信頼性が低く、成功するには頻繁にリトライと「クリーンビルド」を行う必要があったため、開発者の間で大きな不満が生じていました。Bazelを採用することで、一貫性と信頼性に優れた高速ビルドが実現しました。さらに、Buildbarn上でリモートバックエンドを実行することで、構築とテストを大幅に並列化し、レイテンシーを大幅に短縮することができました。

クラウドワークスペース

MacBook VMの古い開発者環境では、製品の構築とテストに対する需要の増大に対応するのが困難でした。ユーザーは一度に1つのアクティブなVMに制限されており、破損したVMのリセットには30分かかり、場合によっては長い時間がかかっていました。これに対処するため、私たちは、最新のチェックポイントコード、キャッシュされたビルド、IDE、テストツール、その他のユーザーがすぐに生産性を上げるために必要なものがプリロードされた、Kubernetes上で動作する一時的なクラウドワークスペースを導入しました。ユーザーは2分以内にワークスペースをスピンアップし、複数のワークスペースを並列に維持できるようになりました。データセンター内では高速にBazel Buildbarnキャッシュに直接接続できます。 

開発者環境の移行は、開発ワークフローに対する最も破壊的な変更です。採用を促進して惰性を克服するためには、優れた製品以上のものが必要でした。私たちは、アーリーアダプターをインサイダーチャンピオンとして活用し、楽しくクリエイティブなアウトリーチによってラガードにモチベーションを与え、各チームに直接メリットをアピールして何度もフィードバックを繰り返しました。

SnowCI

これまでのCIシステムでは、無秩序でバラバラなJenkinsスクリプトが何年にもわたって使用されていました。テスト能力が低く、チームがシステム全体の構成を把握できていなかったため、修正と最適化は困難でした。私たちは、SnowCIというYAMLベースのシステムを内部に一から構築してCIワークフローを強化することで、これらのスクリプトを強制的にクリーンアップし、以前に比べてはるかに分かりやすいモダンなCIシステムに移行しました。これにより、CIのステージを一貫して測定し、信頼性の低いカスタムワークフローの大部分を削除し、スピードと信頼性を中核原則として重視できるようになりました。

Snowfort

私たちのレガシーテストフレームワークは、クリーンな状態でテストを開始、終了できるように分離されておらず、不整合を防止するためのガードレールもなく、ボイラープレートのセットアップコードの重複を防止するための抽象化もされていませんでした。そこで、SnowflakeのリグレッションテストフレームワークとしてSnowfortを開発し、これらの欠点に対処しました。これにより、大規模なテスト資料を細かく分割することで、テストが失敗した際の再試行をより素早く行えるようになりました。また、Buildbarnにより、テスト実行を並列化してCIレイテンシーを短縮できるようになりました。さらに、テストが分離されたことにより、テストの脆弱性を大幅に低減してCIの信頼性を改善できるようになりました。

進捗

2024年2月から12月にかけて、4つの新しいシステムの採用率が、10~20%から90~95%に増加しました。ビルドの信頼性と安定性が向上し、レイテンシーが8分になりました。パイプラインのさまざまなステージで、CIのレイテンシーと信頼性が3~6倍に向上しました。一時的な開発者環境では、完全にキャッシュされたビルドとツールが2分以内に起動します。また、設定はセッション間で完全に維持されます。Snowfortのリグレッションテストフレームワークでは、適切な分離により信頼性の高いテストを簡単に作成できます。その結果、開発者の感情が大幅に向上しました。9か月で、不満を抱えているお客様の割合は58.9%から21.4%に減少し、満足しているお客様の割合は17.8%から42.3%に増加しました。

Line graph illustrating the change in satisfaction/dissatisfaction with developer velocity at Snowflake.

私たちの仕事は終わっていません。開発者の内部ループ体験を、摩擦のないさらに楽しいものにする取り組みは、これからも数多く控えています。Snowflakeでは、すべてのプログラミング言語について、1分未満のローカルビルドとスムーズなオーサリングおよびデバッグ体験を提供するために、BazelとIDEの戦略に投資しています。また、オーサリングからマージまでのPRを20分以内に完了するために、SnowCIに投資しています。上述の4つの重要な要素が揃ったことにより、私たちはお客様によりよいサービスをお届けできるようになりました。

SF_Value-Focused-Data-Leaders_AEM_1680x720_1.jpg
Report

Snowflake AI+Data Predictions 2025

What does the AI-accelerated future look like? Read our report for insights from more than a dozen experts and execs.
著者
記事をシェアする

Subscribe to our blog newsletter

Get the best, coolest and latest delivered to your inbox each week

30日間の無料トライアルを開始する

Snowflakeの30日間無料トライアルで、他のソリューションに内在する複雑さ、コスト、制約の課題を解決するデータクラウドを体験できます。