Amebaでアプリケーションエンジニアをしている吉川です。
6/14~6/16にかけてアメリカのサンタクララにて開催されたVelocityカンファレンスに参加してきました。
二名で参加してきましたので、前編後編にわけてレポートしたいと思います。
前編では、Velocityの概要と会場の様子、Workshopについてレポートします。
What's Velocity ?
Velocity 2011
みんなお世話になっているO'Reilly社が年に1回開催しているカンファレンスです。
Web PerformanceやOperationといったところが主なテーマです。
![$サイバーエージェント 公式エンジニアブログ](https://stat.ameba.jp/user_images/20110627/11/principia-ca/b7/7a/j/t02200164_0800059811315581357.jpg?caw=800)
※プレゼンするTim O'Reilly氏
パフォーマンスのところでは、ネットワークやキャッシュといったトピックスもありましたが、
多かったのはやはりHTML5, CSS3を用いてモバイル向けの表示を最適化するだとか、
JSでのクライアント側でのレンダリングなど、フロントよりのトピックが多かった印象をうけました。
オペレーションのところは、日本でいういわゆるインフラエンジニア視点で、大規模システムの運用の際におこるトラブルや、スケーラビリティと自動化、テストなどの話が多かったです。
スケジュールですが、カンファレンス自体は15・16日の二日間で、14日はWorkShopとなっています。
またスポンサーによるブース出展や、BoFセッションなども行われていました。
セッションの資料や動画のほか、filckrにて会場の写真などもまとめられています。
会場の様子
![$サイバーエージェント 公式エンジニアブログ](https://stat.ameba.jp/user_images/20110627/14/principia-ca/68/c0/j/t02200295_0800107111315807581.jpg?caw=800)
会場はサンタクララのConvention Centorで行われました。
![$サイバーエージェント 公式エンジニアブログ](https://stat.ameba.jp/user_images/20110627/14/principia-ca/3c/d1/j/t02200164_0800059811315807584.jpg?caw=800)
![$サイバーエージェント 公式エンジニアブログ](https://stat.ameba.jp/user_images/20110627/14/principia-ca/73/2f/j/t02200295_0800107111315814508.jpg?caw=800)
※registrationを行うためにならぶ人々・・・しかし現地の人は朝が早かったですね・・
先ほどのTim O'Reilly氏の写真でもわかるように、非常に大きな会場でした。
ですが、
![$サイバーエージェント 公式エンジニアブログ](https://stat.ameba.jp/user_images/20110627/14/principia-ca/34/1f/j/t02200295_0800107111315823946.jpg?caw=800)
会場はフリーWiFi完備、足元に電源が用意されているなどさすがです。
さらには隣接したHyattでランチが食べられます。
![$サイバーエージェント 公式エンジニアブログ](https://stat.ameba.jp/user_images/20110627/14/principia-ca/45/99/j/t02200295_0800107111315827957.jpg?caw=800)
また、
![$サイバーエージェント 公式エンジニアブログ](https://stat.ameba.jp/user_images/20110627/14/principia-ca/0a/10/j/t02200295_0800107111315823948.jpg?caw=800)
![$サイバーエージェント 公式エンジニアブログ](https://stat.ameba.jp/user_images/20110627/14/principia-ca/8f/9b/j/t02200295_0800107111315823947.jpg?caw=800)
コーヒーやジュース、そのほかドーナツや軽食が無料で用意されており、まさに至れり尽くせり。
Workshop
会場の様子はこれくらいにして、内容のレポートです。
とはいえ全て紹介すると大変な量となってしまうため、いくつかポイントを絞って紹介したいと思います。
Netflix in the Cloud
Netflix Velocity Conference 2011
View more presentations from Adrian Cockcroft
Workshopのなかで個人的にもっとも印象に残ったのがNetflixでした。
というのは、実際の提供しているサービスこそ全く異なるものの、Netflixの構成はAmebaで利用している技術と類似しているためです。今後のスケールを考えた場合に非常に参考になりそうです。
もともとJavaをメインに、Apache/Tomcatでのアプリ、DBはOracle、CDNにAkamaiやLimelightを利用し、DBなども一点に集約するようなつくりだったそうです。
ところが1年で37倍までAPIコール数が増えるなど、急激なビジネスの成長に対しすぐDC用意したりできない、ということでクラウド移行へ踏み切ったとのこと。
現状参照面はほぼ100%クラウドに移行したそうです。
現状のインスタンス数の推移などのグラフがスライドにありますが、ログ解析やTestなど、基盤的に必要なインスタンスはコンスタントなのに対し、Netflixでもっとも変動が大きいのがContentEncoding用のインスタンス。これが状況に応じて柔軟に、かつ大きな幅で変動させられていることがわかります。
またクラウド化の段階で古いコードはかなり書き換えたとのこと。アプリの構成も厳密にレイヤーをわけ、Interfaceのjarをはじめに共有することで複数レイヤーの開発をスムーズに行えるようになったそうです。
利用しているOSSはApache,Tomcat,CentOS,Cassandra,HadoopなどJavaではおなじみなものですが、JDKはOpenJDKを利用しているそうです。また新しい構成では、SimpleDBを利用しているとのこと。
詳細な構成はスライドにまとめられているので割愛しますが、実際にはアップされている以外のスライドでクラウドでのアンチパターンと称して苦労話などもいろいろと聞けました。Cassandraのバックアップ機構などは苦労したようです・・
Performance Enhancing Programming with NodeJS
![$サイバーエージェント 公式エンジニアブログ](https://stat001.ameba.jp/user_images/20110627/15/principia-ca/1b/c6/j/t02200295_0800107111315869983.jpg?caw=800)
いま非常に勢いのあるNodeです。弊社でもピグライフでNodeを利用していますが、VelocityでもNodeのセッションは数多くありました。このセッションではライブコーディングで、登壇者手元のPCでゲームを動かして会場みんなでアクセスして、コードを書き換えたら動きがどうなるか?というのをやっていました。
Mobile Web & HTML5 Performance Optimization
実例をあげながら、モバイル端末での表示速度を改善するにはどうしたらよいか、という視点で、htmlのタグ構造のtipsから、CSSでなるべくすます、といった泥臭いtipsが数多く聞けました。驚いたのは、各国のモバイル状況を非常によくリサーチされており、たとえば小さなアイコンを使いたい場合は日本の絵文字で代用できないか、といったこともあげられていました。
まとめ
自身、シリコンバレーのエンジニアと直に触れ合ったはじめての経験だったのですが、それまでは多くのスターエンジニア・ギークがいて、細かいことはさておきとにかく先進的なことをしているようなイメージを持っていました。
しかし実際は、障害やバグを含めた品質に対する意識の高さ、そして泥臭い部分への労力に驚きました。技術でビジネス(=商売)をしているという意識が高く、それゆえ品質が結果に直結してくるのでしょうね。
普通なら「次回から気をつける」となってしまいそうなところでも、細かく方法論にブレークダウンして、一歩一歩積み重ねた上に彼らのいまがある、と感じました。
Velocityの雰囲気と、Workshopいかがでしたでしょうか。
カンファレンスセッションとスポンサーブースの内容については、後編にて紹介します。