Subscribed unsubscribe Subscribe Subscribe

DeNA Technology Seminar #1 に行ってきた

勉強会 Perl

あっという間に募集定員に達してしまった大人気イベントに運良く枠内に入り、行ってきました。
DeNA Technology Seminar #1 : ATND


話聞きながらとっていたメモ。結局出来の悪い板書写しみたいになってしまった orz
http://search.twitter.com/search?q=%23denatech が良いまとめになってそうな予感!


(追記)
@rkanbeさんが作ってくださっていました。ありがとうございます!
3/16 開催 DeNA テクノロジーセミナー - Togetterまとめ

Inside mbga Open Platform API (ZIGOROuさん)

  • Overview
    • WAF
    • fastcgi がらみでのトラブルが多い stableじゃない!
      • /etc/sysconfig/myapp でモード切り替えている
    • MySQL
      • 検索系のみMyISAM
      • replicationが拠点をまたぐことも
      • memcached 更新用 trigger 専用 slave -> モバゲー本体の仕組み
    • 開発は今はsvn そのうちgitに
      • Test::mysqld, Test::TCPでローカル開発
    • DeployはArcherで
      • PSSPSS化したい
    • CPANモジュール rpm + yum repository で
    • 監視はnagios
  • Architecture
    • People, Appdata, Activity, Message などのAPI
    • People API
      • クエリが大変と言う話 Yokohama.pm で言っていたやつ
      • 愚直にやると3つのdbへのアクセスが…
      • max_allowed_packetの制限:1MBに引っかかる!
      • クエリを分割できれば分割 出来ない場合はTEMPORARY TABLEをCREATE
        • CREATE権限を与えたくないので砂場dbで
    • Message API
      • SPAMの温床 ><
        • ユーザー間は1分間に1回、アプリは4時間に1回に制限
      • 内部APIQ4M 2000万/dayの通知
      • 3つのworkerで処理 replication遅延をなんとかして回避
      • Q4M tips
      • workerの実装 Parallesl::Preforkで
      • MySQL Partitioning 日単位で分割
    • Profiling
      • 実行時間が閾値を超えたものをログに書き出してデータ収集
    • Abstract
      • 割と好きなようにやっています
      • トラフィックが多いと想定外があるので、普段からケチくさく書いているといいよ!


Inside mixi Platform 山下英孝(weboo)さん

  • mixiアプリとは
    • mixi PCよりmobileの方が圧倒的にPV多い
    • 牧場がユーザー数470万人
    • アプリで一気にユーザー数ログイン数増えた!
    • ガジェットXMLを使ってPC対応、mobile用など定義
    • mobile
      • mobile -> mixi Server -> SAP Server
      • 内部構成 App ProxyとMedia Proxyに分かれている
      • mod_proxy + mod_perl + squid
      • アプリケーションに関する情報はmemcached DBアクセスほとんど無し
    • リリース苦労話
      • 5秒以内にレスポンス、負荷テスト実施状況のヒアリングなど行ったが…
      • タイムアウトを緩和するなどの緊急対策
      • SAPとPlatformが連携しないとダメですね ヒアリング開始
        • PHPJavaが多い memcached使っているところが少ない 非同期処理していない など
  • Plack+AnyEventモデルへの移行
    • SAPサーバへのリクエストでのBlockがキツい
    • Plackmod_perlを1台のサーバに同居 現在65台が稼働
  • Tokyo Tyrant, Q4M の使用
  • コンテンツ配信サーバ
    • 静的ファイルを代理配信 Vernish
    • 使ってくださいね!
  • まとめ
    • ヒットすると数千万〜数億PV/日 のアクセスがくるのでインフラ技術力が必要!
      • エンジニアにとってはチャンス!
    • 今後
      • PCからアクセス可能な動作テスト環境
      • OpenSocial 0.9対応
      • バイル仕様統一


Gadget Server hide-kさん

  • MBGA Open Platform
    • OpenSocial 0.9準拠 2009/08/01にプロジェクト開始
  • Gadget Server
    • リクエスト/レスポンスの中継
      • 認証、OAuth Signed Request, Access Token発行など
    • 命名「Hermit」
      • タロットカードを使うとnamespaceが枯渇する
    • PSGI/Plack
      • DispatcherがないのでCatalystとか必要ない
      • すでに実装がある
      • lighttpd + Plack::(Server)::FGI
    • Pluggable
      • Plagger likeな機構 要件変更が多くてもなんとかなった!
      • Plugin::Request, Plugin::Responseで色々処理
    • その他Text::MicroTemplate, HTTP::MobileAgentなどモジュール色々
    • Sandboxを先にリリース
      • PCでのアクセスも可能 近いうちに全開放予定
    • CDNの提供 静的ファイルはデフォルトですべて
  • 苦労話
    • スケジュール相当キツかった Plack++
    • メモリよりCPU使用率がヤバいことに Hiper-ThreadingがOFFになってた
    • lighttpdのよくわからん現象で悩む updateで解決
  • 現在の問題
  • 今後
    • スマートフォン、外部アプリケーションへの対応
      • 認証、認可をどうするか? 考え中
    • OpenSocial 1.0対応
    • Template化してAPIアクセスを無くしたい
  • まとめ
    • Plackは実務で使えるレベルです
    • 実際に動かさないとわかんない問題もある

思っていた以上にPerlまみれの話でした。


自分の頭では理解できない部分が結構あったので、後で公開された資料とかをジックリ見て理解していこうと思います。
その後の懇親会でも何人かの方々とお話させていただいたり横で話を聞かせていただいたりして、とても刺激になりました。
開催してくださったディー・エヌ・エー様、ありがとうございました。