Bazel を使用しているユーザー

このページでは、Bazel を使用することが有名な企業と OSS プロジェクトを紹介します。 これは、承認を示すものではありません。

Bazel を使用している企業

ACqio

Acqio は、中小販売者に決済商品とサービスを提供するフィンテックです。Acqio には少数の monorepos があり、Bazel と Kubernetes を使用して高速で信頼性の高いマイクロサービスを提供しています。

Adobe

Adobe は、GitOps ドリブンの Kubernetes デプロイを継続的に行うための Bazel ルールをリリースしました。

Asana

Asana は、チームが作業を追跡できるように設計されたウェブアプリとモバイルアプリです。元の説明:

Bazel では、Asana のすべてのビルドとテストで信頼性、安定性、速度が改善されました。誤ったキャッシュが原因でクリーンアップする必要がなくなりました。

Ascend.io

Ascend は、大規模なデータセットの分析ソリューションを提供する Palo Alto のスタートアップです。同社のモットーは「ビッグデータには困難、簡単です

蜜ろう

Beeswax はニューヨークを拠点とするスタートアップで、サービスとしてリアルタイム ビッダーを提供しています。Bazel は、Jenkins ベースの継続的インテグレーションとデプロイのフレームワークを支えています。Bazel は、非常に高速かつ正確で、多くの言語とプラットフォームで適切にサポートされているため、Beeswax が気に入っています。

ブレインツリー

PayPal の子会社の Braintree は、ウェブサイトとアプリケーション用の決済ソリューションを開発しています。内部ビルドの一部には Bazel を使用しており、Paul 重大氏は Bazel への移行方法に関する素晴らしい記事を投稿しています。

キャンバス

Canva では、Bazel を使用して、Java、TypeScript、Scala、Python などの大規模な多言語コードベースを管理します。Bazel への移行により、デベロッパーとコンピューティング インフラストラクチャの大幅な効率化が実現しました。たとえば、CI の平均ビルド時間は 5 ~ 6 分の 1 に短縮されました。また、Bazel は、高速で再現性のある標準化されたソフトウェア ビルドの基盤となっています。

CarGurus

CarGurus は、世界で最も信頼性と透明性の高い自動車マーケットプレイスを構築することをミッションに、Bazel を使用して多言語のモノレポを構築しています。

コンパス

Compass は、テクノロジーを駆使した不動産プラットフォームです。不動産、技術、ビジネスの専門家から成るエリートチームを擁する当社は、住宅探しに最適かつ最も信頼できる情報源となることを目指しています。

Databricks

Databricks は、Apache SparkTM ベースのクラウドベースの統合ワークスペースを提供します。

Databricks のコードベースは Monorepo であり、ほとんどのサービスを支える Scala コード、フロントエンド UI のための JavaScript、スクリプト作成用の Python、インフラストラクチャを構成するための Jsonnet などが含まれています。[...](Databricks での Bazel を使用した高速な Scala ビルド

Dataform

Dataform は、データチームにスケーラブルな分析を提供します。少数の NPM パッケージとドキュメント サイトを 1 つの monorepo で管理し、そのすべてを Bazel で行っています。

Bazel への移行後、次のような多くのメリットが報告されました

  • CI の高速化: リモートビルド キャッシュを有効にしました。これにより、(リポジトリ全体で)平均ビルド時間が 30 分から 5 分に短縮されました。
  • ローカル開発の改善: 無作為に実行し忘れた bash スクリプトがなくなり、増分ビルドが数分から数秒に短縮されました。
  • デベロッパーのセットアップにかかる時間: 新しいエンジニアが、bazel、Docker、JVM という 3 つの依存関係だけで、すべてのコードをビルドできます。チームに加わった最後のエンジニアは、空のノートパソコンですべてのコードを 30 分未満で構築することができました。

ディープシルバー FISHLAB

Deep Silver FISHLABS はハイエンドの 3D ゲームのデベロッパーです。内部ビルドツールのベースとして、特にすべての 3D アセットのベイクとデプロイでは、Bazel と C++/Python/Go/C を使用しています。

ドロップボックス

Dropbox では、Bazel は分散ビルドとテスト環境の重要なコンポーネントです。Google では Bazel を使用して、TypeScript/Python/Go/C/Rust を信頼性の高い本番環境リリースに結合しています。

Engel & Völkers

Engel & Völkers AG は、ドイツの非公開企業です。複数のフランチャイズ オフィスを通じて、不動産取引に関するサービスを提供しています。

Google の内部プロジェクトでは、コンパイル時間が 11 分から約 1 分に短縮されました。これは素晴らしい成果であり、現在、より多くのプロジェクトで Bazel を使用できるように取り組んでいます。(Google Cloud Build と Bazel によるテスト

Etsy

Etsy は、ハンドメイドやヴィンテージの商品、備品、工場で製造されたユニークな商品に焦点を当てた e コマース ウェブサイトです。

Bazel を使用して、Java ベースの検索プラットフォームの構築とテストを行いました。Bazel は、ベアメタル サーバー用と再現可能な Docker イメージ用のパッケージの両方を作成します。

Evertz.io

Evertz.io は、Evertz Microsystems によって作成されたマルチテナントのサーバーレス SaaS プラットフォームで、費用対効果の高いマルチリージョン サービスを世界中の放送メディア業界に提供します。

ウェブサイトは、Angular と Bazel のワークフローを使用して完全にビルドされ、デプロイされています(ソース)。

見つける

FINDMINE は小売業界向けの自動化技術であり、機械学習を使用して、現在手作業で行われている単調な商品キュレーション プロセスをスケーリングします。Python パッケージのビルド、テスト、デプロイのプロセス全体を機械化するために、Bazel を使用しています。

FlexPort

Flexport は、テクノロジーを駆使した世界的な貨物フォワーダーです。Google の使命は、すべての人にとってグローバルな取引を容易にすることです。Flexport では、Bazel を使用して Java / JavaScript サービスとクライアント ライブラリをビルドしてテストし、protobuf 定義から Java と Ruby コードを生成します。個別の JUnit 5 テストを Bazel と単独で実行する方法をご覧ください。

Google

Bazel は、Google のニーズに合わせてスケールでき、再現性とプラットフォーム/言語のサポートに関する Google の要件を満たすように設計されています。Google のソフトウェアはすべて、Bazel を使用してビルドされています。Google は毎日、数百万ものビルドに Bazel とそのルールを使用しています。

GRAKN.AI

GRAKN AI ロゴ

Grakn は、インテリジェント システムのナレッジベースの基盤として機能するデータベース技術です。Grakn を使用すると、インテリジェント システムは、複雑なデータセットを、論理的に推論できる単一の知識の集合として解釈できます。@graknlabs チームは、Bazel を使用して、複数の言語の複数のリポジトリを管理し、多数のプラットフォームにシームレスにデプロイする、高度にオーケストレートされた CI と配信パイプラインを構築できます。

Huawei

Huawei Technologies は約 30 のプロジェクトで Bazel を使用しており、Java/Scala/Go のプロジェクトです。ただし、Go プロジェクトは例外で、他のプロジェクトは元々 Maven によってビルドされていました。Maven でビルドされたプロジェクトを Bazel でビルドされたプロジェクトに変換するシンプルなツールを作成します。今後、さらに多くのプロジェクトで Bazel を使用するようになるでしょう。

IMC 取引

IMC は、アムステルダムに本社を置く世界的な専有取引会社およびマーケット メーカーです。Google では、Bazel を使用して、Java/C++/Python/SystemVerilog プロジェクトを継続的にビルドおよびテストしています。

Improbable.io

Improbable.io は、数百万もの複雑なエンティティが存在する巨大なシミュレーションを可能にする分散型オペレーティング システム SpatialOS を開発しています。

Interaxon

InteraXon は、脳波をデジタル信号に変換するハードウェア プラットフォームとソフトウェア プラットフォームを作成するソート コントロールされたコンピューティング企業です。

木星

Jupiter は食料品や生活必需品を毎週配達する企業です。

バックエンド コードで Bazel を使用して、リモート キャッシュを使用して proto と Kotlin を JVM バイナリにコンパイルします。(出典)。

わずか

Just は、ノルウェーに本社を置く企業向け金融テクノロジー企業です。グローバルな企業の財務担当者によるリスクと流動性の管理方法を変革するソフトウェア ソリューションを開発しています。アプリケーション スタック全体が Bazel でビルドされています。

キティホーク株式会社

Kitty Hawk Corporation は、電気航空機を製造するアメリカの航空機メーカーです。Haskell と Scala のルールとともに Bazel を使用します。

LINE

LINE は、日本で最も人気のあるメッセージ アプリケーションであるインスタント コミュニケーション アプリを提供しています。同社では、約 60% が Swift、40% が C/C++/Objective-C/Objective-C++ からなるコードベースで Bazel を使用しています(ソース)。

Bazel に切り替えると、ビルド時間が大幅に短縮されました。これにより、QA 期間中の処理時間が大幅に短縮されました。新しいビルドをテスターに配布しても、ビルドとテストを 1 時間待つ必要がなくなりました。(Bazel を使用した iOS 向け LINE のビルド パフォーマンスの向上)。

LingoChamp

LingoChamp は、英語学習者向けのプロフェッショナルなソリューションを提供しています。Go、Java、Python のプロジェクトでは Bazel を使用します。

LinkedIn

Microsoft の子会社の LinkedIn は、世界最大級のプロフェッショナル ソーシャル ネットワークです。LinkedIn は、iOS アプリのビルドに Bazel を使用しています。

リフト

Lyft は、iOS アプリに Bazel を使用しています(ソース)。

マカニ語

現在 Google の子会社である Makani は、エネルギー カイトを開発し、Bazel を使用してソフトウェア(組み込み C++ ソフトウェアを含む)をビルドしています。

イベント

Meetup は、オフラインでのグループ会議を推進するオンライン ソーシャル ネットワーキング ポータルです。Meetup のエンジニアリング チームは rules_scala に貢献し、rules_avrorules_openapi の管理者となります。

Nvidia

NVIDIA では Python に dazel(docker bazel)を使用して、bazel の Python の短所に対処しています。それ以外はすべて通常の bazel(主に Go / Scala/ C++/ Cuda)で実行されます(ソース)。

Peloton Technology

Peloton Technology は、トラックの事故や燃料使用に取り組む自動車両テクノロジー企業です。Bazel を使用して、自動車安全システムの信頼性の高いビルドを有効にします

Pinterest

Pinterest は、世界中のアイデアのカタログです。Bazel を使用して、さまざまなバックエンド サービス(Java/C++)と iOS アプリケーション(Objective-C/C++)をビルドします。

パフォーマンスを大幅に改善する基盤を構築し、ビルド環境のばらつきを排除して段階的に導入するという当社の目標には、Bazel が最適であると判断しました。その結果、すべての iOS リリースが Bazel を使用してリリースされるようになりました。 Pinterest で高速かつ信頼性の高い iOS ビルドを開発

PubRef

PubRef は、最新の科学出版プラットフォームです。バックエンドの構築には Bazel と rules_closure を使用し、メイン バックエンドを構築するネイティブ Java ルール、rules_gorules_noderules_kotlin を使用します。rules_protobuf は、バックエンド サービス間の gRPC ベースの通信を支援するために使用されます。PubRef.org はボールダー、コロラド州を拠点としています。

Redfin

Redfin は、フルサービスのローカル エージェントを備えた次世代の不動産仲介業者です。Bazel を使用して、ウェブサイトとさまざまなバックエンド サービスをビルドしてデプロイします。

変換のほとんどが後押しにより、状況は大きく改善されました。CI ビルドは高速になります(以前は 40 ~ 90 分かかっていましたが、今では開発環境のビルドは平均で 5 ~ 6 分に短縮されています)。信頼性もはるかに高くなっています。これを定量化するのは困難ですが、原因不明のビルドの失敗が「たまたま」発生したものから、解決すべき現実的な問題と見なされるようにしたことで、信頼性が高まり続けるという好循環が生まれました。 (Maven から Bazel に切り替えてビルドが 10 倍速くなった

儀式

Ritual は、レストランを顧客とつなぐモバイル ピックアップ アプリで、時間短縮に役立つシンプルなツールを提供しています。このツールを使えば、待ち時間なしで必要な食品や飲み物を受け取ることができます。Ritual は、バックエンド サービスに Bazel を使用します。

スナップ

Snapchat メッセージ アプリのデベロッパーである Snap は、2020 年に Buck から Bazel に移行しました(ソース)。このプロセスの詳細については、エンジニアリング ブログをご覧ください。

Stripe

Stripe は、モバイル決済ソリューションを提供しています。Bazel Scala ルールのメイン管理者です。

Tink

Tink はヨーロッパのフィンテックで、ヨーロッパ中の銀行との接続に最適な方法を構築しています。

Bazel を使用して、多言語の monorepo からバックエンド サービスを構築しています。Tink のエンジニアは、bazel build //stockholm/... イベント グループを主催しています。

Tokopedia

Tokopedia は、e コマースを専門とするインドネシアのテクノロジー企業です。1 か月のアクティブ ユーザー数は 9, 000 万人を超え、プラットフォームを利用する販売者数は 700 万を超えています。

Tokopedia が iOS ビルド時間を 1,000% 高速化した記事で、Bazel によるビルドの高速化について説明しています。ビルド時間は、Bazel を使用した場合は 55 分から 10 分に、リモート キャッシュを使用した場合は 5 分に短縮されました。

Twitter

Twitter は、主要なビルドツールとして Pants から Bazel に移行することを決定しました(ソース)。

ツーシグマ

Two Sigma はニューヨークに本社を置くテクノロジー企業で、世界中のデータから価値を引き出すことに尽力しています。

Uber

Uber は配車サービス会社です。900 人のアクティブなデベロッパーがいる Uber の Go monorepo は、Bazel を使用する Go リポジトリの最大級の一つでしょう。こうしたエクスペリエンスについて詳しくは、Bazel を使用した Uber の Go Monorepo のビルドをご覧ください。

Uber Advanced Technologies グループ

Uber Advanced Technologies Group は、トラック輸送、貨物輸送、自動ライド シェアリングなど、Uber での自律走行車の取り組みに重点を置いています。この組織では、メインのビルドシステムとして Bazel を使用しています。

Vistar Media

Vistar Media は、ブランドが現実世界での行動に基づいて消費者にリーチすることを可能にする広告プラットフォームです。同社のエンジニアリング チームは主にフィラデルフィアを拠点とし、ビルド、デプロイ、テストの高速化、さまざまなテクノロジーで作成されたリポジトリの統合に Bazel を使用しています。

VMware

VMware では、Bazel を使用して、お客様向けの革新的なプロダクトを開発しながら、確実で信頼性の高いビルドを作成しています。

Wix

Wix はクラウドベースのウェブ開発プラットフォームです。バックエンドでは Java と Scala のコードを使用します。Google Cloud Build によるリモート実行を使用します。

bazel リモート実行で実行した場合、クリーンビルドが約 5 倍高速になります。bazel は、ビルド/テスト アクションをワーカー ファームにディスパッチするときに、bazel の優れたビルド/テスト並列処理機能を利用します。bazel はアグレッシブなキャッシュ メカニズムを利用しているため、平均ビルド時間が 10 倍以上になります。(Maven または Gradle から Bazel への移行?自問すべき 5 つの重要な問い

ゼンリー

Zenly は友だちや家族のライブマップです。会うのも、様子を見るのも、一番楽しい方法です!離れていても、一緒に感じることができます。


Bazel を使用したオープンソース プロジェクト

アブセイル

Abseil は、C++ 標準ライブラリを拡張するために設計された、C++ コードのオープンソース コレクション(C++11 に準拠)です。

Angular

Angular は一般的なウェブ フレームワークです。Angular は Bazel でビルドされています。

アポロ

Apollo は高パフォーマンスで柔軟なアーキテクチャであり、自律走行車の開発、テスト、デプロイを加速します。

brpc

Baidu 全体で使用される産業グレードの RPC フレームワーク。1,000,000 以上のインスタンス(クライアントは除く)と Baidu 内の「baidu-rpc」と呼ばれる何千種類のサービスを備えています。

cert-manager

cert-manager は、さまざまな発行元からの TLS 証明書の管理と発行を自動化する Kubernetes アドオンです。これにより、証明書が有効で最新の状態に保たれ、有効期限が切れる前の適切なタイミングで証明書の更新が試行されます。

CallBuilder

関数を 1 つ記述するだけでビルダーを作成できる Java コード生成ツール。

CPPItertools

Python ビルドインと itertools ライブラリからヒントを得た範囲ベースの for ループ アドオンを提供する C++ ライブラリ。itertools や Python3 組み込み関数と同様に、このライブラリは可能な限り遅延評価を使用します。

コピーバラ

Copybara は、コードを変換してリポジトリ間で移動するためのツールです。

Dagger

Dagger は、Java と Android 向けの完全に静的なコンパイル時依存関係挿入フレームワークです。

DAML

DAML は、プライバシーに配慮した安全なランタイムで将来を見据えた分散型アプリケーションを構築するためのスマート コントラクト言語です。

DeepMind ラボ

エージェント ベースの AI 研究のためのカスタマイズ可能な 3D プラットフォーム。

ドレイク

Drake は MIT で開始された C++ ツールボックスで、現在はトヨタ研究所が運営しています。ロボットのダイナミクスを分析し、ロボットの制御システムを構築するためのツールのコレクションであり、最適化ベースの設計/分析に重点を置いています。

Envoy

C++ L7 プロキシと通信バス

エラーが発生しやすい

Java のよくあるミスをコンパイル時エラーとして捕捉します。(Bazel への移行が進行中です)。

Extensible Service Proxy

拡張可能なサービス プロキシ(ESP)は、JSON/REST または gRPC API サービスで API 管理機能を有効にするプロキシです。現在の実装は、NGINX HTTP リバース プロキシ サーバーに基づいています。

FFruit

FFruit は、人気サービス Falling Fruit による無料のオープンソースの Android アプリです。

Gerrit コードレビュー

Gerrit は、Git ベースのプロジェクトを対象としたコードレビューおよびプロジェクト管理ツールです。

ギチル

Gitiles は、JGit 上に構築された Git リポジトリ用のシンプルなリポジトリ ブラウザです。

グラクン

Grakn(https://grakn.ai/)は、複雑なデータ ネットワークを整理し、クエリ可能にするナレッジグラフ エンジンです。

GRPC

言語とプラットフォームに依存しないリモート プロシージャ コール システム。(Bazel はサポートされていますが、プライマリ ビルドシステムではありません)。

gVisor

gVisor はコンテナ ランタイム サンドボックスです。

Guetzli 氏

Guetzli は、優れた圧縮密度、高画質の画質を実現する JPEG エンコーダです。

グラバ

Prolog スタイルの述語を記述し、通常の Java コードからシームレスに使用できる Java コード ジェネレータ。

ヒーロー

Heron は、Twitter のリアルタイムの分散型フォールト トレラント ストリーム処理エンジンです。

JGit

JGit は、Git バージョン管理システムを実装する軽量な純粋な Java ライブラリです。

Jsonnet

JSON 用の正式に指定された、洗練された構成ファイル生成言語。(Bazel はサポート対象のビルドシステムです)。

Kubernetes

Kubernetes は、複数のホストでコンテナ化されたアプリケーションを管理するためのオープンソース システムで、アプリケーションのデプロイ、メンテナンス、スケーリングの基本的なメカニズムを提供します。

Kythe

コードを扱うツールを構築するためのエコシステム。

Nomulus

Google App Engine のトップレベル ドメイン名レジストリ サービス。

ONOS : オープン ネットワーク オペレーティング システム

ONOS は、従来の「ブラウンフィールド」ネットワークから SDN の「グリーンフィールド」ネットワークへの移行をサポートする唯一の SDN コントローラ プラットフォームです。これにより、魅力的な新機能が実現し、ネットワーク オペレーターにとってデプロイと運用に大きなコストがかかります。

PetitParser for Java

従来、プログラミング言語の文法は静的に指定されてきました。どうしてもあいまいさが生じるため、作成や再利用が難しくなります。PetitParser は、スキャン不要の解析、パーサーのコンビネータ、式文法、packrat パーサーのアイデアを組み合わせて、文法とパーサーを動的に再構成可能なオブジェクトとしてモデル化します。

PlaidML

PlaidML は、ディープ ラーニングをあらゆる場所で活用するためのフレームワークです。

プロジェクト V

プロジェクト V は、インターネット経由で独自のプライバシー ネットワークを構築するためのツールセットです。

Prysmatic Labs Ethereum 2.0 の実装

Prysm は、ブロックチェーン ベースの分散コンピューティング プラットフォームである Ethereum 2.0 のシャーディング クライアントです。

レイ

Ray は柔軟で高性能な分散実行フレームワークです。

レスティ

Resty は、Go 用のシンプルな HTTP および REST クライアント ライブラリです(Ruby REST クライアントから着想を得て開発されています)。

ラフタイム

ラフタイムは、安全な時刻の同期を実現することを目的としたプロジェクトです。

セレニウム

Selenium は、ウェブ アプリケーションをテストするための移植可能なフレームワークです。

セマンティック

セマンティックは、ソースコードを解析、分析、比較するための Haskell ライブラリおよびコマンドライン ツールです。GitHub によって開発されています(コード ナビゲーションなどに使用)。

配信済み

高パフォーマンスの RESTful ウェブサーバーを構築するための C++ ライブラリが提供されています。

ソネット

Sonnet は、複雑なニューラル ネットワークを構築するために TensorFlow 上に構築されたライブラリです。

ソルベ

Sorbet は Ruby のサブセットを対象とした高速で強力な型チェッカーです。何百万行ものコードを含むコードベースにスケーリングし、段階的に導入できます。

Tink

Tink は多言語、クロス プラットフォーム、オープンソースのライブラリです。安全で正しく使いやすく、誤用が起こりにくい暗号 API を提供します。

TensorFlow

マシン インテリジェンス向けのオープンソース ソフトウェア ライブラリ。

ターボサンタ

プラットフォームに依存しない GameBoy エミュレータ。

万全な耐性

Project Wycheproof は、既知の攻撃に対して暗号ライブラリをテストします。

XIOSim

XIOSim は、x86 アーキテクチャ用の詳細なユーザーモード マイクロ アーキテクチャ シミュレータです。

ZhihuDailyPurify

ZhihuDailyPurify は、中国語 Q&A サイト Zhihu Daily の軽量版です。