こんにちは。Webフロントエンドエンジニアの @kamatte-me です。 私は2022年11月にスタディサプリ開発チームに転職してきました。入社してまず驚いたのが、開発を行う上での仕組みや体制が非常に充実していることです。
Kubernetes環境
スタディサプリでは、インフラ基盤を全てKubernetesで構築しています。
本番環境や検証環境だけでなく、個人の開発環境までもです。各人に対して専用のNamespaceが発行されています。
スタディサプリのシステムは数多くのアプリケーションが複雑に連携して成り立っています。もしホストマシン上にこの開発環境を構築しようとすると、多くのマシンリソースを消費してしまうのはもちろんのこと、各アプリケーションの言語 / ライブラリバージョンの更新などにも頻繁に追従する必要があり、多大なストレスがかかります。
一方、Kubernetesで構築された開発環境では、このような苦労はありません。ホストマシンのリソース消費はもちろんありません。言語/ライブラリのバージョンも自動で追従してくれます。また、「ローカル開発と勝手が違うのでは?」と思っていましたが、特に感じずに開発できています。VSCodeやJetBrains IDEといった好みのエディタを利用することができます。
個人の開発環境だけでなく、なんとGitHubのプルリクエストごとに検証環境も立ち上がります。Vercelのプレビューデプロイと同じような感じです。一般的には「検証環境が1つあり、それを奪い合ったり順番待ちをして検証している」というフローではないでしょうか。スタディサプリの開発では、そのようなストレスやリードタイム無く検証ができます。
このKubernetes環境を用いた具体的な開発フローを下記の記事でご紹介しています。
blog.studysapuri.jp
リクルート社内でもここまでKubernetes環境が整備されているのはスタディサプリだけだそうです。スタディサプリのKubernetes環境はSREチームが構築・運用しています。ぜひSREチームの記事もご覧ください。 blog.studysapuri.jp
QB Day
2週間のうち1日、QB Dayという日があります。QBとは“Quality Budget”のことで、「普段の開発業務では手が回らないけどやりたいこと/やらなければいけないこと」に対して開発工数を割いています。Web 開発エンジニア達が一同に会して、次のようなタスクに取り組んでいます。
- エラー / Warning 解消
- ライブラリのメジャーバージョンアップ
- ライブラリ移行
- リファクタリング
- パフォーマンス改善
数人のチームを組んでモブプロ形式で行っています。メンバーは所属チームも専門領域もバラバラです。横の繋がりができるだけでなく、自分の知らない知識やテクニックを学ぶことができるのも、メリットと感じています。
Happy Path Test
スタディサプリでは1週間ごとにリリースが行われます。その前にHappy Path Testと呼ばれるプロダクト全体のリグレッションテストが行われます。テスト作業はパートナー企業に協力をしてもらっているため、エンジニアがテスト項目を消化する必要がありません。なおかつ、テストの専門家として不具合を発見してもらえるため、リリースされるモノの品質に対して大きな安心感を得ることができます。 スタディサプリは大きく複雑なアプリケーションです。開発している我々であっても、全ての変更を網羅することはできません。コード変更の副作用に気づくことも難しいです。Happy Path Testによって、これらの不安がカバーされ、アグレッシブなリファクタリングも安心して行うことができます。
また新入社員としては、Happy Path Testの工程を自ら行うことで、プロダクトやシステムの理解に大きく役立ちます。
Darklaunch
教育事業には特有の慣習があります。それは「年度」や「学期」です。この期の変更に合わせて大きな機能をリリースすることが多々あります。その時に役立つ仕組みがDarklaunchです。 アプリケーションは先にリリースしておいて、管理画面からユーザーへの公開をスイッチすることができる仕組みです。Darklaunchのおかげで、次のようなメリットが得られます。
- 機能リリースのタイミングを定められる。
- 非エンジニアでも作業ができる。
- 新機能のコードをリリースブランチにマージするタイミングを考える必要がない。
- 新機能のコードを含んでいる状態でも他機能が正常動作することを、Happy Path Testで担保できる。
- 新機能にバグがあった場合でも即座に取り下げられる。
- 一部のユーザーのみに公開、といったβリリースができる。
Darklaunch についての記事もございますので、ぜひご覧ください。
基本的な部分も充実しています
その他の体制やツールの一部を列挙してご紹介します。
- 各チームにテクニカルプロダクトマネージャーが在籍
- 開発部にQAエンジニア組織がある
- 技術負債解消のためのワーキンググループ
- GitHub Cloud
- ZenHub Cloud
- CI/CD
- GitHub Actions
- ArgoCD
- CircleCI
- モニタリング
- Datadog
- Sentry
- デザインツール
- Figma
- Storybook
- コミュニケーションツール
- Slack
- Miro
- HonKitによるドキュメンテーション
- Renovate / Dependabot によるライブラリバージョンアップ
- ハイスペック開発マシン
これほどまで取り揃っていて、なおかつ整備されているのはなかなか珍しいのではないでしょうか。リクルートが持つ地盤がある上で、さらにスタディサプリはテクノロジーにこだわっている部署と感じています。
まとめ
私が入社してインパクトを受けた、スタディサプリならではの開発現場の環境をご紹介しました。
リクルートという大規模な会社でも、ここまで開発者体験の向上に力を入れていることに私自身も驚きました。
また、テクノロジー面だけでなく、組織体制としても強固だと思っております。スタディサプリはプロダクトの規模も組織の規模も非常に大きいです。開発チームには、ハイスキルエンジニアが大人数集結しています。だからこそ、このような充実した環境/文化ができているのだと思います。
スタディサプリでは、一緒に最高のプロダクトを作っていってくれる仲間を募集しています! 少しでもご興味を持っていただけましたらこちらのページからご連絡ください!