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

More Decks by Shodai Suzuki

Other Decks in Business

Transcript

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

    Shodai Suzuki @SoartecL

    Meetup for Rails engineers 2019.10.30


    View full-size slide

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


    View full-size slide

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


    View full-size slide

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


    View full-size slide

  5. アジェンダ

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

    View full-size slide

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


    View full-size slide

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


    View full-size slide

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


    View full-size slide

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

    API

    API

    API


    View full-size slide

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

    API

    API

    API

    Auth


    View full-size slide

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

    画像


    View full-size slide

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


    View full-size slide

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


    View full-size slide

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

    API

    API

    API

    Auth


    View full-size slide

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


    View full-size slide

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


    View full-size slide

  17. 以前のバージョン


    Rails: 4.2

    Ruby: 2.3


    View full-size slide

  18. 3.classi_coreの存在


    View full-size slide

  19. classi_coreの存在


    View full-size slide

  20. classi_coreバンドルアプリ

    API

    API

    API

    Auth


    View full-size slide

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

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

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

    3. classi_coreの存在


    View full-size slide

  22. ゴール


    View full-size slide

  23. Rails 5.2.3

    Ruby 2.6系


    View full-size slide

  24. ~2020.03


    View full-size slide

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


    View full-size slide

  26. 私の立ち位置

    1. Rails自体を知っている

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

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


    View full-size slide

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


    View full-size slide

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


    View full-size slide

  29. 選定基準

    1. テストカバレッジ


    View full-size slide

  30. 選定基準

    1. テストカバレッジ

    2. ドメインの複雑度

    3. 依存gemの数


    View full-size slide

  31. 選定基準

    1. テストカバレッジ

    2. ドメインの複雑度

    3. 依存gemの数


    View full-size slide

  32. 選定基準


    View full-size slide

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

    いけるいける!

    いけるいける!


    View full-size slide

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


    View full-size slide

  35. classi_core統合


    View full-size slide

  36. classi_core統合

    classi_core


    View full-size slide

  37. classi_core統合


    View full-size slide

  38. classi_core統合


    View full-size slide

  39. classi_core統合

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


    View full-size slide

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


    View full-size slide

  41. バージョンアップ


    View full-size slide

  42. Rails

    バージョンアップ

    Ruby

    5.2

    5.0

    4.2

    2.3
 2.6

    2.5

    2.4


    View full-size slide

  43. バージョンアップ


    View full-size slide

  44. バージョンアップ

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

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

    ● ディレクター


    View full-size slide

  45. 品質担保


    View full-size slide

  46. 品質担保

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


    View full-size slide

  47. 品質担保

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

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


    View full-size slide

  48. 品質担保

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

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

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


    View full-size slide

  49. 品質担保

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

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

    ● ディレクター

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

    ● QAチーム


    View full-size slide

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


    View full-size slide

  51. 成功要因まとめ

    1. いけるいける精神

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

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


    View full-size slide

  52. 成功要因まとめ

    1. いけるいける精神

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

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


    View full-size slide

  53. 成功要因まとめ

    1. いけるいける精神

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

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


    View full-size slide

  54. 成功要因まとめ

    1. いけるいける精神

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

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


    View full-size slide

  55.   成果


    View full-size slide

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


    View full-size slide

  57. 作業時間


    View full-size slide

  58. 1ヶ月

    見積は220日でした


    View full-size slide

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


    View full-size slide

  60. 成果

    自信
 知見


    View full-size slide

  61. 成果

    自信

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

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


    View full-size slide

  62. 得たもの

    自信

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

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

    知見

    ● 技術的な知見

    ● プロセスの知見


    View full-size slide

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


    View full-size slide

  64. なので抜けて


    View full-size slide

  65. CREチーム立ち上げ


    View full-size slide

  66. CREチーム立ち上げ

    いけるいける!

    いけるいける!


    View full-size slide

  67. 自己紹介

    ● 鈴木翔大 @SoartecL

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

    ● 2018/10~ Classi

    ● CREチーム

    ● OSSコントリビューター

    ○ Rails

    ○ RailsGuide

    ○ chanko

    ○ elasticsearch_dsl


    View full-size slide

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


    View full-size slide

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


    View full-size slide

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


    View full-size slide

  71. 着手前の概算


    View full-size slide

  72. 今後の課題


    View full-size slide

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

    ● バージョンの追従は?

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

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

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

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

    ● 品質はどう担保する?

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

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

    ● だれがやる?

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

    ○ 自動化?


    View full-size slide