レガシーシステムのおそうじ / Tidying legacy systems
by
Sansan
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
レガシーシステムのおそうじ Sansan株式会社 加畑博也
Slide 2
Slide 2 text
自己紹介 - 加畑 博也(Kabata Hiroya) - @kabaome - 基盤チーム - Webエンジニア
Slide 3
Slide 3 text
今日のおはなし - レガシーシステムとは - おそうじの事例 - おそうじガイド - まとめ
Slide 4
Slide 4 text
レガシーシステムとは
Slide 5
Slide 5 text
レガシーシステムとは:定義 “ 私の定義は非常に広いもので、 保守または拡張が困難な既存の プロジェクトなら、なんでも「レガ シー」(legacy)と呼ぶことにしてい る。”
Slide 6
Slide 6 text
レガシーシステムとは:特徴 - 古い - 大きい - 引き継がれている - ドキュメントが不十分
Slide 7
Slide 7 text
レガシーシステムとは
Slide 8
Slide 8 text
おそうじの事例
Slide 9
Slide 9 text
おそうじの事例 事例1. 名刺画像処理アーキテクチャの刷新 事例2. 名刺データ量の削減 事例3. サンプル名刺の撤廃
Slide 10
Slide 10 text
おそうじの事例 事例1. 名刺画像処理アーキテクチャの刷新 事例2. 名刺データ量の削減 事例3. サンプル名刺の撤廃
Slide 11
Slide 11 text
事例1. 名刺画像処理アーキテクチャの刷新:背景 「名刺画像のid」と「S3のkey」の変換 名刺画像サイズの正規化 S3アップロード失敗時のバックアップ
Slide 12
Slide 12 text
事例1. 名刺画像処理アーキテクチャの刷新:課題 - 信頼性 - 単一障害点、名刺画像データが消失するリスク - 性能 - 名刺の取り込み量が増えると、リソース(CPU/Network)が不足 - メンテナンス性 - ブラックボックス化、技術ノウハウの不足
Slide 13
Slide 13 text
事例1. 名刺画像処理アーキテクチャの刷新:方法
Slide 14
Slide 14 text
事例1. 名刺画像処理アーキテクチャの刷新:結果 - 信頼性向上 - SDKによるリトライ・適切な例外処理 - 性能向上 - 画像サーバを経由しない - メンテナンス性向上 - アプリケーションコードに組み込み
Slide 15
Slide 15 text
おそうじの事例 事例1. 名刺画像処理アーキテクチャの刷新 事例2. 名刺データ量の削減 事例3. サンプル名刺の撤廃
Slide 16
Slide 16 text
事例2. 名刺データ量の削減:背景 - データベースは手を入れにくい - レガシー化しやすい - 不要っぽいカラム - 名刺データテーブルにある、 全文検索用のカラム - どうやら使われていない - 確証はない
Slide 17
Slide 17 text
事例1. 名刺画像処理アーキテクチャの刷新:課題 - 不要なカラム? - データベース容量を不必要に圧迫する - アプリケーションで不必要に考慮しなければならない - パフォーマンスを劣化させる(PostgreSQLでHOTが効きにくい) https://github.com/postgres/postgres/blob/master/src/backend/access/heap/README.HOT
Slide 18
Slide 18 text
事例2. 名刺データ量の削減:方法 1. アプリケーションコードからの暗黙的な参照を消す 2. 開発環境の対象カラムをRENAMEしてしばらく放置する 3. 本番環境の対象カラムをRENAMEしてしばらく放置する 4. 本番環境の対象カラムをDROPする
Slide 19
Slide 19 text
事例2. 名刺データ量の削減:結果 データベース容量にがっつり余裕ができた
Slide 20
Slide 20 text
おそうじの事例 事例1. 名刺画像処理アーキテクチャの刷新 事例2. 名刺データ量の削減 事例3. サンプル名刺の撤廃
Slide 21
Slide 21 text
事例2. サンプル名刺の撤廃:背景 新規ユーザ登録時、システムが自動で登録する名刺
Slide 22
Slide 22 text
事例2. サンプル名刺の撤廃:課題 - ユーザ一括登録時の性能ボトルネックになる - ストレージを無駄に消費する - サンプルとそれ以外の分岐がシステム/UIを複雑化する
Slide 23
Slide 23 text
事例2. サンプル名刺の撤廃:方法 1. サポート部にヒアリング、要件を整理する - 既存のサンプル名刺をどうするか? 2. タスクを整理する - ユーザとのコミュニケーション => サポート部 - UI変更、ユーザ登録コードの修正 => 開発部 3. サンプル名刺の登録を撤廃する
Slide 24
Slide 24 text
事例2. サンプル名刺の撤廃:結果 性能改善&UIの改善により利用率が向上した
Slide 25
Slide 25 text
おそうじガイド
Slide 26
Slide 26 text
おそうじガイド 計測・分解・合意
Slide 27
Slide 27 text
おそうじガイド 計測・分解・合意
Slide 28
Slide 28 text
おそうじガイド:計測 - 課題の定量化 - 「なんとなくよくない」のはみんなわかっている - 初手としての計測 - 計測した結果そのものは負債にならない - 「未知である」ということがレガシー化を促進する
Slide 29
Slide 29 text
おそうじガイド:計測 - 余談:試行錯誤も共有する
Slide 30
Slide 30 text
おそうじガイド:計測 事例 計測したもの 名刺画像処理 アーキテクチャの刷新 刷新前後のレスポンスタイム、画像登録から参照までの タイムラグ、参照頻度、画像サーバのリソース状況、画 像サーバのインスタンス費用、 名刺データ量の削減 DROP前後のテーブル(DB)サイズ、パフォーマンス、ス ケールアウト費用、 サンプル名刺の撤廃 撤廃前後のパフォーマンス、S3ストレージの利用料、
Slide 31
Slide 31 text
おそうじガイド 計測・分解・合意
Slide 32
Slide 32 text
おそうじガイド:分解 - スコープの分解 - 要件は際限なく増幅する - 「やる」と「やらない」の意思決定を明確にする - タスクの分解 - 最小単位のタスクを考える - その上で、「いつだれがやるのか」を考える - リスクの分解 - 複数のリスクを同時にハンドルしようとしない
Slide 33
Slide 33 text
おそうじガイド:スコープの分解 事例 やる やらない 名刺画像処理 アーキテクチャの刷新 画像サーバを TERMINATEする 画像サイズ正規化の 処理を改善する 名刺データ量の削減 テーブルAの 検索用カラムをDROPする テーブルA以外の 検索用カラムをDROPする サンプル名刺の撤廃 サンプル名刺の 新規登録をやめる 既存のサンプル名刺を 削除する
Slide 34
Slide 34 text
おそうじガイド:タスクの分解 - 必要に応じて他チームへ依頼する
Slide 35
Slide 35 text
おそうじガイド:リスクの分解 - 仕様の考慮漏れリスク - 愚直な手動テスト、歴史を知る人に聞く - 想定外の負荷リスク - ユーザ毎・アプリケーション毎に段階を分ける
Slide 36
Slide 36 text
おそうじガイド 計測・分解・合意
Slide 37
Slide 37 text
おそうじガイド:合意 - ステークホルダーとの合意 - “正しい情報があれば正しい判断が下せる” - 事業上(ユーザ)のメリットを言語化する - 開発メンバーとの合意 - 他チームにタスクを依頼する - 「なんのためにやるのか」を繰り返し伝える
Slide 38
Slide 38 text
おそうじガイド:合意 プロジェクト 開発上のメリット 事業上のメリット 名刺画像処理 アーキテクチャの刷新 シンプルになる 速くなる、画像サーバの 維持コストが削れる 名刺データ量の削減 シンプルになる データベース費用が削れる サンプル名刺の撤廃 シンプルになる UIが改善し利用率向上す る、速くなる
Slide 39
Slide 39 text
まとめ https://buildersbox.corp-sansan.com/entry/2018/12/11/110000
Slide 40
Slide 40 text
まとめ “本書を通じて私は「レガシー」(legacy)を、何か悪い言 葉のように扱ってきたが、そうする必要はない。望むと 望まないとに関わらず、我々は次世代の開発者に遺産 (legacy)を残すのだから、できるだけのことをして、誇 らしい遺産にしよう。” 『レガシーソフトウェア改善ガイド』 https://www.shoeisha.co.jp/book/detail/9784798145143
Slide 41
Slide 41 text
No content