Slide 1

Slide 1 text

PHPこそ OpenTelemetry が嬉しい つよナレ #1 PHPにまつわる話 @sadnessOjisan

Slide 2

Slide 2 text

自己紹介 ● 2019年の立ち上げ時期からTechTrainメン ター ● 2023年からTechBowlの技術アドバイザ リー ● 元々フロントエンドメインでのアドバイザ リーだったが、サービス分割・認証基盤 ・ETL整備などを通じ、全社を巻き込んだ設 計が必要となりPHPも始める ● PHPerKaigi2024登壇 https://speakerdeck.com/sadnessojisan/s ahatohahe-kawoli-jie-site-kontena1tutes hi-xing-siyou-phperkaigi2024

Slide 3

Slide 3 text

PHP、辛さとセットになりがち ● 言語機能(特に守りの部分)そのものが不足しがち ● 古くからある言語なので、古いシステムとも出会いがち ● FWとその周辺プラグインに頼ることが多く、ブラックボックスな開発をし がち そのコードベース、自信を持って改修できますか?

Slide 4

Slide 4 text

テストを書けば解決だが... ● そもそもテスト書いていますか?書けますか? ● DB接続や外部SaaSにアクセスするコードにテストを書けていますか? ● テストが書きやすい設計ですか? ● テストを書きやすくするための改善をCommitするためのテストはあります か? 後手でテストを追加するのは、簡単ではない

Slide 5

Slide 5 text

そんなあなたに OpenTelemetry ● テストをせずに動作確認するには、動作しているシステムを目視で確認すれ ばよい ● 呼ばれるはずのコードが呼ばれていなければバグが起きたとみなせる ● 本番環境での動作確認の精度をあげていこう

Slide 6

Slide 6 text

OpenTelemetry ● 可観測性を担保するためのフレームワーク ● トレースという機能で、「あるエンドポイントが呼ばれ た時に、こういう関数と関数にこういう引数が渡って、 こういう結果を返した」ということを出力できる ● ビジュアルで確認もできるし、引数もわかる

Slide 7

Slide 7 text

どうやって設定するの? ● Laravel はライブラリを入れて SDK をエントリポイントで初期化するだけで勝手に計 測される ● 詳しくは公式のガイドをチェック: https://github.com/open-telemetry/opentelemetry-php/blob/main/docs/laravel -quickstart.md

Slide 8

Slide 8 text

全てを勝手に自動で計測してくれるのですか? ● 答えはNO ● 自動計装と手動計装があり、SDKで自動計装はセットされる ● 自動計装ではあらかじめSDKが、有名ライブラリだけをフックして計装を挟 み込んでくれる(例: HTTP、SQL) ● 関数単位で計測ログを入れたければ、自分で計測コードを入れる https://opentelemetry.io/docs/languages/php/instrumentation/#trace

Slide 9

Slide 9 text

まとめ ● Opentelemetryを使えば、複雑なAPIの内部処理をトレースしてログとして 出力できる ● 複雑なAPIに後手でテストを書くのは難しいが、トレースを出せれば内部を 観察しながら動作確認ができ、コード編集時の動作確認に役に立てられる ● OpenTelemetryは内部実装をあまり変えることなく、トレースを出せる ● PHPコードベースの品質改善も大事だけど、やらかしたときの回復力を身に つけるのも、システム開発に効く