ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog

テクノロジー

ヤフーのJava開発を支えるJavaサポートチーム

Yahoo! JAPAN Advent Calendar 2021の25日目の記事です。

こんにちは。Yahoo!広告エンジニアの高見と申します。
2021年10月より「第11代黒帯〜プログラミング言語(Java)〜」 に就任しました。

この記事では、「ヤフーにおけるJava開発」と、私が従事している「Javaサポートチームの活動」について、紹介します。

(※黒帯制度とは:各領域において突出した専門性を持つ社員を黒帯として任命し、社内外における活動を会社として支援する制度)

1.ヤフーにおけるJava環境

2017年10月頃から全社でシステムのモダナイゼーションが推進されています。
この取り組みで、主要開発言語がPHPから、JavaとNode.jsに変更となりました。
Javaは、主にサーバーサイドアプリケーションで使用されるようになりました。

具体的なアーキテクチャはこのようになっています。

  • アプリケーションはSpring Bootを利用したものが主流
  • 実行環境は、社内プライベートクラウドのPaaS(Platform as a Service)、CaaS(Container as a Service)の利用が主流

詳細については、第8代Java黒帯の記事第9代Java黒帯の記事で紹介されているので、この記事と併せて、ご覧ください。

2.社内有志が集まってできた、Javaサポートチーム

Javaサポートチームは、「Javaの良さを全社に広めたい」、「ヤフーのJava開発力を向上させたい」という意志を持ったエンジニアが有志で参加し、本業のサービスの開発、運用の傍ら、ヤフーのJava開発を支援する活動をしています。

本業をやりつつとなるので、活動の原動力はメンバーのモチベーションと言えます。

主な活動内容は、「Javaでの開発支援」、「教育研修」に大別できます。
ここでは、いくつか事例を紹介します。

サービスに対する開発支援活動

ヤフーには100を超えるサービスがあり、それらのシステムの刷新、新規開発、開発中に発生した課題の解決を支援しています。

  • 開発を支援するライブラリの提供
    コアとなるビジネスロジックの開発に集中できるためのユーティリティーライブラリを提供しています。
    代表的なものを紹介します。

    • Spring Cloud StreamのBinder実装
      社内標準のメッセージブローカーであるApache PulsarのBinder実装を社内に提供しています。

    • Spring Securityを利用したロールベースアクセス制御
      社内では、APIコンポーネントへのアクセス制御としてAthenzを利用しています。
      Spring Securityを使用したAthenzの認証処理をアプリケーションにDIさせる仕組みを提供しています。
      各サービスでは、ConfigをセットアップするだけでAthenz認証を導入できます。認証処理の実装は不要になります。

  • Java、Spring Frameworkなどの動向ウオッチ、Version Up
    JDK、Spring Framework、Spring Bootの動向をチェックし、新Versionリリース、EOL、脆弱性の発生などを全社周知しています。

  • 各種相談
    各サービスからのJava開発に関する相談、サポートをしています。

    • 新規開発時の技術選定の相談
    • 実装方法の相談
    • テスト、本番で発生したトラブルシューティングのサポート
    • サービスで開発したライブラリをJavaサポートチームに移管する相談

教育研修の参画

教育研修チームと協業して研修コンテンツの提案、改善、レビューに従事しています。
Javaサポートチームで従事しているものを紹介します。

  • Java言語スイッチ研修
    Java未経験者向けのサーバーサイドJavaアプリケーション開発の入門コースです。
    演習題材となるJavaアプリケーションを実装していくハンズオン形式の研修です。

  • 新卒社員向け研修
    新卒社員向けのコースです。
    Javaでの開発方法に関して触れますが、メインコンテンツは、社内プラットフォームを使用したビルドパイプラインの構築など、ヤフーで開発するための入門研修です。

Javaサポートチームは、パートナー企業に作成いただいたコンテンツ(テキスト、演習コード)をレビューする、
受講者のアンケート結果から改善点を提案する、自分たちで演習コードを書くこともあります。

3.最近の情勢変化とJavaサポートチームのこれから

Javaサポートチームでは、システムのモダナイゼーションが進んだ結果、
ヤフーでのJava開発が転換期を迎えていると感じています。

現場課題の変化

Javaサポートチームの問い合わせについて、
これまでは、新規開発時の技術選定の相談、実装方法の問い合わせが多かった印象です。
ここ1年は、稼働中システムのトラブルシューティングのサポート、スケールアップ、スケールアウトの相談が多数を占めます。具体的には、こういった内容がありました。

  • Spring Bootなど各OSSのVersion Upで発生したエラーの解決サポート
  • リソースリークの原因特定などトラブルシューティングのサポート
  • JVMパラメータのチューニングサポート

このことから、ヤフーの多くのサービスがJavaに刷新され、エンハンス段階に移行してきたと考えられます。

Javaサポートチームに要求される変化

前述した課題に対する解決は、画一的な対策がなく、知識を活用して解決するケースがほとんどです。
Javaサポートチームで解決までの全てをサポートするには、人的、時間的に厳しいものがあり、現場エンジニアが解決できることが望ましいです。
そのために、現場エンジニアが、Javaの「知識」を「知恵」に昇華させること。
現場エンジニアの「Java開発力の向上」を図ることが必要と言えます。

Javaサポートチームは、「開発の支援」から「開発力を向上させるための支援」という活動へ変化すべき時期を迎えています。
難しい要求ですが、メンバーのモチベーションに基づいた活動への転換であり、望ましい変化であると考えています。

4.最後に

「ヤフーにおけるJava開発」、「Javaサポートチームの活動」について紹介しました。
有志で全社から参加したメンバーが運営しているチームは、他社にはないヤフーらしい文化ではないかと思います。

記事では触れませんでしたが、Scala、KotlinのJVM言語、Pythonで実装されたシステムもヤフーには存在し、フロントエンドはNode.jsが主流となっています。
そんな中、Java VMはJavaアプリケーションだけでなく、JVM言語、Python、Node.jsなど、多言語アプリケーションの実行環境になりつつあります。今後、Java VMを媒介として、Javaサポートチームを含むJavaエンジニアと、それら言語のエンジニアが交流する機会が増えることを期待しています。そして、そこから新しいイノベーションが生まれたりチャレンジする機会が創出できれば良いと思っています。

こちらの記事のご感想を聞かせください。

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました


高見 拓也
Yahoo!広告エンジニア、Java黒帯
広告主、広告代理店が広告を出稿するプラットフォームの開発、運用を担当しています。また、Java黒帯、Javaサポートチームのメンバーとして、全社のJava開発の支援を行っています。

このページの先頭へ