ClassiでのRuby/Railsバージョンアップの第一歩を踏み出した時の成功事例
ClassiのRuby/Railsバージョンアッププロジェクト始動物語 Shodai Suzuki @SoartecL Meetup for Rails engineers 2019.10.30
View Slide
Classiとバージョンアップ
アジェンダ ● Classiのサービスアーキテクチャ● バージョンアップの課題● やった事と成功要因● 成果まとめ● 自己紹介
Classiのサービスアーキテクチャ
Classiサービスアーキテクチャ
Classiサービスアーキテクチャ API API API
Classiサービスアーキテクチャ API API API Auth
Classiサービスアーキテクチャ 画像
バージョンアップの課題
1.アプリケーションの数
アプリケーションの数 API API API Auth
14
アプリケーションの数
2.バージョンの古さ
以前のバージョン Rails: 4.2 Ruby: 2.3
3.classi_coreの存在
classi_coreの存在
classi_coreバンドルアプリ API API API Auth
バージョンアップの課題 1. アプリケーションの数 2. 現行バージョンの古さ 3. classi_coreの存在
ゴール
Rails 5.2.3 Ruby 2.6系
~2020.03
いつ終わるの?見通しが立たない
私の立ち位置 1. Rails自体を知っている 2. Railsバージョンアップ経験有り 3. 社内のRailsアプリ全てにコミット
とりあえず1つやってよう
対象アプリケーションの選定
選定基準 1. テストカバレッジ
選定基準 1. テストカバレッジ 2. ドメインの複雑度 3. 依存gemの数
選定基準
成功要因1. いけるいける精神 いけるいける! いけるいける!
成功要因1. いけるいける精神
classi_core統合
classi_core統合 classi_core
classi_core統合 ● デベロッパーサクセスチーム
成功要因2. 技術的な問題は複数のエンジニアで解決
バージョンアップ
Rails バージョンアップ Ruby 5.2 5.0 4.2 2.3 2.6 2.5 2.4
バージョンアップ ● デベロッパーサクセスエンジニア ● プロダクトマネージャー ● ディレクター
品質担保
品質担保 1. 対面でのコードレビュー
品質担保 1. 対面でのコードレビュー 2. QAチームのリグレッションテスト
品質担保 1. 対面でのコードレビュー 2. QAチームのリグレッションテスト 3. カスタマーサクセスチームとテストケース洗い出し
品質担保 ● デベロッパーサクセスエンジニア ● プロダクトマネージャー ● ディレクター ● カスタマーサクセスチーム ● QAチーム
成功要因3. 非エンジニアの理解・協力
成功要因まとめ 1. いけるいける精神 2. 問題は複数のエンジニアで解決 3. 非エンジニア理解・協力
成果
着手からリリースまでの期間
3ヶ月
作業時間
1ヶ月 見積は220日でした
バージョンアップ起因の障害
0件
成果 自信 知見
成果 自信 ● 安全なバージョンアップ ● 見通しが立てれるように
得たもの 自信 ● 安全なバージョンアップ ● 見通しが立てれるように 知見 ● 技術的な知見 ● プロセスの知見
優秀なエンジニアがどんどん増えた
なので抜けて
CREチーム立ち上げ
CREチーム立ち上げ いけるいける! いけるいける!
自己紹介 ● 鈴木翔大 @SoartecL ● フリーランスエンジニア ● 2018/10~ Classi ● CREチーム ● OSSコントリビューター ○ Rails ○ RailsGuide ○ chanko ○ elasticsearch_dsl
ありがとうございました。
APENDIX
バージョンアップ計画工数
着手前の概算
13人年
今後の課題
いかに継続的にバージョンアップしていくか? ● バージョンの追従は? ○ 最新リリースバージョン? ○ 最新の1つ前のバージョン? ○ リリースバージョンではなく常にmasterを追従する? ■ https://github.blog/2019-09-09-running-github-on-rails-6-0/ ● 品質はどう担保する? ○ 毎回ユーザーテストをし直す? ○ テストの範囲は?レベルは? ● だれがやる? ○ 得意な人が集まってやる? ○ 自動化?