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

長期運用を支える Platform Engineering

長期運用を支える Platform Engineering

\積極的に技術発信を行なっております/

▽ Twitter/COLOPL_Tech
https://twitter.com/colopl_tech

▽ connpassページ
http://colopl.connpass.com

▽ COLOPL Tech Blog
http://blog.colopl.dev

COLOPL Inc.

June 30, 2023
Tweet

More Decks by COLOPL Inc.

Other Decks in Technology

Transcript

  1. 2 2017 年新卒として入社、運用タイトルのサーバーエンジニアを経て SRE チームを経て PE (Platform Engineering) チームへ 主にミドルウェアの更新対応やアプリケーションの保守性向上などに

    取り組んでいる PHP が結構好き 氏名  : 部署名 : 自己紹介 工藤 剛 技術基盤本部 第 3 バックエンドエンジニア部 サーバー基盤グループ SREチーム PE チーム
  2. • 速度と質のバランスがとても難しい ◦ 理想はもちろんテストコードがしっかりと書かれていること ◦ 猛烈な PDCA サイクルが求められる ▪ "試してみないとわからない"

    ことがとにかく多い! • 度重なるスクラップアンドビルド... ◦ テストを書いてもいつの間にか負債になる悪循環... • 速度を優先したばかりに保守性が低下していく悪循環 ◦ 新機能の開発にかかる工数が膨大化 ◦ 修正が意図しない箇所に影響 ◦ 後に保守する人がつらい思いをすることに 9 課題1: ゲームアプリケーションであるということ
  3. • サポート対象バージョンに追従する難しさ ◦ 特に PHP は破壊的変更が多い ◦ 前述の通り、テストも完全にカバーできているとは言い切れない ◦ "次の次"

    に非推奨になるコードが新たに書かれることもある... • "お行儀の悪いコード" への対応がままならない ◦ "今は動くが、将来的に非推奨になるようなコード" がレビューをすり抜けてしまう ▪ "${variableName}" 等 • 荒ぶる E_DEPRECATED ◦ 一人ですべてのコードをレビューするわけにもいかない 10 課題2: ミドルウェア更新への追従
  4. • "暗黙の約束" がどんどん増えていく ◦ 例: 引数に string 以外を渡しちゃダメだから "(string) 123"

    でキャストしてね ◦ 気付きようもないので新規にアサインされた人が罠を踏んでしまう • プロジェクトによって異なるお作法が生まれてしまう ◦ プロジェクト間のコンテキストスイッチが大変 ▪ array vs Collection ▪ JSON vs YAML ▪ Tab vs Space ▪ CSV vs TSV 11 課題3: 運用でカバーしてほしくない
  5. 昨今の PHP には強力な静的解析ツールが揃っている • PHPStan https://phpstan.org/ • Psalm https://psalm.dev/ また、静的解析結果を元にコードを自動修正

    (リファクタ) するツールもある • Rector https://getrector.org/ • PHP-CS-Fixer https://cs.symfony.com/ これらの活用を自ら推進・普及していく でも、そもそも静的解析って何? 12 静的解析
  6. "社内のサーバーエンジニアの共通認識" をPHPStan のルールにして共有 例: • mt_srand / mt_rand 関数の使用を検出 ◦

    なぜダメなのか: https://zenn.dev/zeriyoshi/articles/abd808d1c6d31b • 浮動小数点数丸め誤差の起きる数値演算を検出 • etc... 14 PHPStan の活用