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

Quipper の開発現場 / Quipper devs embrace change

Quipper の開発現場 / Quipper devs embrace change

Rails Developers Meetup 2018 Day 4 Nouvelle Vague
ケータリングスポンサーPR
https://techplay.jp/event/702297

Fumiaki MATSUSHIMA

December 08, 2018
Tweet

More Decks by Fumiaki MATSUSHIMA

Other Decks in Programming

Transcript

  1. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    Quipper の開発現場
    (ケータリングスポンサーPR)
    @mtsmfm
    Fumiaki Matsushima
    Rails Developers Meetup 2018 Day 4
    Nouvelle Vague #railsdm

    View Slide

  2. #megurorb 文字化け、あるいはワークアラウンドとの戦い
    ➔ Web Dev at Quipper
    ➔ Ruby と麻雀と DbD が好き
    ➔ 西日暮里.rb 主催
    ➔ GraphQL Tokyo 主催
    @mtsmfm.inspect

    View Slide

  3. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    https://github.com/quipper/handbook/blob/1280bd47fcfcafed8b0b402786ce65ff5ee681b4/company-profile-ja.md

    View Slide

  4. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)

    View Slide

  5. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    https://studysapuri.jp/

    View Slide

  6. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    https://www.youtube.com/watch?v=_99NdvPhNjU

    View Slide

  7. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    https://www.google.co.jp/search?q=History+of+Quipper+youtube&oq=History+
    of+Quipper+youtube

    View Slide

  8. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    Quipper の開発現場

    View Slide

  9. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)

    View Slide

  10. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    Quipper の開発現場
    == 分断されたモノリス

    View Slide

  11. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    https://speakerdeck.com/qsona/think-about-divided-monolith?slide=9

    View Slide

  12. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    複数の Rails アプリケーション

    View Slide

  13. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    共有されたモデル、DB

    View Slide

  14. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    先生が XX を入力して
    生徒に表示されるように
    したい

    View Slide

  15. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    1. Schema にカラム追加

    View Slide

  16. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    2. 先生アプリの Schema を更新

    View Slide

  17. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    3. 先生アプリの API を実装

    View Slide

  18. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    4. 先生アプリのフロントを実装

    View Slide

  19. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    5. 生徒アプリの Schema を更新

    View Slide

  20. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    6. 生徒アプリの API を実装

    View Slide

  21. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    7. 生徒アプリのフロントを実装

    View Slide

  22. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    という作業をいろんなチームが
    いろんな思惑で行う

    View Slide

  23. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    共通処理だと思ったから Schema に置い
    たけれどやっぱり生徒アプリ固有感がある
    から生徒アプリに置こう

    View Slide

  24. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    1. Schema から削除
    2. API の Schema を更新
    3. API に追加

    View Slide

  25. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    チーム A
    1. Schema から削除
    2. API の Schema を更新
    3. API に追加
    チームB
    1. カラムを追加
    2. API の Schema を更新
    3. API の実装
    1 2
    3

    View Slide

  26. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    Schema を更新したら
    API のテストが落ちる

    View Slide

  27. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    慎重に非互換を避ければ
    できなくはないが...

    View Slide

  28. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    社内共有ライブラリ
    しかもモデル
    どこまでが公開API?

    View Slide

  29. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    モノリスが "分断"
    されている

    View Slide

  30. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    モノリスはモノリスとして
    テストしたい

    View Slide

  31. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    Monorepo

    View Slide

  32. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)

    View Slide

  33. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    非互換な変更に
    PR で気づける

    View Slide

  34. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    あちこちに関連 PR いっぱい出
    さなくて済む

    View Slide

  35. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    共有部分を減らせば
    マイクロサービスへの
    移行も可能

    View Slide

  36. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    1リポジトリにすることで
    システム全体を示す
    リビジョンが得られる

    View Slide

  37. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    モノリスでも
    マイクロサービスでも
    システム全体の自動テストが
    容易になる

    View Slide

  38. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    課題

    View Slide

  39. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    https://speakerdeck.com/yuyatakeyama/how-quipper-works-with-circleci?slide=14

    View Slide

  40. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    ツール、サービスが
    1リポジトリ
    1アプリ前提なことが多い

    View Slide

  41. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    まとめ

    View Slide

  42. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    Quipper の開発現場

    View Slide

  43. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    Quipper の開発現場
    == 昨日より早く、より楽しく開発が
    できるように
    改善し続けられる現場

    View Slide

  44. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    分断されたモノリスを
    選んだことで
    成長速度を支えた側面は
    間違いなくある

    View Slide

  45. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    - 開発者数の増加
    - 機能の複雑化
    - 顧客数の増加
    - 方針の変更

    View Slide

  46. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    システムを取り巻く
    状況は変わり続ける

    View Slide

  47. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    Monorepo が
    うまくいくかは
    まだわからない

    View Slide

  48. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)
    “問題は変化ではない。
    変化はいずれにしても起きる
    ものだ。問題はむしろ、我々
    が変化に対応できないことに
    ある。”
    エクストリームプログラミング 2nd Edition p.9 より

    View Slide

  49. #railsdm Quipper の開発現場 (ケータリングスポンサー
    PR)

    View Slide