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

モノリスな​プロダクトの​「ほど​よい」​リプレイス戦略 / A "Just Right" ...

モノリスな​プロダクトの​「ほど​よい」​リプレイス戦略 / A "Just Right" Replacement Strategy for Monolithic Products

More Decks by コドモン開発チーム

Transcript

  1. 14 10年選手のプロダクトです • 「早くたくさん機能を作る」を優先してきた過去 • DB~バックエンド~フロントまで、幅広くいわゆる「技術負債」がある状態 • 適切ではない構造のテーブル定義がフロントに露出している。   当然、ドメインモデルは存在しない。

      テーブル定義変えたい? アクセス箇所を洗い出そう! • ちょっとした変更にもすごく気を使う。このグローバル変数参照されすぎ〜 • 実質スクリプトなPHPとJSファイル。とあるControllerは5000行!
  2. 48 ストラングラーフィグパターン • システム全体をリプレイスするのではなく、   要所を少しずつ新しくしていく • 古いソースと新しいソースの間には腐敗防止層を   置いて、レガシーの複雑さを隠蔽する

    ※ 狭義では、クライアントからのリクエストを新旧システムに振り分ける実装を指す 言葉のようですが、今日はMartin Fowlerのサイトに記載された広義の意味で扱いま す ※ 画像はイチジクではなく、いかにもイチジクがありそうだけどなかった八丈島の光 景です(先々週行きました)。素敵なところなのでぜひ。
  3. 61 61 割と複雑な判定要素 • 宛先の種類 ◦ 個人宛 ◦ クラス宛 (さくら組、とら組) •

    卒園済み/入園前 • 園児のクラスの在籍履歴 • 公開期限 • … お子様が複数人いるケース • 異なる園に所属 • 同じ園に所属 • 片方だけ卒園済み • … 公開対象の判定
  4. 62 モデル化 プロパティ • 公開期限 • 添付されている写真 ロジック • 公開対象の判定

    Domain Service AvailablePhoto Collections 保護者に対して公開されている写真
  5. 66 66 割と複雑な判定要素 • 宛先の種類 ◦ 個人宛 ◦ クラス宛 (さくら組、とら組) •

    卒園済み/入園前 • 園児のクラスの在籍履歴 • 公開期限 • … お子様が複数人いるケース • 異なる園に所属 • 同じ園に所属 • 片方だけ卒園済み • … 公開対象の判定
  6. 80 モデル化 プロパティ • 公開期限 • 添付されている写真 ロジック • 公開対象の判定

    Domain Service AvailablePhoto Collections 保護者に対して公開されている写真
  7. 82 モデル化: 拡張性 思い出として残せる写真を増やすには • 具象クラスの実装 • 変換ロジックの実装 • だけで済む (はず) <<interface>>

    IAvailablePhotoCollections AlbumPhotoCollections (由来: アルバム機能) ServiceAPhotoCollections (由来: 機能A) 既存機能 拡張機能
  8. 118 まとめ、あらためて「ほどよく」やっていくということ • ユーザーに届く価値(あるいは事業の成果)を最大化する • やりすぎない・必要なところだけ整える • しかし機能追加だけを追い求めない。   コードベースの問題や、SLOに対してのリスクなど、開発者だけが

      知っていることもあるはず。 • 全員が気持ちよく譲りあって最高のロードマップを作り続け、実現し続ける ※ 今日は時間の都合で入りきらなかったのですが、このプロセスの中で「開発者だけが情報を持っている、SLO的にマ ズいのでなんとかした方がいい箇所」をロードマップに載せる活動も行っています
  9. WEBアプリケーションエンジニア • ユーザーからのフィードバックをもとにした機能改善 • レガシーコードのリファクタリングやリプレイス • 新機機能や新規プロダクトの開発 • 開発生産性向上 SREエンジニア

    • プラットフォームエンジニアリングの推進 • オブザーバビリティの組織展開 • システムセキュリティの強化 • AWS環境の設計・構築・運用、システムの可観測性と信頼 性の向上 エンジニアリングマネージャー • 採用・評価運用の改善の推進 • 開発ロードマップの議論の推進 • 開発部全体のプロセス改善の推進 • 自己組織化の促進 やることの例 やることの例 やることの例 126 色々な職種・役割において仲間を募集中です 詳しい開発チームの情報はこちら