📈

数字で見るツクリンクの開発環境

2024/12/02に公開

ごきげんよう🙋‍♀️
ツクリンクでエンジニアリングマネージャーをしているあっきー(@kuronekopunk)です。

建設業者さんのマッチングサービス『ツクリンク』を運営していて、エンジニアを積極採用中です。
採用情報では使ってる言語のバージョンくらいで細かい情報がないので、もっと深掘りしてプロダクトの開発環境やコードについて紹介します。

3年前に書いた記事(数字で見るプロダクト開発環境)と比較しながら紹介していければと思います。

👶プロダクトは約11歳

2013年5月にβ版をリリースし2024年現在、プロダクトは11歳になりました🎂
当初は新卒の自分が唯一触れたCakePHPで作っていましたが、2014年7月にRuby on Railsへ載せ替えを行い、2015年1月にRails版がリリースされました。
Railsになってからは約9年、載せ替えには5ヶ月ほどかかったようです。

Railsへの載せ替えからコードがGit管理になり、最初のコミットは2014年7月4日に「さいしょ」というメッセージでした🔰

🔰言語のバージョンは少しビハインド

Ruby  => 3.1.6 (現在の最新は3.3.6)
Rails => 7.0.8.6 (現在の最新は8.0.0)

現在アップデートを進めているところで最新からは少しビハインドしてしまっています。
YJITの有効化やRails8で新たに追加された機能なども検証していければと思います。

🪄rails stats

$ rails stats
+----------------------+--------+--------+---------+---------+-----+-------+
| Name                 |  Lines |    LOC | Classes | Methods | M/C | LOC/M |
+----------------------+--------+--------+---------+---------+-----+-------+
| Controllers          |  10717 |   7997 |     127 |     830 |   6 |     7 |
| Helpers              |   2830 |   2069 |       0 |     258 |   0 |     6 |
| Jobs                 |   2614 |   1907 |      65 |     146 |   2 |    11 |
| Models               |  26731 |  15679 |     216 |    1285 |   5 |    10 |
| Mailers              |   1230 |    937 |      37 |     103 |   2 |     7 |
| Views                |  53051 |  47274 |       0 |       0 |   0 |     0 |
| JavaScripts          |   5990 |   3854 |       0 |     292 |   0 |    11 |
| Stylesheets          |  55785 |  48974 |       0 |       0 |   0 |     0 |
| Libraries            |  11701 |   8541 |     120 |     434 |   3 |    17 |
| Controller specs     |  19463 |  16730 |       2 |      32 |  16 |   520 |
| Decorator specs      |   2848 |   2412 |       0 |       0 |   0 |     0 |
| Feature specs        |    495 |    381 |       0 |       0 |   0 |     0 |
| Helper specs         |   3127 |   2686 |       0 |       0 |   0 |     0 |
| Job specs            |   7835 |   6713 |       0 |       1 |   0 |  6711 |
| Lib specs            |  10595 |   8797 |       0 |       5 |   0 |  1757 |
| Mailer specs         |   2965 |   2497 |      27 |      87 |   3 |    26 |
| Model specs          |  46887 |  39498 |       6 |       6 |   1 |  6581 |
| Policy specs         |     92 |     76 |       0 |       0 |   0 |     0 |
| Request specs        |   9657 |   8224 |       0 |       1 |   0 |  8222 |
| Serializer specs     |    253 |    203 |       0 |       0 |   0 |     0 |
| Service specs        |   2601 |   2227 |       0 |       1 |   0 |  2225 |
| System specs         |   8647 |   6808 |      74 |     167 |   2 |    38 |
| Validator specs      |    873 |    772 |       0 |      18 |   0 |    40 |
+----------------------+--------+--------+---------+---------+-----+-------+
| Total                | 286987 | 235256 |     674 |    3666 |   5 |    62 |
+----------------------+--------+--------+---------+---------+-----+-------+
  Code LOC: 137232     Test LOC: 98024     Code to Test Ratio: 1:0.7

3年前にモデル数が182、現在は216ということなのであまり増えていないですね。
このあたりは自分の設計でイベント型モデルを上手く見つけられていなかったことが原因かなと思っています。(Kaigi on Rails 2024 Railsの仕組みを理解してモデルを上手に育てるでも話されていましたね)

👷テストカバレッジは77%

3年前は87%ということなのでテストカバレッジは少し下がっているようです。高ければ高いほど良いわけでもないので、現状の割合がどういったものなのか詳細調査してみるのが良さそうです。

🤖テスト実行時間は8分

CircleCIでテストの実行〜デプロイまでを行っています。
現在はUnitテストとSystemテスト(Capybara)を並列で動かして8分でテストが完了しています。
3年前は5分ということなので少し遅くなっているようです。テスト時間短縮の改善を行って8分になりましたが開発者体験の観点でもより早くしていければと思います。

✨リリースにかかる時間は20分

ここは3年前と変わっていないようです。
2023年にインフラをHerokuからAWSに移行した関係でデプロイの方式が変わり、一時はデプロイに40分ほどかかってしまう時期もありましたが、SREチームが改善を行い20分にまで縮めることができました。
こちらもテスト実行時間同様、短ければ短いほど嬉しいところであるため、改善を進めています。

🚀レスポンス速度平均は99パーセンタイル約1000ms

99パーセンタイルで約1000msでした。
※3年前の記事では251msと書かれていますが何かの勘違いかも?
Google Search Consoleのウェブに関する主な指標では全てが『良好』のステータスとなっています。
99.9パーセンタイルになると稀にでる重いクエリの影響でレスポンスタイムが伸びてしまうのでここは現在改善中です。

👌さいごに

あまり表に出ない数字も含めまとめてみました。記事の通り、まだまだ足りない点や、より改善できる点が多くあります。
こういった改善活動は日々の開発業務をしながら、根本的な設計の見直しやテスト・デプロイ・レスポンス速度の高速化などを有志のメンバーで委員会的に行っています。
転職意思がなく雑談だけでも良いので、もっと深掘って聞いてみたいなどありましたらぜひXのDMでお声がけいただけると嬉しいです🙌

こちらはツクリンク株式会社のアドベントカレンダーの記事でした。
ぜひ他の記事も読んでいただけると嬉しいです🎉

Discussion