freeeの開発情報ポータルサイト

freee 基盤チームアドベントカレンダーの歩き方

SREの河村(at-k)です。

本記事は freee基盤チームアドベントカレンダー の1日目になります。

カレンダー企画にあたり

今年もこの季節がやってきました。年末に向けて冬が深まり、心なしか忙しなくなってくる中、毎日ブログが一本ずつ投稿されていくのを見て年の瀬の近づきを感じる、ある種の風物詩となっています。

そもそもアドベントカレンダーは12月1日からクリスマスまで続く長い前夜イベントで、日本では、少なくとも筆者には馴染みがないものでした。そんな元ネタから派生した形で、近年ではIT企業が中心となってテックブログを日次で投稿していくイベントとして広く認知されてきています。ことの経緯を知らなかったので調べてみたのですが、意外に歴史は古く、日本では2008年頃からPerl界隈で賑わっていて、海外ではそれ以前からそれなりに定着していた文化のようです。

freeeでも毎年アドベントカレンダーが企画されています。developers blogにあるリストの中で一番古いものは2017年のものです。改めて過去のカレンダーの記事一覧を眺めていると色々歴史を感じて面白い(当時自分は在籍していませんでしたが)。

さて今年も例年通り企画が立ち上がり、参加者募集がされましたが、あっという間に枠が埋まってしまいました(カレンダーはコチラ)。freeeも年々エンジニアが増えており、アドベントカレンダー参加の競争率も上がっているようです。

そんな中SREのメンバーが、参加しようとしたんだけどもう埋まっちゃったんだよな〜という話をしているのを聞いて、考えました。今ならfreeeのSRE枠でアドカレを企画してもそれなりに成立してしまうのではないかと。

というわけで突発でアドベントカレンダーを企画し、なんやかんやでめでたく枠を埋めきることに成功しました。流石にSREだけで埋めるのは難しく、基盤系チームを中心に様々な方に参加いただけることになりました。多重登録して頂いている人が何人か居ますが、きっと書きたいことがいっぱいあるのだろうと思います、素晴らしいですね(すみません、あとで埋め合わせします)。

なおfreeeでは、この基盤チームアドカレ以外にもテーマの異なるアドカレがいくつか作られています。こちらもぜひ注目してください(他のカレンダーに参加しているSREメンバーもいます)。

本記事ではアドカレのタイトルに有るfreee 基盤チームの紹介を通じて、どういうメンバーが参加しているのかを説明する形でスタートを切らせて頂こうと思います。 改めて、本記事は freee基盤チームアドベントカレンダーの1日目になります。今日から12/25の最終日までぜひお付き合いください。

基盤チームのざっくり紹介

そもそも基盤とは何でしょうか。具体的に指すものはコンテキストによって差異はありますが、字面通りであれば土台であり、プロダクトやサービスを実現する上での必要なベースとなる部分です。

プロダクトの数が増え、共通部分を整理し分離・標準化していけば、自ずと基盤的な振る舞いをするコンポーネントは生まれてくるかと思います。プロダクト開発を下支えをし、より迅速かつ効率的な価値提供を支援するものです。

厳密な定義はいったん置いておいて、freeeにも基盤チームと呼ばれるチームがいくつか存在します。それぞれの「基盤」について、freeeに当てはめた場合を書いてみます。

freee 基盤チーム
freee 基盤チーム

共通ライブラリ開発チーム

プロダクトに直接組み込まれる形で使われるライブラリやフレームワークなど、プロダクトに近い基盤を開発しているチームです。freeeではサービス基盤チームが主にこの領域を担っています。

例えば、ログに対する共通処理やAPMなどの監視ミドルウェアの標準設定といった、インフラとプロダクトの連携を支援するミドルウェアなど。また、標準化されたサービス間通信を提供するRPCライブラリや、pub/sub基盤といった、サービス間連携を支援する仕組みを開発しています。

基盤サービス開発チーム

基盤サービスは、ウェブサービスを提供する上で必須な、例えば認証認可といった機能をマイクロサービスとして切り出したものです。

freeeでは統合経営プラットフォームの実現に向けて様々なプロダクトを開発していますが、よりスピード感高い開発のために、共通機能のマイクロサービス化を積極的に進めており、今後もfreeeの基盤となるサービスは増えていく見込みです。

プラットフォームチーム

freeeではEKSを中心に据えたプラットフォーム戦略を取っており、現在ほとんどのプロダクトはEKS上で動作しており、CI/CDなどもKubernetesを利用した仕組みが導入されています。

Platformチームは、Kubernetesを研究拡張していき、そしてEnablingチームがプロダクトチームにPlatformを用いたSREの自律的実践を支援していく形で、プラットフォームの進化を推進しています。さらにGovernanceチームがAWSを始めとしたCloud Platformの利便性を最大限引き出すために、契約最適化から統制、啓蒙活動を行っています。

このあたりは、freeeでは主にSREが担う領域です。freeeのSREについては以前こちらの記事で説明させていただきましたが、そのうち改めて現状やこれからについてをまとめた記事を出せればと思います。

セキュリティチーム

図中には記載されていませんが、fintech企業であるfreeeにおいてセキュリティは極めて重要な要素です。お客様のデータを預かる立場として、 プロダクト・インフラ、それぞれに対して高いセキュリティレベルを維持するために、freeeのセキュリティチームが様々な施策を展開しています。

プロダクトSRE

同じくに図には記載がありませんが、プロダクトSREは、特定プロダクトにフォーカスし、そのプロダクトのSREを実現することを目的に活動するロールです。各プロダクトチームからの有志での参画か、freee サインのSREチームのように明確にチームが分かれている場合があります。主にSRE Enablingチームと連携しながらプロダクトの改善を推進しています。

終わりに

freeeの基盤についてざっくり概要を説明しました。本アドベントカレンダーではこれらの基盤を開発・運用するチームのメンバーを始め、様々なバックグラウンドのエンジニアが参加しています。どういった記事が投稿されていくか、私自身も楽しみです。ぜひ注目していただければと思います。

2日目の明日は、sentokun によるfreeeの権限管理基盤開発チームの紹介です。お楽しみに!