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

20年モノの巨大Webサービスの開発継続戦略 - ミドルウェアのバージョンアップとの向き合い方

20年モノの巨大Webサービスの開発継続戦略 - ミドルウェアのバージョンアップとの向き合い方

PHP Conference Japan 2021 の登壇資料です。

penguin045

October 02, 2021
Tweet

More Decks by penguin045

Other Decks in Programming

Transcript

  1. #phpcon 開発と「価値」 開発という仕事を「価値」を軸に考えてみます • 価値を増やすための開発 ◦ ビジネスを成長させる ◦ 新機能や機能向上が目に見えてわかる •

    価値を落とさないための開発 (改善) ◦ サービスの価値は上がらない ◦ 脆弱性対応、MWのバージョンアップやリファクタリングが該当
  2. #phpcon 開発組織への信用の低下 • 積み重ねの恐ろしさ ◦ 過去十数年分の技術的負債 ◦ 何度も過ぎる納期 ◦ 年々増加する不具合

    • 開発組織以外からはつらさが見えにくい ◦ 専門分野以外は誰しもそのようなもの ◦ 開発組織もゆでガエルになっているケースもありうる
  3. #phpcon 前章のおさらい • 「価値」とはお金を稼ぐ力 • 開発リソースは「価値」の向上に使いたくなりがち • コードをきれいにすることは「価値」を向上させない ◦ と思われている

    ◦ 少なくとも簡単に見積もれない • 改善は、差し迫った損失を避けるモチベーションで承認される ◦ そして私たちはそれを改善のチャンスと誤解しやすい
  4. #phpcon よくあるつらみ • 影響も規模も大きすぎて途方に暮れる ◦ 全ソースが対象なんて当たり前 • 問題が大きいのに期間が短い • 過去の作業の経験がのこっていない

    ◦ 数年に一度だったりするため • ソースの改善個所が多すぎてあれもこれも不安になる • つらいプロジェクトになりそうで怖い
  5. #phpcon 認識のギャップに気づく • 今必要なのは「MWのバージョンアップ」 ◦ 抜本的な改善じゃないんですよね • だから、大きなコストはかけられない --------- ここにギャップがある

    ----------- • 開発チームの眼前には問題が山積みのソースコード ◦ 長年積み重なった技術的負債 • せっかく直せるのに・・・
  6. #phpcon まずは言葉の定義から • 戦略 ◦ 組織の目標達成へ向けた大局的・長期的な視点での計画 • 作戦 ◦ 戦略をどのような手段で実行するか

    ◦ 戦い方・シナリオとも言い換えられる • 戦術 ◦ 作戦遂行の具体的手法 ◦ 勝ち方とも言い換えられる
  7. #phpcon 戦略立案 • 普段の開発 ◦ 組織の戦略である「価値」向上を進める ◦ いつも通り進める • NWのバージョンアップ

    ◦ 組織の戦略を妨げないようにしないといけない ◦ 普段の開発への影響を最小に抑える
  8. #phpcon PostgreSQL • 9.6 => 13 へバージョンアップ ◦ oidの廃止がかなり痛手で、戦々恐々としていた •

    戦術を立てるために、対象を見極める ◦ 結果想像以上に影響が少なく、あっけなく終わった • 開発チーム全体を活用した不具合検出は有効だった
  9. #phpcon PHP • まずは対象を見極める ◦ 範囲は非常に多いが、ロジックを全部見直すような影響はなかった ◦ 挙動の変更などはできるだけ”なかったこと”にすればいけそう • 必要な修正はほとんど置換できるようにした

    ◦ そのため、一瞬で修正して並行で開発しているメンバーに展開できた • 個別でプログラムを修正したのは数えるほど • ここでもチーム展開後のバグだしが有効だった
  10. #phpcon PHPで取った戦術 範囲の広い修正作業は一度に終わらせる • 挙動変更はすべてラップする ◦ PHP7との挙動差がないように • ラップ関数の適用は自動でできるように ◦

    PhpStrom の構造置換はとても便利 • 個別対応が必要なケースはやむなし ◦ 余裕があるならPHP7で動くコードはこまめにマージしてもいいかも ◦ ケースバイケースなのでいろいろ言えない