PHPカンファレンス2015に行ってきました(その2) #phpcon2015
本日はPHPカンファレンス2015に行って参りました。
この記事はこちらのエントリーの続きとなります。
フリマアプリ「メルカリ」の急成長を支えるエンジニアリング
nginxによるハイパフォーマンスネットワーク
- 大量の同時接続(数万)を軽快に捌ける
- メルカリはSPDY/3.1のゲートウェイを利用
- HTTP2には普及状況を見て移行するつもり
- 検索結果のキャッシュにnginxを使う
SlackでChatOPS
- やっていること
- デプロイ
- 勤怠管理
- アラートの通知
- CIの手動実行
いろんなサーバーからSlackに通知
- プロキシ立ててプロキシと通信するクライアントを各サーバーに配置しよう
- slackboard
ゼロダウンシステムデプロイ
- 昔はrsyncデプロイ
- ngx_dynamic_upstream
プッシュ通知基盤
- プッシュ通知リクエストをプロキシ
ログ分析基盤
- 200GB/Day
- 各サーバーからFluentdで転送
- Mercari\DataTrack
- Norikraによるログストリーミング処理
まとめ
- たくさんの工夫で高速なAPIサーバーと急成長する基盤作りを実現している
- 来年はPHP7対応かも
- バックエンドではGoを採用する場面も増えている
DMMのハイパーメディアオタサーの姫arimoが語るPhalcon
Phalconを選んだきっかけ
- 瞬間的に大量のアクセスを捌くことになった
- FuelPHPからPhalconへ移行する
使った感想
- ドキュメントが少ない
- 調査に時間がかかる
- でも、さほど拒絶反応はない
Phalconのバージョンについて
- 1.x系はC言語、2.x系はZephirで出来ています
- PHP5.6に上げたら2.x系に上げなくてはいけなくなった
Zephirとは
- Coreを見れなくてたまに困る
Phalconの闇
- ドキュメントが英語
- タイトルだけ日本語
- ORMの使い勝手
- サブクエリはORMでかけない
- メール送信用のパッケージがない
- APIからメールを送信する時、Viewディレクトリを作成した
- ViewはVoltが採用されている
- 他のテンプレートエンジンも使えます
- configのマージ事件
- 環境別にconfigを分けられない
- configを上書きする機能がないため、環境ごとにマージするようなコードを用意した
- PhalconのDIコンテナは使い方が要注意
- DIコンテナの中身を書き換えるのははまるが、remove してから入れればいいとのこと
- めんどくさそう。。
- DIコンテナの中身を書き換えるのははまるが、remove してから入れればいいとのこと
- IN句に空配列を渡すとfind文で全レコード取得出来るそのidを渡してdelete文を実行すると全レコードdelete出来ます
まとめ
やっぱり早いことには変わりないです!!
How to Build Efficient and Integrated Development Environment for The Team
「チーム開発において、効率的な統合的な開発環境をいかに作るか」
- なぜ「容易に構築可能な開発環境」を用意するべきか
- 管理しきれない
- 増えるミドルウェア•ソフトウェアにメンバーが追従出来ない
- 新メンバーがどうやって開発を始めたらいいか分からない
新人教育の話
- 優秀なひとが揃うチームだからこそ教育は重要
- ジョインして数日で活躍して貰えるか、一ヶ月後に活躍を始めるかで大きく違う
- キャッチアップに時間がかかる状況ってプロダクトの成長に影響を与えるし、ロスが発生する
開発環境構築
DataBaseサーバー
- 開発環境のデータをできるだけ本番に近づける
- QA環境(Staging環境)からデータを持ってくるの整合性が取れたデータで検証出来て良さそうな気がします
質疑応答
Q. 情報を伝える手段は??
A. Quita Team
Q. 開発をサポートする体制
A. 1. メンターを付ける。一日一回、1on1を必ずやる。
2. 教育のやり方を色々試す。密にコミュニケーションをとれる体制をとる。
Q. 開発と改善をバランスをとってやる基準
A. 自分の中で常に気をつけていること。本質的でないことはしない。
好きだから色々やりたくなるけど、意味があるものだけをやる。
続きはこちらです。
PHPカンファレンス2015に行ってきました(その3) #phpcon2015 - NissyBlog