🏋️‍♀️

マルチプロダクトの成長を支えるPlatformチームの紹介

2024/12/17に公開

この記事はHacobu Advent Calendar 2024の17日目の記事です。

はじめに

こんにちは、株式会社Hacobu テクノロジー本部 Platformチームの栗山です。
Hacobuでは クラウド物流管理ソリューション「MOVO(ムーボ)」シリーズ を提供しています。
このMOVOシリーズの中に、トラック予約予約サービス「MOVO Berth」や動態管理サービス「MOVO Fleet」、配車受発注・管理サービス「MOVO Vista」といったいくつかのプロダクトがあります。

今回はそれらのプロダクトを支える”Platformチーム”のミッションや役割、運用するシステムやツールについてご紹介します。

Platformチームとは

Platformチームは、Hacobuではの各プロダクト開発チームを下支えする存在です。私たちは大きく分けて、以下の2つの領域を担っています。

  1. 共通機能の開発・運用

    すべてのプロダクトにとって不可欠な認証基盤や共通マスタデータ、通知サービスなど、横断的に利用される共通機能を提供しています。

  2. 開発者向けPlatformの開発・運用

    Kubernetesを利用したアプリケーションの実行基盤や各システムのオブザーバビリティの提供、Golangの共通ライブラリの開発など、開発者の生産性を引き上げるための仕組みを提供しています。

これらを通して、開発チームが本来取り組むべきドメイン固有の課題に集中できる環境を整え、会社全体の開発スピードや品質を向上させることがPlatformチームの大きな役割です。

Platformチームのミッション

Platformチームのミッションは以下の通りです。

「信頼性の高い基盤の構築」と「開発者の支援」を通じて、事業の加速と価値創出を行う。

このミッションを実現するために、日々の開発と運用を通じて組織全体の生産性向上を図っています。

Platformチームが開発・運用しているもの

Platformチームが開発・運用しているものはたくさんありますが、いくつか代表的なものを挙げます。

  • 認証基盤

    • ログイン機能
    • セッション管理機能
    • 多要素認証機能
    • 外部API認証機能
  • 共通マスタデータ

    各プロダクトで使用される共通マスタデータの管理および共通マスタデータへアクセスするための機能の提供をしています。これにより各プロダクトごとに重複したデータを持たずに一元管理することができています。

  • メール送信、Push通知などの通知サービス
    各プロダクトがユーザーに通知を行うための共通の通知基盤を提供しています。

  • Golangの共通ライブラリ

    開発時によく使われる便利な機能群をGolangのライブラリとして提供しています。

  • ローカル開発環境構築ツール

    開発者がローカルで素早く開発環境を立ち上げられるツールを提供しています。

SREとしての役割

HacobuではのPlatformチームはSREとしての役割も担っています。会社によってはPlatformチームとSREチームが分かれているところもあるかと思いますが、Hacobuでは兼任しています。もしかしたら今後分かれるかもしれません。

役割としては以下のようなものです。

  • インフラ管理、IaC
  • システムの信頼性向上
  • オブザーバビリティの整備
  • アカウント・権限管理
  • 障害対応・調査
  • セキュリティ改善
  • コスト最適化
  • キャパシティプランニング

オブザーバビリティの運用

Platformチームはシステム全体のオブザーバビリティの確保のためにDatadogを活用しています。
特にログ検索には力を入れており、バックエンドやフロントエンドのログ、AWS Lambdaのログ、DBスロークエリログなど、様々なコンポーネントからのログを集約し、検索可能な状態にしています。

またDatadog APMではマイクロサービス間のトレースも実現し、サービス間のリクエスト経路やボトルネックを可視化しています。

開発効率化ツールとしてのTask

HacobuではではTask RunnerであるTaskを活用して、よく使うコマンドや処理を共通化・自動化しています。タスク定義ファイルを整備することで、チームメンバーは煩雑なコマンドを暗記することなく、統一化された手順で作業を行うことができます。
例えば以下のようなtaskがあります。

  • task local:create : ローカル環境の作成
  • task test:run : テストの実行
  • task proto:gen : protoファイルからコードを自動生成

Taskを使う文化は各プロダクトチームにも浸透しており、開発体験の向上に寄与していると感じています。

アーキテクチャについて

アーキテクチャに関して特筆すべき点を簡単に紹介します。

  • EKS
    • 各プロダクトのアプリケーションの実行基盤としてEKSを使っています。
    • 統一的な基盤を用意することで、プロダクトやマイクロサービスが増えた場合でも比較的低コストで対応ができています。
  • Istio
    • サービスメッシュツールとしてIstioを採用しています。マイクロサービス間の通信時における認証等に利用しています。
  • gRPC
    • 各プロダクトのサービス間通信にはgRPCを採用しています。
  • ArgoCD
    • KubernetesへのデプロイにはArgoCDを使っており、GitOpsベースのデプロイを行っています。

まとめ

HacobuのPlatformチームの役割や具体的にどういったものを開発・運用しているかの紹介をしました。
今後も共通基盤の整備と開発者支援を通じて、プロダクトチームがユーザーに価値を届けるスピードを加速させる役割を果たしていきたいと思います。

Discussion