今日は3連休の中日でしたが、蒲田で行われたPHPカンファレンスに行ってきました!
実は…。
ここ最近、PHPしか書いてない!!!
ぐらいPHPにどっぷりつかっている私です。(`・ω・´)
(プルリクはJavaとかjsとか見ますが)
何をやってるかというと、先日書いたように、弊社のお客様が3000社を突破したんですよ!!!
ありがたいことなんですが、エンジニアの方ならよくわかっていただけると思うんですが、お客様が増えると…
・トラフィックが増える
・データが増える
・想定されていなかった使い方をされるお客様もいっぱい出てくる
という技術面の問題に直面しています。(´ω`)
そして、めちゃくちゃソフトウェアアップデートをしてるんですよ。機能がめっちゃ増えてます。
複雑性というのが増えてます。
少ない人数で素早いリリース、素早い不具合対応、スケールの問題に対処するかのヒントを得るために、こういう機会は私にとって重要です。(`・ω・´)
昼過ぎから行きましたので、下記のセッションから見ました。
下記には私的なメモだけ書いておきます。
後日スライドなどが公開されると思います。(内容が間違ってたら申し訳ないです。)
Webアプリケーションのパフォーマンス・チューニングの勘所
https://fortee.jp/phpcon-2023/proposal/9dd2a5e3-5a3d-4d3b-b39f-0fb3e17bbd15
曽根 壮大さんという方のお話ですが、この方の話は以前も聞いたことがあって、とてもためになりました。
・Cloud watch log insightsが便利
・サーバーの状態を調べるのに、最初にOSのメトリクスを見るのがよい(CPU使用率とか)
病気の検査で体重を測るのと同じようなもの。
・デッドロックが頻発すると、CPU使用率が上がる
・デッドロックを完全になくすのは難しい。逆にタイムアウトを短くして、アプリでリトライするのがよいと思う。
・キャッシュは使わなくて済むなら使わないほうが良い
壊れたときに不具合対応が難しいから
・キャッシュは必ず一次データから取り出すべし
☆目の前のコードを直すことができるのは自分たちだけ という言葉が印象的でした。☆
スケーラブルサービス――疎結合に成長するシステムに不可欠な要素
https://fortee.jp/phpcon-2023/proposal/d81f49cf-009c-4953-af24-1582a827edef
成瀬 允宣さんという方のお話で、3月にもPHPerKaigiでこの方のセッションを聞いてとてもためになったので聞きました。
・サービスをスケールさせるのは、ソフトウェアをメッセージ駆動にするのがよい
・メッセージキューはありものを使ったほうがよい。Kafkaの名前が挙がってました。
・ただ、メッセージキューは使うのが難しい。順序保証やトランザクションの話が上がってました。
・イベントソーシングにする。ステートソーシングとは違う概念。
成瀬さんが、イベントソーシングにすると、よりオブジェクトの状態にあう、という話をされていたのが印象的でした。
インピーダンスミスマッチを解決できるのではないかという話でした。
はは~。インピーダンスミスマッチという言葉を私はこの日初めて知ったんですが、なるほど!と腑に落ちましたね。
インピーダンスミスマッチとはDBの中身は、ある日ある時の状態(ステート)なんだけど、コード上のオブジェクトは「なう」な状態を扱っていることが多いのでミスマッチになっていくという話みたいです。
イベントの方がオブジェクトのプロパティなどに近いので、このインピーダンスミスマッチを解決できるという話。
・イベントを記録しておく。そうすると、イベントのリプレイが可能
なんとDBを消すことさえできる。イベントをリプレイすれば戻せるわけなので!
・イベントの設計図を作る
・LaravelでもKafka使えるよ!しかし、Javaとかで使ったほうがいいです…。
実は今、私イベント駆動でちょうどイベントの設計を作ったりしているところなのでジャストにためになりました!!(`・∀・)ノ
成瀬さんに後でその感動を伝えたところ、前にお会いしたことを覚えてくれて
「あ、後藤さんですよね?」
って名前を覚えて頂いていたので感動しました!°(´ฅωฅ`)°。 成瀬さんは芸能人みたいな方ですね!( ˊᵕˋ )
篠田 北斗さんという方のお話でした。
いかにうまくPHPのソフトウェアを開発・メンテナンス・運用していくかということで実践的なお話ばかりでためになりました。
・readonly 使ってこ。(個人的な話ですが、使うの忘れちゃうんで!)
・MTTRの短縮化を目指す
・エラートラッキングツールとチャットツールを連携させる。ここではSentryの名前が挙がってました。
オオカミ少年にならないように毅然とした態度をとる。
→この話、どうしたらオオカミ少年にならないのか、毅然とした態度とは何なのか、懇親会で篠田さんに直接聞いちゃいました!
ウチでも、同じような構成(Sentry+Slack)でオオカミ少年化しているところが結構あるので…。(´ω`)
「Sentryでignoreするエラーを選べるのでそれでミュートすべし」
「Slackでエラーが来たらちゃんとつぶしていく」
おおー。教えて頂いてありがとうございました!┌o ペコッ
・ノートラブルシステムへの道 というスライドがよいので見る。
→見ました。https://speakerdeck.com/yamaz/notoraburusisutemuhenodao?slide=25
確かにいい話です。「機能追加がなくても、売れればシステムは傷み始める」というのがまさしくその通りだなと。
その後は、ちょっと休憩してて、LTを一通り見ました。
・Gitで直近1年間のファイル別変更回数を出す。その後、循環的複雑度を出す。
変更回数 × 循環的複雑度 = ソフトウェア保守のコスト
うわああああ 確かに!!
・知らないことは調べようがない
単純だけど、真実だな!って思います。
ネットだけで調べものしていると、「知らないことに遭遇できない」ということがよくあると思います。
なんと、今回900人ぐらいの人が参加したそうです!
大盛況ですね。
各地でPHP Conferenceが行われるらしいです。
その後、懇親会で多くの方とお話させて頂きました。
どんなプログラムを書いているかとか、今注目している技術とか、組織がかかえる問題とか、その方のキャリアとか、よもやまテックなことだけじゃないお話ができて楽しかった~ o(>▽<)o
Github Copilot導入しようか迷ってたんですが、結構導入しているとか、便利だよって話をお聞きして、ウチでも使って行こうと思いました!
皆さま有難うございました!!!
PHPカンファレンス