Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ClassiのRuby/Railsバージョンアップ始動物語

Shodai Suzuki
October 30, 2019

 ClassiのRuby/Railsバージョンアップ始動物語

ClassiでのRuby/Railsバージョンアップの第一歩を踏み出した時の成功事例

Shodai Suzuki

October 30, 2019
Tweet

Other Decks in Business

Transcript

  1. ClassiのRuby/Railsバージョン
    アッププロジェクト始動物語

    Shodai Suzuki @SoartecL

    Meetup for Rails engineers 2019.10.30


    View Slide

  2. Classiとバージョンアップ


    View Slide

  3. Classiとバージョンアップ


    View Slide

  4. Classiとバージョンアップ


    View Slide

  5. アジェンダ

    ● Classiのサービスアーキテクチャ
    ● バージョンアップの課題
    ● やった事と成功要因
    ● 成果まとめ
    ● 自己紹介

    View Slide

  6. Classiのサービスアーキテクチャ


    View Slide

  7. Classiサービスアーキテクチャ


    View Slide

  8. Classiサービスアーキテクチャ


    View Slide

  9. Classiサービスアーキテクチャ

    API

    API

    API


    View Slide

  10. Classiサービスアーキテクチャ

    API

    API

    API

    Auth


    View Slide

  11. Classiサービスアーキテクチャ

    画像


    View Slide

  12. バージョンアップの課題


    View Slide

  13. 1.アプリケーションの数


    View Slide

  14. アプリケーションの数

    API

    API

    API

    Auth


    View Slide

  15. 14


    View Slide

  16. アプリケーションの数


    View Slide

  17. 2.バージョンの古さ


    View Slide

  18. 以前のバージョン


    Rails: 4.2

    Ruby: 2.3


    View Slide

  19. 3.classi_coreの存在


    View Slide

  20. classi_coreの存在


    View Slide

  21. classi_coreバンドルアプリ

    API

    API

    API

    Auth


    View Slide

  22. バージョンアップの課題

    1. アプリケーションの数

    2. 現行バージョンの古さ

    3. classi_coreの存在


    View Slide

  23. ゴール


    View Slide

  24. Rails 5.2.3

    Ruby 2.6系


    View Slide

  25. ~2020.03


    View Slide

  26. いつ終わるの?見通しが立たない


    View Slide

  27. 私の立ち位置

    1. Rails自体を知っている

    2. Railsバージョンアップ経験有り

    3. 社内のRailsアプリ全てにコミット


    View Slide

  28. とりあえず1つやってよう


    View Slide

  29. 対象アプリケーションの選定


    View Slide

  30. 選定基準

    1. テストカバレッジ


    View Slide

  31. 選定基準

    1. テストカバレッジ

    2. ドメインの複雑度

    3. 依存gemの数


    View Slide

  32. 選定基準

    1. テストカバレッジ

    2. ドメインの複雑度

    3. 依存gemの数


    View Slide

  33. 選定基準


    View Slide

  34. 成功要因1. いけるいける精神

    いけるいける!

    いけるいける!


    View Slide

  35. 成功要因1. いけるいける精神


    View Slide

  36. classi_core統合


    View Slide

  37. classi_core統合

    classi_core


    View Slide

  38. classi_core統合


    View Slide

  39. classi_core統合


    View Slide

  40. classi_core統合

    ● デベロッパーサクセスチーム


    View Slide

  41. 成功要因2. 技術的な問題は複数のエンジニアで解決


    View Slide

  42. バージョンアップ


    View Slide

  43. Rails

    バージョンアップ

    Ruby

    5.2

    5.0

    4.2

    2.3
 2.6

    2.5

    2.4


    View Slide

  44. バージョンアップ


    View Slide

  45. バージョンアップ

    ● デベロッパーサクセスエンジニア

    ● プロダクトマネージャー

    ● ディレクター


    View Slide

  46. 品質担保


    View Slide

  47. 品質担保

    1. 対面でのコードレビュー


    View Slide

  48. 品質担保

    1. 対面でのコードレビュー

    2. QAチームのリグレッションテスト


    View Slide

  49. 品質担保

    1. 対面でのコードレビュー

    2. QAチームのリグレッションテスト

    3. カスタマーサクセスチームとテストケース
    洗い出し


    View Slide

  50. 品質担保

    ● デベロッパーサクセスエンジニア

    ● プロダクトマネージャー

    ● ディレクター

    ● カスタマーサクセスチーム

    ● QAチーム


    View Slide

  51. 成功要因3. 非エンジニアの理解・協力


    View Slide

  52. 成功要因まとめ

    1. いけるいける精神

    2. 問題は複数のエンジニアで解決

    3. 非エンジニア理解・協力


    View Slide

  53. 成功要因まとめ

    1. いけるいける精神

    2. 問題は複数のエンジニアで解決

    3. 非エンジニア理解・協力


    View Slide

  54. 成功要因まとめ

    1. いけるいける精神

    2. 問題は複数のエンジニアで解決

    3. 非エンジニア理解・協力


    View Slide

  55. 成功要因まとめ

    1. いけるいける精神

    2. 問題は複数のエンジニアで解決

    3. 非エンジニア理解・協力


    View Slide

  56.   成果


    View Slide

  57. 成果


    View Slide

  58. 着手からリリースまでの期間


    View Slide

  59. 3ヶ月


    View Slide

  60. 作業時間


    View Slide

  61. 1ヶ月

    見積は220日でした


    View Slide

  62. バージョンアップ起因の障害


    View Slide

  63. 0件


    View Slide

  64. 成果

    自信
 知見


    View Slide

  65. 成果

    自信

    ● 安全なバージョンアップ

    ● 見通しが立てれるように


    View Slide

  66. 得たもの

    自信

    ● 安全なバージョンアップ

    ● 見通しが立てれるように

    知見

    ● 技術的な知見

    ● プロセスの知見


    View Slide

  67. 優秀なエンジニアがどんどん増えた


    View Slide

  68. なので抜けて


    View Slide

  69. CREチーム立ち上げ


    View Slide

  70. CREチーム立ち上げ

    いけるいける!

    いけるいける!


    View Slide

  71. 自己紹介

    ● 鈴木翔大 @SoartecL

    ● フリーランスエンジニア

    ● 2018/10~ Classi

    ● CREチーム

    ● OSSコントリビューター

    ○ Rails

    ○ RailsGuide

    ○ chanko

    ○ elasticsearch_dsl


    View Slide

  72. ありがとうございました。


    View Slide

  73. APENDIX


    View Slide

  74. バージョンアップ計画工数


    View Slide

  75. いつ終わるの?見通しが立たない


    View Slide

  76. 着手前の概算


    View Slide

  77. 13人年


    View Slide

  78. 今後の課題


    View Slide

  79. いかに継続的にバージョンアップしていくか?

    ● バージョンの追従は?

    ○ 最新リリースバージョン?

    ○ 最新の1つ前のバージョン?

    ○ リリースバージョンではなく常にmasterを追従する?

    ■ https://github.blog/2019-09-09-running-github-on-rails-6-0/

    ● 品質はどう担保する?

    ○ 毎回ユーザーテストをし直す?

    ○ テストの範囲は?レベルは?

    ● だれがやる?

    ○ 得意な人が集まってやる?

    ○ 自動化?


    View Slide