読者です 読者をやめる 読者になる 読者になる

NissyBlog

Life goes on.

PHPカンファレンス2015に行ってきました(その2) #phpcon2015

PHP

本日はPHPカンファレンス2015に行って参りました。

この記事はこちらのエントリーの続きとなります。

フリマアプリ「メルカリ」の急成長を支えるエンジニアリング

サーバ構成
  • サーバ台数:100+
  • 秒間リクエスト:13000+ (Japan only)

専用サーバーはコスパが良い
クラウド環境は柔軟性が高い

APIサーバーはPHPで書いてある
nginxによるハイパフォーマンスネットワーク
  • 大量の同時接続(数万)を軽快に捌ける
  • メルカリはSPDY/3.1のゲートウェイを利用
    • HTTP2には普及状況を見て移行するつもり
  • 検索結果のキャッシュにnginxを使う
SlackでChatOPS
  • やっていること
    • デプロイ
    • 勤怠管理
    • アラートの通知
    • CIの手動実行
いろんなサーバーからSlackに通知
  • プロキシ立ててプロキシと通信するクライアントを各サーバーに配置しよう
  • slackboard
ゼロダウンシステムデプロイ
プッシュ通知基盤
  • プッシュ通知リクエストをプロキシ
ログ分析基盤
  • 200GB/Day
  • 各サーバーからFluentdで転送
  • Mercari\DataTrack
  • Norikraによるログストリーミング処理
データの集計、可視か、レポーティング
  • レポートメール、
  • 分析に適したログ基盤を作成
  • Puree
まとめ
  • たくさんの工夫で高速なAPIサーバーと急成長する基盤作りを実現している
    • 来年はPHP7対応かも
  • バックエンドではGoを採用する場面も増えている

DMMのハイパーメディアオタサーの姫arimoが語るPhalcon

Phalconを選んだきっかけ
  • 瞬間的に大量のアクセスを捌くことになった
  • FuelPHPからPhalconへ移行する
使った感想
  • ドキュメントが少ない
  • 調査に時間がかかる
  • でも、さほど拒絶反応はない
どんなフレームワーク
  • 早い
  • Phalcon+nginxはFuel+Apacheより10倍のパフォーマンスが出た
Phalconのバージョンについて
  • 1.x系はC言語、2.x系はZephirで出来ています
    • PHP5.6に上げたら2.x系に上げなくてはいけなくなった
Zephirとは
  • Coreを見れなくてたまに困る
バッチ
  • cli.phpをExtendsするとバッチ
Phalconの闇
  • ドキュメントが英語
    • タイトルだけ日本語
  • ORMの使い勝手
  • サブクエリはORMでかけない
  • メール送信用のパッケージがない
  • APIからメールを送信する時、Viewディレクトリを作成した
  • ViewはVoltが採用されている
    • 他のテンプレートエンジンも使えます
  • configのマージ事件
    • 環境別にconfigを分けられない
    • configを上書きする機能がないため、環境ごとにマージするようなコードを用意した
  • PhalconのDIコンテナは使い方が要注意
    • DIコンテナの中身を書き換えるのははまるが、remove してから入れればいいとのこと
      • めんどくさそう。。
  • IN句に空配列を渡すとfind文で全レコード取得出来るそのidを渡してdelete文を実行すると全レコードdelete出来ます
まとめ

やっぱり早いことには変わりないです!!

How to Build Efficient and Integrated Development Environment for The Team

「チーム開発において、効率的な統合的な開発環境をいかに作るか」

  • なぜ「容易に構築可能な開発環境」を用意するべきか
    • 管理しきれない
    • 増えるミドルウェア•ソフトウェアにメンバーが追従出来ない
    • 新メンバーがどうやって開発を始めたらいいか分からない

新人教育の話

  • 優秀なひとが揃うチームだからこそ教育は重要
    • ジョインして数日で活躍して貰えるか、一ヶ月後に活躍を始めるかで大きく違う
  • キャッチアップに時間がかかる状況ってプロダクトの成長に影響を与えるし、ロスが発生する
    • GitHubの新人研修がすごい
      • 初日にプルリク出させてリリースする
    • FaceBook
      • 最初の二ヶ月、職種関係なく徹底的に教え込む
開発環境構築
  • 開発環境はVIrtual Box+Vagrant
  • BoxファイルをS3上で管理(ミドルウェアはセットアップ済み)
  • ソースコードはローカルマシン側のsynced_folderに置く
    • ディレクトリ構成を揃えたり、makeコマンド一発で環境作れるのは本当に大事
    • experimentalbuildを提供して動作確認後に配布版を作成
DataBaseサーバー
IDEとかツールの話
  • ツールの手入れって誰も手をつけないですよね
    • やるのは自分!!
  • 色んなことがコマンドひとつで出来るのって素晴らしい
質疑応答

Q. 情報を伝える手段は??
A. Quita Team

Q. 開発をサポートする体制
A. 1. メンターを付ける。一日一回、1on1を必ずやる。
  2. 教育のやり方を色々試す。密にコミュニケーションをとれる体制をとる。

Q. 開発と改善をバランスをとってやる基準
A. 自分の中で常に気をつけていること。本質的でないことはしない。
  好きだから色々やりたくなるけど、意味があるものだけをやる。

続きはこちらです。
PHPカンファレンス2015に行ってきました(その3) #phpcon2015 - NissyBlog