2019年2月19日

OSS

ヤフーにおけるOSS開発・貢献がどのように行われているか

  • このエントリーをはてなブックマークに追加
OSS WEEKの2日目の記事です。カテゴリの一覧はこちら

はじめに

こんにちは。
システム統括本部プラットフォーム開発本部の古田です。
私は、ヤフー株式会社(以下、ヤフー)が採用しているOSSの1つである、Apache Pulsarを扱うチーム(以下、Pulsarチーム)に所属しています。
今回は、ヤフーにおけるOSS開発・貢献がどのように行われているかについて紹介します。

ヤフーにおけるOSS開発・貢献

ヤフーは、100以上のサービスを展開しており、日本最大級のユーザー数やビッグデータを有しています。各サービスから得られた膨大な量と種類のビッグデータを活用し、より使いやすいサービスの提供のために、日々の開発に取り組んでいます。

ヤフーでは、ユーザーにより良いサービスを素早く提供するために、世の中にあるさまざまなOSSを利用して、開発コストを削減し、各サービスやそれらを支えるプラットフォームを開発しています。
また、OSSを利用するだけではなく、技術のさらなる進化を実現するために、OSSの開発・貢献を推奨し、開発しやすい環境を社内のOSS開発者に提供しています。

ヤフーが開発・協力しているOSS

ヤフーが開発・協力しているOSSについていくつか紹介します。

  • AnnexML
    • ラベルの種類数が膨大な場合のマルチラベル分類問題に対し、高速かつ精度良く予測を行う分類器
  • AntPickax
    • 基礎ライブラリ、コンポーネント、システムのプロダクト群
  • Yosegi
    • JSONのような柔軟な表現と、他のカラム型ストレージフォーマットに似た効率的な読み込みを実現する、スキーマレスのカラム型ストレージフォーマット
  • Apache Pulsar
    • 高信頼性・高パフォーマンス・高スケーラビリティのPub-Subメッセージングシステム

OSS開発者への支援

ヤフーでは、OSS開発者を支援するための環境や社内制度を設けています。
その中の1つに、OSSデベロッパー認定制度という制度があります。

OSSデベロッパー認定制度

OSSデベロッパー認定制度とは、コミッターのOSS活動を支援するための制度です。
今まで以上にOSS活動を活発にしていき、自発的な技術力向上の機会を増やすことを目的として、この制度が導入されました。
ヤフーが指定するOSSのOSSデベロッパーに認定されれば、OSS開発だけではなく、関連するカンファレンスやミーティングへの参加も業務扱いにできます。
また、年間100万円を上限とした活動予算枠が付与され、開発機器の購入費用や、書籍執筆費用、カンファレンスの参加費や、渡航費や宿泊費など幅広く利用できます。

私が所属するPulsarチームには、このOSSデベロッパー認定制度で認定されたApache Pulsarのコミッターが3人おり、OSS開発・貢献に役立てています。

コミュニティーの活性化

TechBlogでOSSを紹介したり、社内外問わずOSSのハンズオンやMeetupを開いたりなど、コミュニティーの活性化にも取り組んでいます。
ヤフーには、LODGEという社外の人でも利用できるコワーキングスペースがありますので、気軽にイベントや勉強会を開くことができます。

PulsarチームでのOSS開発・貢献

次に、私が所属する、PulsarチームでのOSS開発・貢献について紹介します。
3人のPulsarコミッターを中心に、Apache Pulsarの新機能開発やバグ修正および社内プラットフォームへの適用などを行っています。

Pulsarとは

Pulsar(Apache Pulsar)とは、高信頼性、高パフォーマンスおよび高スケーラビリティを誇るOSSのPub-Subメッセージングシステムです。
Pulsarを使うことによって、通知情報やログといったメッセージを、異なるアプリケーション間で、非同期に高速に送受信することが可能です。
例えば、あるアプリケーションから得たログを複数のアプリケーションに非同期で送りたいときや、ジョブの保存や取り出しを非同期で行いたいときなどに使われます。

Pulsar開発者による技術ブログ:Open-sourcing Pulsar, Pub-sub Messaging at Scale によると

  • レプリケーションされるデータセンター数:10以上
  • 1日あたりに生成されるメッセージ数:1000億以上
  • トピック(メッセージが送受信されるエンドポイント)数:140万以上

と巨大でありながら、メッセージ送信に要する時間の平均は5[ms]以下を実現しています。

類似のソフトウエアである「Apache Kafka」「RabbitMQ」などと比較して、高速性、耐久性、マルチテナントおよびスケーラビリティなどにおいて優れており、大規模サービスに適しているシステムです。

Pulsarは、Yahoo! Inc.(現: Verizon Media)で開発された技術で、2016年4月にヤフーが参加し、2016年9月にOSSとして公開されました。
そして、2017年6月にApache Software Foundationに移管し、2018年9月にトップレベルプロジェクトに認定されました。

現在、ヤフーに加え、米Yahoo!を運営する「Verizon Media」、中国の人材サービス会社「Zhaopin.com」、アルゼンチンのECサービス会社「MercadoLibre」といった巨大なトラフィックを抱えるグローバル企業がPulsarを導入しています。

Pulsarについて詳しく知りたい方はこちらをどうぞ。

Pulsarチームの業務

ここでは、Pulsarチームの業務内容についていくつか紹介します。

社内のメッセージングプラットフォームの構築と運用

Pulsarチームでは、異なるサービス間のデータ連携を効率よく実現するために、Pulsarを利用したメッセージングプラットフォームを社内に提供しています。

ヤフーは、100以上のサービスから得られたビッグデータをサービス間で効率よく送受信するために、巨大なトラフィックを高速に処理でき、利用者数の増大や障害に対応でき、かつ送受信をまとめて管理できるシステムを求めていました。
そこで、それらの要件をすべて満たすApache Pulsarを、社内のメッセージングプラットフォームとして導入しました。

Pulsarチームでは、運用をしていく中で得られた、各サービスやユーザーからのビッグデータやフィードバックなどを元に、社内プラットフォームおよびApache Pulsarの改良を行っています。
開発しているOSSをさまざまなサービスやユーザーに実際に使ってもらうことによって、バグの発見や新機能の提案につなげやすくなります。

ヤフーには100以上のサービス、巨大なトラフィックやユーザー数を有していますので、幅広く多角的な視点からOSSを開発できます。

ISSUE/PR共有会

GitHubのISSUEやPR(プルリクエスト)から、最新情報のキャッチアップを行い、チーム内で共有しています。

バグ修正や機能の追加があれば、チームで議論し、社内のプラットフォームに積極的に取り込んでいます。

コミット・レビュー

Pulsarチームでは、社内プラットフォームの運用に加えて、Apache Pulsarのバグ修正や新機能開発に関するコミットやレビューを業務として行っています。
コミットやレビューを業務として行えるので、海外にいる優秀なコミッターやコントリビューターと議論する機会が増え、コーディング能力や英語能力を普段の業務で高めることができます。

また、社外にPRを出す前に、チーム内にいるコミッターからレビューをもらうことができるので、OSS開発に慣れていないエンジニアでもコミットできます。

私自身、Pulsarチームに入る前までは「OSS開発はハードルの高いもの」という意識がありましたが、業務としてコミットするにつれて、今では気軽にPRを出してOSSに貢献できるようになっています。

コミュニケーション

Pulsarチームでは、チャットやテレカンファレンスなどで、海外のPulsarコミッターやコントリビューターとのミーティングも行っています。
コミッターやコントリビューターとのコミュニケーションには英語を用いているので、普段の業務から英語でのコミュニケーションにも取り組んでいます。

また、コミュニティー拡大のために、国内のカンファレンスだけでなく、OSCONKubeConなどの国外のカンファレンスにも参加し、プレゼンやブース運営を行っています。

おわりに

本稿では、ヤフーにおけるOSS開発・貢献がどのように行われているかについて紹介しました。

OSSデベロッパー認定制度で認定されたコミッターは、OSS開発を業務として行うことができ、そのための活動予算も支援されます。

OSS開発者は、開発しているOSSを社内のサービスやプラットフォームに導入し、ヤフーの膨大な量と種類のビッグデータを利用した、他にはない経験やノウハウをOSSに積ませることができます。
これによって、OSSの改善だけでなく、OSS開発者自身の技術力向上にもつながることから、ヤフーが「OSSとOSS開発者がともに成長できる環境」であるといえます。

今後もヤフーでは、OSS開発者だけでなく、エンジニア全員の技術力向上やさまざまなチャレンジを応援するとともに、より良いサービスをユーザーに提供できるよう、OSSの開発・貢献に取り組んでいきます。

参考

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加