チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

PHPカンファレンス2018に参加して4つのセッションを聞いてきた時のメモ

僕は毎日PHPゴリゴリ書いているような人間じゃないけど、
一応関わりあるしでかいイベントっていうことで参加してきたメモです。
誤字脱字、まとめられてない箇所もあるけど誰かの参考になれば幸い。

開催→12/15 Sat. PHPカンファレンス2018@大田区産業プラザ Pio

@cosmeを5倍早くする

アイスタイルさん

〜あいさつ〜
この前24時間限定セールやったら1日4億円売れたら、
アクセス負荷で落ちたけどそれは今回話すところじゃない

今回の内容は全体速度じゃなく、一部のページのこと。

テーマは「1sec」、ページを1秒で開く!
なんの1秒かというと、今回はサーバーからのレスポンスと定義した。

今まではモノリシック、1つの巨大なコードになっていた。

・やったこと
1、コードを小さい単位で切り分ける
特定のパスだけ新規サーバに向けるようにロードバランサで設定した。

フロント:php phalconという最速フレームワークを採用
API:goa golang 定義書同時に作成できる
データ:elasticsearch  全文検索 オープンソース


データ同期
SQLserver をelastic searchにバッチで同期させる
kafka,rabbitMQ


elasticsearchにとってのインデックスとは?
→データの塊という意味
切り替え時はデータが全部AからBに入ってからAliaseをBに変更すればOK
(その後Aを消せば綺麗)


・最後に
数万ページの差分をみて検知するツールを開発した
もしかしたらOSS化するかも

・結果発表
ページの表示速度
1.1sec → 0.2secになった。
また離脱、回遊率は1.1倍〜1.2倍くらいになった


まとめ
・画面に必要なものだけは、高速データベースに分けて作成する
リグレッションテスト大事
・ロードバランサで一部ページずつ改修



phpを使う理由

SCOUTER CTO

入社時のときからも実はLaravel,Vueでやっていた

・なぜ今PHP

まずは入社2017年初頭で選択肢として上がった言語の特徴をみてみると・・

Ruby
→メリット
スタートアップがよくつかうので採用にもつながる
若い人多い
日本コミュニティ活発

→デメリット
採用競合強い
言語の表現力が高いから統一しづらい
フレームワーク規約がつらい、レールから外れるとつらい


Go
→メリット
シンプルで初心者でも入りやすい
静的で型付けだから凡ミスしない
軽量でどこでもバイナリ動く

→デメリット
Rubyより更に採用競合強い
ベンダリングバージョン管理が微妙かも?
高レベルな設計力が必要



対してLaravelのままでいくとすると・・?
→メリット
今までのコードが使える
WEBで爆速
まだポジションを築いている会社が少ない

→デメリット
サーバサイドにはなれない
HTTP通信辛い
PHPアレルギー症候群を採用できない(僕は宗教上PHPかけないんです!てひとがいるw)


PHPは遅いとよく言われているが、バージョンが7になってからはかなり早くなった。
そして今やLaravelはRailsを超えてるくらい人気である。


・会社のブランディング
当時、技術者集団としての認知がなかったので、Laravelを使うことでポジション取りに行った。


LaravelとVueを使うことは、ある程度の大きさまでは高速に動作する。
スタートアップなどは向いていそう。

・やったこと
発表をし続ける
ブログ立ち上げた
勉強会開く
コミュニティもつくった



・これからも使っていくかどうか?
静的チェック問題
→PHPStan、TravisCL、reviewdogを利用して対応。
エンジニアたるもの、問題解決には技術力で対応するべき。
ただしPHPの仕様上、どうしても難しいところもあるから多言語を並行して使っていくことも想定して構築するべき。


いずれ多言語になるという前提で構築することの具体策
→gRPCを使う
GraphQL,静的ジェネレーター



安全なアプリケーションのつくりかた

OWASP top10の話題
10種類あるが、今日は2つをピックアップする。

XML
外部実態がある
Json使えば問題はない

SSRF(サーバサイドリクエストフォージェリ)攻撃を受ける可能性がある
→攻撃対象はファイアーウォールないのサーバ
直接じゃなく、WEBサーバ踏み台にしてやられる可能性あり
EC2のCredentialがとれてしまう

対策
json,libxml2最新を使う



シリアライズ形式 wordpress welcart
→これもjsonつかえばOK
DBにもアクセスされるし、
カップ法律→カード番号を保護する法律は少ない。


伊織ネットショップ事件
2000人カード情報が流出した。


結論、カード情報非保持だとしても、偽の入力画面をだされたら終わり。




組織づくり

マネージャーがWEBサービスを育てるためにやってきたことを話します。


1.自己紹介
オミカレCTO たけともさん
soudai.hatenablog.com


2.WEBサービスを育てる
WEBサービスとは、いきものである。
昨日まで動いていたサービスでもディスク容量の圧迫やプログラムの問題、脆弱性など、
様々な要因で時間の経過とともに常に変わっていく。


・急にバズってしまって高負荷、対応
・マツコがテレビで婚活サービス紹介した→23時にサービスが高負荷になり止まる、対応
→意図しない変化が多い



3.組織
サービスはチームがつくる。
いいチームを作るのが大事。

大事なこと↓
組織は意図して作るが、チームは偶発的に作られる

組織とチームは別で考える。
・マネージャは組織から変えていける
・プレイヤーは文化から変えていける

結論
適切な問題が生まれれば
自然と解決する人が生まれる

適切な問題が一番重要。