2011/10/22

YAPC::Asia Tokyo 2011に行って聞いた話

10月13,14,15の三日間、YAPC::Asia Tokyo 2011に行ってきました、2年連続2回目の出場です。去年は初参加で初登壇して発表してきました。今年は法要のスケジュールが確定する前にトークの締め切りがきたので、LTだけ申し込んで最終日に5分だけ喋ってきました。

先に感想を書くと、YAPCで喋れる人って皆、大企業や有名企業の看板がなくても個人で通用する人ばっかりやなぁって印象です。

前夜祭が終わって宿に帰った後に、いつもお世話になってるお客さんのサーバでアクセス過多の問題が発生して明け方頃までチューニング大会となり、起きたら10:00やったのでオープニングには間に合いませんでした。 以下、拝聴したセッションと簡単な感想。主にインフラ系とか運用系の話を聞いてきました。

一日目: 10/14(金)

Perl 5.16 and beyond

宿に帰る道中見かけた居酒屋の看板娘
英語はよく分からないので254枚のスライドの多くに字幕があって助かりました。スライドで印象に残ったのは、
  • ``Rule 1: Larry is always right about how Perl should behave (Perlのあるべき姿については常にラリーが正しい)'', 
  • ``Rule 2: Larry is allowed to change his mid about any matter at a later date regardless of whether he previously invoked rule 1 (自分で決めたことかどうかによらずラリーは後から考えを変えても構わない)'', 
  • ``Since switch to git, we've nearly doubled our committer list (gitに移行してからコミッタは倍増)''
Perl 5.16以降のヴィジョン、よりスリムでシンプルしていく感じです。

CPANモジュールガイド編集後記+α

著者トミールさんの発表
CPANモジュールガイド」は発売直後に近所の本屋(大垣書店)に何度か足を運んでも売ってなくて、入荷する気配もなかったので結局買わず仕舞いでしたが、YAPC会場で10% OFFで売っているのを見つけて迷わず買いました。

Perlをちゃ〜んと勉強しだしてまもなく3年になりますが、まだまだPerlをよく分かっていないので、この本は必須かなと思っていたところです。

お昼にこの本を買ったので午後のセッションで編集後記を聞いて、著者のトミールさんにサインを貰ってきました。知らないモジュールが多くてなかなか勉強になる一冊です。

正誤表はhttp://cpanbook.koneta.org/sorryにあります。

A Language for getting the job done

編集後記から連続して始まったのでそのまま拝聴しました。Perlの話は出てこない。本題は``Paid vs. Free''. Steve Jobsの講演に出てきた「点と点を繋いでみる」がキーワード、オープンソースとビジネスを考えるセッションでした。僕自身「オープンソースは金になるのか?」の答えが明確でないので、以下思いつきとメモ書きを箇条書き。
  • それぞれのオープンソースは点
  • 重要なのはデータ、データが金を作る
  • 点の一個を公開するのはそんなに心配しなくてもいい
  • 点と点を繋いでサービスになったり、プロダクトになったり、ソリューションになったり
  • アイデアもまた点の一つである
  • 点と点を繋いで平面が出来て、それを膨らませて立体になって、ビジネスになる
  • 平面のままでは需要の無いプロダクト・サービス←あんまり流行らないOR直ぐに廃れる
  • 立体になるとビジネスとして成立して利益も出る
  • 立体にするにはアイデアという点、タイミングという点が重要
  • 点の組み合わせ方は多種多様、アイデアも点なら無限大の組み合わせパターンかも
  • コードは公開・サポートは有料というビジネスモデルは高々2,3個の点を繋ぐ程度のもの
  • 自分で点を作ったり、既存の点を組み合わせて新しい点を作ったりしながら立体に近づける
他のセッションは実用的な側面が強い一方で、このセッションは哲学に相当するセッションかなって感じです。

AnyEvent, Coro, IO::AIO - a good team

Marc Lehmann先生の講演
bounceHammerの次のバージョン(ver 3)では処理速度向上の為に非同期処理を入れようと思ってたのと、夏にCoroというモジュールの存在を教えてもらったという事もあって、このセッションを聞くことにしました。

``I think, Coro is the only real threads.'' 実際にCoro, AnyEvent, IO::AIOのどれも使ったことがないから、YAPC来る前に練習でコード書いておけば良かったかなぁと反省。Coro::Channelはコロちゃんって聞こえた。

Perlで構築された中規模サイトのDC引っ越し記録

約20台のサーバで構成されるサイトの移転とリファクタリングを同時に行った話。移転だけでなく性能改善をあれこれやりながら、移転途中はVPNで通信経路を確保するなどして、3時間の計画停止一回で移転できたという貴重な事例紹介。

かつてデータセンターでデスマーチを経験した身としては、華麗に移転できたのをうらやましく思います。アプリケーション部分の移転が前日に終わってるのに、計画停止した後にしかユーザからクレームが来なかったというユーザ心理についての話しも面白い。

Mobage オープンプラットフォームの事件簿

モバゲーのとあるAPIにまつわる事件簿、MySQLの話。DELETEは遅いからSTOP SLAVEした奴から必要なデータだけとりだしてMasterやってもらう「おかわり作戦」、柔軟な発想。事件簿3の有名人問題はモバゲーに限らず昨今のソーシャルなアプリ・サイトなら必ず直面するであろう問題。

Mobageソーシャルゲームにおける大規模サーバ運用 with Perl

連続でモバゲーの話。これだけ大規模な環境の話はそうそう聞けるものではないから貴重。スライドの構成図が結構詳細に書いてるから、YouTubeで音声流しながら改めてスライドを眺めるとより理解しやすいです。

DNSをmyDNSにしてラウンドロビンをアプリケーションに組み込んだって聞いたけど、DNSクエリー数のグラフが気になるというか見てみたい。内部の名前解決専用DNSの台数とか性能とかレコード数とか環境依存の部分はわからんけど、アプリケーションサーバ全てがMyDNSから取り出したデータをもつキャッシュDNSになってるって事かな。

懇親会

TwitterやFacebookでお世話になってる方や久しぶりにお会いした方ににご挨拶できて有意義な懇親会でした。今年の懇親会はスポンサー企業さんの計らいで無料でした。ビールも食事も美味しく頂きました、ごちそうさまでした。

二日目: 10/15(土)

続 Unix Programming with Perl

UNIXで動くプログラムを書くには、このセッション(と去年のセッション)での知識は必要、というか基本ということで拝聴してきました。IPC::Open3, Pipeのバッファサイズ(これはOS毎の違いは知らんかった)、シグナル、Race Conditionとかの話。

Race Conditionはローカルユーザがroot権限を奪取したり、外部からRace Conditionを利用して攻撃するプログラムを置いたりするって話で必ず出てきます。かつてUNIXに複数のユーザがログインしていて、そういった攻撃(あるいは攻略)について考えたり対処したりする必要がありましたが、今は寧ろサイトに設置したプログラムが意図せず攻撃してしもたり、脆弱性を作り出してしまったりという側面が強いかな。

運用しやすいWebアプリケーションの構築方法

テーマは「障害耐性」です。アプリケーション運用後の障害などで重要になってくるログを記録するためにLog::Minimal、ORMはDBのデバッグ時にコードからSQLがわからんから、コメントの形式でSQLが残るDBIx::Sunny, DBの接続状態管理の為にScope::Container, memcachedの問題(データの永続性、特定キャッシュへの集中など)を解決するためのCache::Memcached::IronPlate.

開発期間・工数を短縮するのは重要とは言え、設計がやっつけ仕事やったら後々の障害対応で手も足も出なくなりそう、そして結局通常運用の状態を維持するのに開発期間や工数が肥大する。障害耐性を考慮した設計大事。

watch your log

nekokakさん
Komainu(こまいぬ)ってログ監視フレームワークのモジュール紹介とログ監視の重要性について。

サーバ・ネットワークの監視は択さんの監視項目があれば在るほどよいし、記録が多ければ謎の障害が発生しても原因を特定する道筋は立てられるはず。

障害に特化したDev側とOps側のCommunicationにおいて、それぞれがすりあわせたフォーマットのログが潤滑油となり、障害の一時対応が迅速に行える。

Nagiosの監視通知は瞬間を切り取ったものやし、MRTGとかのグラフは要約されたデータやから、それらの変化が何故起こったかを追求するにはログを読む必要があるので、ログ監視も侮るべからず、という感想です。

闇のEメール伝説 (Email Hates the Living!)

Ricardo Signesさんによる闇のEメール伝説
普段Email系の開発を行っているものとしてこのセッションがYAPCに来た主目的の一つでもあります。

古代のプロトコルSMTPの闇、開発しているbounceHammerで一番苦労しているのが無数にあるバウンスメールのフォーマットに対応する点なので、共感できるというか、Recardoさんの気持ちがよくわかるセッションでした。

そして.af, .krとかスライドのメールアドレスにちょいちょいネタが仕込んであったのも面白い。Webに比べてメールが人気ないように見えるのは、こういった複雑さも寄与しているのかなぁと思ったり。``SMTP is Simpleton Mail Transfer Protocol''.

RFCで定義されているように、どこにでも無節操に入れられるコメントと、そこから正しいメールアドレスを取り出す処理はEmail::Addressあたりを使うのが最も最適解やと思います。

Hello Embed Perl!

Perlインタプリタをいろんなものに埋め込むって話。CのプログラムにPerlインタプリタを埋め込んだり、CのコードからPerl呼び出したり。

bounceHammer実装する時に「サーバで動かすプログラムやし処理速度を考えるとCで書いた方がいいかな」って思ったけど、パターンマッチの正規表現を考えるとPerlって結論になりました。そもそもCは久しく書いていないから慣れていないCとPerlはきっと困難が待ち受けてるやろうって思いましたし。

このセッションではPerlと同様やり方はいっぱいある(TIMTOWDI)し、難しくないからやってみるといいよ!って感じのメッセージを受け取りました。セッション終わって自分のLTスライド作るのに直ぐに退室したけど、node-perlってなんやろ?

Perlで仮想サーバ制御

ここ数年でユーザ数ががばっと増えた仮想環境をPerlで制御するって話。仮想環境はユーザサイドからはVPSと呼ばれているけど、裏側を見ればXen, KVM, VMWare, VirtualBoxとかいろいろ。そう言った仮想環境の共通ライブラリlibvirtを制御する為のPerlモジュールSys::Virt(libvirtのバージョン依存), Beccoameってのを作ったけど大人の事情(いわゆるOSI参照モデルの政治層かな)でお蔵入り。

時には理不尽とも思える政治層での問題って、エンジニアサイドから見るとなかなかよい解決策が見つからないっていうか、寧ろ政治層に影響力を持っているエンジニアになるべきかなぁと思ったり。

自分のLT

猫神さま
今年はLT初挑戦です。去年は初登壇したのですが、VGAケーブルを忘れてスライド無し発表を覚悟していたところ、会場に降臨した猫神さまが初対面にもかかわらずMacを貸してくださってなんとか発表できた次第です。

今年はちゃ〜んとVGAケーブルも持ってきて、出力もKansai.pm 13thと出発前のCRT接続で確認してきたのですが、接続テストで映りませんでした(´ヘ`;

...結局今年も人様のMacを借りて発表しました。今年はJPA理事長(会長?)がMacを貸してくださいました、助かりました、ありがとうございました、お世話になりました。

JPA理事長さま
たいした内容はありませんが、「bounceHammerその後、導入事例、これから」のスライドをSlideShareに置いてきました。

YAPCの為に東京に着いた日にうちのMac(PowerBook G4)でDisk IO Errorが頻発するようになって、日本語変換を呼ぶ度にカーソルがぐるぐる廻ってどうしようもないので、スライドの殆どは英語というか英単語で書かざるを得ませんでした。

ありがとうYAPC::Asia Tokyo 2011

予定していた新幹線(19:10品川発)があったのと、方向音痴やし、不慣れな土地で新幹線に間に合うか心配やったので最終セッション始まって直ぐに会場を後にしました。新幹線には発車数秒前に飛び乗って京都に帰りました。YAPC::Asiaスタッフの皆さん並びに関係者の皆さんと参加者の皆さんありがとうございました、お世話になりました。

0 件のコメント:

コメントを投稿