DORAによる調査、State of DevOpsが定義し、書籍「LeanとDevOpsの科学」の広まりと共に浸透したFour Keysという指標は、ソフトウェアデリバリのパフォーマンスを示すだけでなく、組織そのもののパフォーマンスに因果関係があると知られています。
ところで、この「組織そのもののパフォーマンス」というのは一体なんのことなのでしょうか?
本トークでは、「組織そのもののパフォーマンス」を財務諸表の観点から眺めることでFour Keysとの関連性を考えてみようと思います。
■ 背景
サービスの管理用システムや社内専用システムはどの様にアクセスを制限していますか?
外部からアクセスができないよう会社のIPアドレス限定でアクセス許可を行う形が多いかなと思います。
しかし、これでは在宅勤務時など社外からアクセスできない弊害が……。
そこで、Google CloudのIdentity-Aware Proxy(IAP)を利用し、クローズドなサービスにどこからでも安全にアクセスできるようにします。
■ お話すること
・IAPを活用してサービスを守りつつ、安全にクローズドなサービスを公開していくための構成やポイントをお話します。
・IAPで認証されたことを前提に、パスワードレスで利用できるサービスとしたPHPのコードも交えてお話していきます。
■ 前提
・Google Cloudを利用した構成についてのお話です
・Googleアカウントを使った認証をベースにお話します
ISUCON は「いい感じにスピードアップコンテスト」の略で、ほぼ同様の処理をするよう作られた Web サービスの参考実装が複数の言語で用意され、参加者は競技中好きな言語を選んでその性能改善をしていきます。2022 年に実施された ISUCON12 の本選参加チームには PHP は使われなかったのですが、参考実装はきちんと存在しています。
このトークでは ISUCON12 本選問題の PHP 参考実装を使い、時間制限を気にせず、本選参加者の感想ブログの取り組みを平然とパクりつつ、PHP でどこまでスコアが伸びるか試した際の知見をお話します。
PHP はサービスをいい感じにスピードアップするのには不向きなのでしょうか。Go のような本選常連組の言語にはかなわないのでしょうか。それとも、本選で良い成績を残した他言語の参加者と同じ取り組みをすれば、同じようなスコアが出せるものなのでしょうか。
我々のチームではサービスのメトリクス監視であったり、パフォーマンス可視化にNew Relicを活用しています。
また、開発プロセスの改善や活動量からエンジニアを評価出来る環境作りのために、開発チームのパフォーマンスをNew Relicで可視化、活用しています。
本トークでは、サービスのパフォーマンス可視化だけではなく、開発チームのパフォーマンス可視化も行えるNew Relicについて、弊社の活用事例を時にはコードレベルまで掘り下げながら紹介させていただきます。
サービスや開発組織のパフォーマンスの可視化にご興味のある方々に響くトークをさせていただきます!
みなさんは CodeCrafters というサイトを知っていますか?
このサイトは少し複雑なソフトウェアを作りながらプログラミングを学ぶことができるサイトです。
このサイトではRedisやDockerコマンド、SQLite などの基本的な機能を作るような練習問題があります
Redisを作る課題にチャレンジしました。そこで学んだことを話そうとおもいます。
■話すこと
・CodeCraftersってどんなサイトなのか
・CodeCrafters で Redis を作る手順について
・Redisのプロトコル(RESP)について
■ターゲット
・PHPの基本的な文法はわかるけど次に何をするか悩んでいる人
・PHP以外の言語でなにか作りたいけど作りたいものがない人
ソフトウェア開発の現場に限らず、あらゆる改善活動において「正確な現状把握」は必要不可欠です。
パフォーマンスチューニングはその代表的な例でしょう。
では、リアーキテクチャリングやリファクタリングなどの改善においては、どのように「正確な現状把握」を行えばよいのでしょうか??
本トークでは、アーキテクチャの「正確な現状把握」に役立つアーキテクチャメトリクスという概念をご紹介し、後半ではPHPのアプリケーションで使えるツールをご紹介します。
本トークでお話しすること
"Lean と DevOpsの科学" で有名になった Four Keys など、最近はメトリクスという言葉をよく聞くようになりました。
ソフトウェアの改善においては、まずメトリクスを計測し、KPI を定め、改善を進めるのが王道です。
ところで、PHP のウェブアプリケーション開発で使えるメトリクス計測ツールは、どれくらいあって、何の指標が測れるのでしょうか?
一通り目についた計測ツールを試してみて、その結果をまとめてみます。
本トークで話すこと
ウェブアプリケーションが思ったほど速度が出ないときに、"Cache"を利用することは多いかと思います。 例えば、実行時間のかかる SQL クエリの結果を "Cache" したり、複雑な計算処理の結果を "Cache" したりです。
しかし、パフォーマンスが上がるはずなのに、思ったほど効果がでないということがあります。そんなときは、"Cache" の基本に立ち返って、理詰めで考えてみることをおすすめします。
本トークで話すこと
弊社は11月に新しいサービスをリリースいたしました!
約半年間という限られた期間の中で2つ目のサービスを開発することは、試行錯誤と学びの連続でした。皆さんも新サービス開発時にAPI設計や既存サービスとの棲み分けに頭を悩ませたことはありませんか?
この登壇では新サービスリリースまでに蓄積された開発ノウハウをご紹介できればと思います。
・新サービスAPIの設計、構築
・既存サービスとの棲み分け
・ログイン、メール基盤
・その他
・feature flag運用
・リリース前後の準備
『パフォーマンスを改善せよ!』突如下された指令...あなたはこのミッションをクリアしなくてはなりません。
しかし、「方法論を知っていても実施困難」「改善効果が測りにくい」「予測を立てづらい」などの様々な課題を抱えているのが実情です。
では、効率的に確実にこのミッションを遂行するにはどうすればよいのか?
すぱらしいソフトウェアのお医者さん、ロブ・パイクは言いました。「推測するな、計測せよ。」 なんかかっこいい。
このトークでは、この格言の通りにパフォーマンス改善に挑んだ実話を基に「効率的な正しいアプローチ」「パフォーマンス改善方法」をご紹介させてもらいます。
■話さない内容
・詳細なツールの使い方
・解析結果の読み方
■主な内容
・パフォーマンス改善方法の紹介
・パフォーマンス改善業務の進め方
・パフォーマンス改善の失敗談
メソッドインジェクション、使っていますか?
Laravelではコントローラーのインスタンス化の際にコンストラクタに明示された依存クラスを注入してくれる「コンストラクタインジェクション」だけでなく、メソッド実行時に引数に明示された依存クラスをフレームワーク側が自動で解決してくれる「メソッドインジェクション」と呼ばれる便利な仕組みがありますが、この便利機能はどうやったら実現できるのでしょうか?
今回のトークでは簡易ルーティングライブラリを実装して、その大まかな仕組みを実演してみたいと思います!
Webサイト制作を仕事として受けているか否かに関わらず、
企業から相談を受ける立場で仕事をしていると、定期的にやってくるのが「Webサイトがハッキングされた!」という駆込みです。
私は会社員時代も含め、かれこれ10回以上この手の相談を受けてきました。
そしてそのほとんどは、Webサイトのサーバにバックドアを設置された事案でした。
WordPress 等の普及によって、本来システム屋ではないWebサイト制作事業者が気軽に PHP を動かすようになったことがその大きな要因ですが、
それが PHP である以上、我々 PHPer にとっても他人事ではありません。
今回のセッションでは、実際に PHP でバックドアプログラムを書きながら、
・バックドアとは具体的にどのようなものか
・原因と対策
・我々 PHPer に何ができるのか
をお話しします。
昨年のPHPerKaigiで「エラー監視とテスト体制への改善作戦」というタイトルでチームへのテストコード推進と奮闘についてトークをしました。
https://fortee.jp/phperkaigi-2022/proposal/4a7e3ded-9134-4919-955c-ec7bf4491c0d
あれから一年。テスト体制がどのように変わってきたかの話と、テストコードを高カバレッジで維持したシステム開発・運用をして得た話をします。
【トーク対象】
プログラマやIT系エンジニアの実務は、(漫画やハリウッド映画でのイメージとは違い)ステークホルダーや同僚・部下との関係が欠かせず、絶え間ない学習・成長が必要で──とても「人間的な」側面が大きいものです。
何だって、人間を学ばないと!
「アドラー心理学」って言葉に聞き覚えは?仕事にどう役立つのでしょう。「認知負荷」って聞きますよね。その定義は説明できますか?
「言っている事が伝わらない」「教えても伸びない」等々、人間関係やメンタルモデルの問題は普段の仕事と密接に関わります
リーダーシップやコーチングを学ぶ中で出会った「こういう領域があるんだ」について共有します
PHP における参照に似た機能は、他の言語にも存在しています。C のポインタ、C++ の参照、Java の参照型、C# の参照渡し……。しかしこれらは、それぞれ細かな点で PHP のそれとは異なっています。
PHP における参照を完全に理解すべく、1) PHP レベルでの挙動を観察し、2) PHP 処理系 (https://github.com/php/php-src) のソースコードを追いかけます。
対象: 重箱の隅をつつきたい PHPer、または PHP の language lawyer になりたい人。PHP 処理系は C で書かれていますが、C の知識は (あまり) 要求しないようにするつもりです
目標: PHP の参照を、実装レベルで完全に理解すること、また、php-src を少しだけ探索できるようになること
話さないこと: 参照のメリット・デメリットや使うべき場面
Web系の開発に携わっていると、「作って終わり」ではなく「ちゃんと動き続けていること」が重要になります。
そのための行為が「監視」であり、その質を保証する特性が「可観測性(Observability)」です。
私はこれまで「開発」「運用」「保守」といった区分けの無いような小規模組織で過ごした時間が長く、その経験から「アプリの人こそ、監視や可観測性を強く意識すべきだ」と確信しています。
皆さんのチームでは、「システムが動いているか気にする人/関心が薄い人」といった分断は発生していませんか?
もしくは、「監視の必要性は理解しているが、”良い監視”って?」と悩んでいる人もいるかも知れません。
このトークでは、「なぜ監視を」「なぜアプリの人が」に触れつつ「可観測性とは何か」について考えを深めていきます。
みんな大好きComposer、もっと仲良くなりたいです。
仲良くなるにはどうすれば・・・やっぱりバラバラに解剖して、自分なりに構築してみることだと思います。
突き詰めれば、やっていることは「JSONを解釈して」「ネットワーク越しにファイルを落として」「ZIPを解凍して」「良い感じに展開すること」になります。
PHP自体の実行箇所(Pluginやscriptsの実行)を除けば、動かすことができるのでは・・?
Composerの一部の機能をGoで再発明してみると同時に、「Composerってそういう仕組なんですね」をシェアします!
レガシーなコードと向き合っているとリファクタは避けては通れないものです。
レガシーでなくてもコード書きながら「なんかイケてないんだよな〜」となってリファクタすることも多いかと思います。
このあたりのコツをお話できればと思います。
PHPのプロセスは非常に脆く、簡単に処理が停止してしまいます。
処理途中で切断され意図しないデータが残ったりするケース、皆さん誰しも経験があるんじゃないでしょうか?
シグナル制御を行うことで処理を安全に終了することができます!
本セッションでは、安全にプロセスを停止するためのシグナル制御について解説します。
皆さんはPHPのビルトインウェブサーバーを使ったことはありますか?
Laravelユーザの皆さんはphp artisan serveで馴染みがあると思います。
HerokuやECSへのDeploy時にphp artisan serveでWebサーバを起動する、といったサンプルが巷に大量に転がっています。
公式サイトさえこのような記述がされているというのが現状です。
ビルトインウェブサーバーを使った時にどういう弊害がおこるのか、実体験を踏まえて話していこうと思います。