JJUG Cross Community Conference 2011 Spring

日本Javaユーザグループ主催のカンファレンスに参加してきました。


JJUG Cross Community Conference 2011 Spring
http://www.java-users.jp/contents/events/ccc2011spring/


未熟者には何を言ってるのかよくわからん話ばかりでした・・・
ところどころ歯抜けだけど、メモしてあった部分を思い出して書いてみた。
間違ってたらごめんなさいします。


メモから内容をあまり思い出せずに泣いた。しっかりメモとれないとだめぽ・・・。

JJUG総会

  • Androidの普及で新規参入も増えた←基礎セミナーもやっていきたい
  • 地方活動も
  • 会計報告的な何か
  • IT技術のコンシューマ化とインパク
    • ハードウェアの高性能化と生産コストの低下+インターネットの普及→より一般消費者向けに
    • iPhoneAndroidバイスなどの普及
    • サービスを提供するクラウドの登場
  • 新しいネットワークメディアの成立
    • マルチメディアからユニメディアへ
    • マスメディアからパーソナルメディアへ
  • 個人意識の変化
    • コモディティ化したマシン
      • コミュニケーション、情報の共有、自由時間にも使えるようになった
    • 情報は誰のもの?
  • 家庭コンピューティングvs.企業コンピューティング
    • 昔は企業でしか触れない代物
    • 今は家庭用でも高性能で自由に扱える。企業は大体その逆。
  • Facebookの取り組み。Open Compute Project
    • 38%の効率化と24%のコスト削減ができたらしい
  • クラウドプレイヤのネットワークメディア産業へのシフト
  • クラウド間の競争は既にコンシューマを巻き込んでいる
  • オープンソース+広告モデルによる、サービスの無料化
    • →差別化とマネタイズが重要になってきた
    • コンシューマ中心のビジネスモデル(B to C → C from B)
  • クラウドは資金力がないベンチャー企業にとって便利な代物
  • ソフトウェア開発はネットワークがあれば誰でもできる時代
  • 個人はもはやただの消費者ではない
  • 消費者であり生産者にもなれる(例: Apple Store, Android Market)

継続的インテグレーションの未来

  • JenkinsっていうCIツールのお話
    • 水平並列化
      • マシンの性能向上/コストの低下→マルチスレッド、仮想マシン
      • 人間の費用対効果はあまり期待できない(どんな人でも2〜3台程度しかマシンを扱えない)
    • プロビジョニングのリアルタイム化/自動化
    • VMのスナップショットやフォーク

ここらへんで興味がなくなってメモあんまとってないry

  • SaaSの台頭
    • プロビジョニングも簡単で、自動的にできる
    • Just in time化

Java SE7で切り開く新しいJavaの世界について

http://yoshio3.com/ #アドレス間違えてた!!
にて資料を公開しているのでそちらを参照。
基本的に新機能とライブラリの説明。
ファイルの追加書き込みが今までできなかったことに驚いた。
Da Vinci Machine ProjectっていうJava VMで他の言語を動かそうって話は面白そう。

Google App Engineによる大規模ソーシャルアプリ開発事例(Mixi Xmas 2010)

  • アプリの概要説明
    • 靴下を飾ります
    • ベルを鳴らすとポイントがもらえます
    • レベルアップすると靴下をデコレーションできます
    • 装飾品を買ったりプレゼントしたりできます
    • 他いろいろ
  • ノウハウ
    • GAE/Datastoreを使いました(Key-Valueな考え方をしたデータベース)
    • AppEngine
      • インスタンスの生成→spin-upと呼ぶ。1リクエストにつき1インスタンス。シングルスレッド。
      • GAEを使うことでセッション管理やハードウェア障害などの対応を気にしなくてよくなる
    • アプリケーション全体で使うのはstatic変数で
    • 一定時間で設定を読み直す仕組みとか
  • データストアの遅延現象
    • Join停止対策
      • リクエストがキューにたまる時間を短くする(当時はデフォルト10秒)
      • Mixiアプリタイムアウトと判定する前にエラーを返すことで、Join停止になるのを避けるようにした
  • spin-upの対策
    • spin-upにかかる時間は1〜数秒
    • static変数をフラグにしてspin-upであるか判断する
      • spin-upならMixiアプリにリダイレクトさせるよう要求する
    • warm up requestsの利用
    • queryよりbatch getを優先的に利用
    • 不要なSingle Property indexを作られないようにする
  • やらなかったけど、検討したもの(GAEの機能的な)
    • custom index
    • marge join
    • task queueの多様(非同期実行の仕組み。他の場面で使用)
  • 失敗したこと
    • AppEngineでPV取得
      • ログがたまると消える罠
      • PV用のGIFを返す→高くついた
      • 対策: EC2でApacheを立ててそっちでやるようにした
    • Keyの名前にタイムスタンプを使用していた
      • スケールアウトしない(名前が非常に似ているため123,124,125...)
      • 対策: ハッシュ値を付加した
  • 思ったこと
    • AppEngineは進化が早い
    • 生産性が高い
    • Datastoreの特性に注意すればあんまり問題なかった
    • インフラ整備がいらない(今回の事例も1人だけで開発したとか。)
    • 運用費が安い
  • まとめ
    • ソフトウェア開発者が主役
    • サーバはAppEngineがおすすめ

ソフトウェア開発者にも知ってもらいたいデータセンターのエネルギー効率

  • 空調や冷房にかかるコストは結構かかる(電気代の2倍弱)
  • IT機器の電力コストの削減は急務である(10年間でCPUの消費電力は4倍(Pen3→Xeon 5X00))
  • グリーングリッドって集まりがデータセンタの評価基準を作ってる
  • CO2や水などの利用効率も定義している
  • ASHRAE(アメリカ暖房冷凍空調学会)
    • データセンターの温度設定は電力コストに影響を与える
    • 空調設備の負担を減らせる
  • アプローチ
    • 機器を減らす、ファシリティを持たない(空調, 冷却, UPS)
    • 機器のエネルギー効率を上げる
      • サーバの仮想化、モジュラー型データセンターの導入
  • パワーマネジメント
    • 計測と監視 ACPI(意識しないうちに使ってる!!)
    • サーバ運用ポリシー
    • スリープ/サスペンド機能のリスク

基幹バッチ向けHadoopミドル(Asakusa Framework)

  • Asakusa Frameworkのアプローチ
    • データフローによる設計手法。
      • "演算子"を組み合わせて"データフロー"を組み立てる
    • JavaベースのDSLの提供
    • 最適化DSLコンパイラの提供
    • テスト機構の提供
  • デモ
    • (デモを見てわかるように)ちょっとしたことには向いていない
      • 数十GBレベルのデータ処理でないとだめぽ
  • HadoopとAsakusaFramework
    • (デモを見てわかるように)ちょっとしたことには向いていない
      • 数億件ものレコードを扱うような大規模向けである
    • APIが不安定で独自拡張が乱立
    • アプリケーション開発とはクセが異なる
  • 今後
    • より強い最適化
    • よりよいテストシステムの導入(分散など)
    • Java, Hadoop以外の選択肢