デブサミ一日目

初日は2セッションだけの参加。

ウェブアーキテクチャの歴史と未来 DeNA 奥 一穂 さん

    • 概要
      • ハードウェアのスペックに関しては14年前と比べて、CPU、メモリ、回線が約1000倍になった。 -> ムーアの法則の通り。
      • しかし、webを構成する技術は変わっていない。
      • むしろプロトコルの種類が減って、HTTPへと集約されていっている。(imap,pop3 すらwebメールへと置き換えられていっている。)
      • HTMLの時代も続く。
    • なぜウェブなのか??
      • ウェブ以前のプロトコルはプロトコルとアプリが結合していた。(SMTP,POP,FTP etc...)
      • HTTPはアプリケーションに対して中立。
      • HTTPはあくまでリソース転送用のプロトコルであり何を記述するかは定義しない。 -> プロトコルや言語の進歩を待たずにアプリケーションが進化できる。
      • HTTPはテキストとバイナリが混在したプロトコル (cf. SMTPは古典的テキストプロトコル)
      • 仕様が明確で、普及しているため、新しいプロトコルの提案が困難

    • HTMLは進化を続けている。
      • ウェブ前を彷彿とさせるタグは非推奨に。
      • DHTML, XHRの登場
      • CSSによるデザインの分離
      • HTML5の登場

    • ウェブ技術の変遷
      • 五年ぐらいずつのスパンで変遷してきた。
        • マスコミ期
        • ブログ期
        • ソーシャル期
        • リアルタイム期
      • 今はソーシャル期とリアルタイム期の間くらい
    • マスコミ期 ex. Yahoo
      • コア技術 ⇨ httpd, 一部差し替え(テンプレート、edge-side include)
      • 大量の人数に同じ画面を見せることが大事。

    • ブログ期 ex. livedoor, はてな,Flicker, YouTube
      • エンドユーザーが不特定多数に発信。
      • 変化・・ウェブ経由での入力。データセットの増大。
      • コア技術⇨ RDBMS, mogilefs, memcached, シャーディング
      • RDBMSとキャッシュの同期の問題。
      • handler socket for mysql, mycachedなどで解決

    • ソーシャル期 ex. GREE, mixi, モバゲー
      • ブログとの違い? ⇨ 書き込みが高頻度になった。フォロワーへの通知が必要。
      • 大規模環境では、複数データベースへの書き込みが必要。
      • ACIDからBASEへ。非同期書き込み。
      • 非同期書き込みへの対応としての方策は大きく2つ
        • RDBMS, メッセージキュー,ワーカーの組み合わせ。-> 柔軟な処理が可能だが、都度ワーカーを作成する必要がある。
        • 非同期書き込みつきの分散ストレージを利用 -> Cassandraとか
      • RDBMSと所謂NoSQLのプロダクトの違いというのは、提供する機能範囲の違い(NoSQL系はキュー、ワーカーも内包したプロダクト)であり、2つを比較してあーだこーだ言うことにあまり意味はないと思う。
      • 最適化手法 -> Mixiの足跡機能検討が有名。

    • リアルタイム期 twitter, facebook, ソーシャルゲーム
      • PCやスマートフォンでは、comet,
      • サーバ側ではいくつかのプログラミングモデルが存在。
        • suspend & resume (java jetty)
        • suspend & push
      • アプリロジック的には非同期書き込みの一種。
      • ソーシャル期 + ワーカーがhttpdにプッシュする機能が追加された。
      • Long pollingの用途が制限されているなら、独自サーバも可。スクリプト言語でもいける。

    • まとめ
      • HTTP, HTMLの時代は続く。
      • ウェブの進化とともに書き込みが増加。
      • RDBとNo SQLはパッケージングの違い。
      • 古いトレンドの技術の振り返りが大事。

初参加のデブサミの初セッションでしたが、 いきなり圧倒される凄く面白い内容で、デブサミって凄いなーと思ってしまいました。ウェブの技術的な面白さを凝縮して見せてもらった感じ。
個々の技術に関しては聞いたことのあるものが多かったですが、こうやって技術の流れを俯瞰して見て、それが生まれてきた背景を感じることができれば、プロダクトに対して適正な技術を採用できて、また、今後、新しい技術が出てきた時にその理解が早くなりそうだな〜と思いました。
ここまでのレベルで俯瞰してみれるようになるまでの道のりは遠そうですが、、、今後意識していきたいと思います。

Spring ROO

Rooのデモ & Springの機能、ロードマップの紹介でした。
Rooのデモをもっと突っ込んでやってもらいたかった。
Springのほうは大体資料に書いてある内容を読んでいるだけで、同時通訳の時間もあるので、少し時間がもったいないな〜という気がしました。
前にRubyの松本さんが、日本語のように英語以外で母国語の技術書がこんなにたくさんある環境は恵まれているが、その分、英語習得の必要性の低下が起きてしまうというようなことを仰っていましたが、こういうセッションに同時通訳がついているのは、もの凄く恵まれていることであると思う反面、せっかく外国から凄腕なエンジニアの人が来て話してくれることになっても、本来の時間の半分の内容しか聞けないとなると、どうなんだろ??と思いました。個人的には少しくらい聞き取れなくても、倍の内容を話してもらう方がいいと思う。