Hatena::ブログ(Diary)

hdk_embeddedの日記 このページをアンテナに追加 RSSフィード

2011-02-17

デブサミ速攻レポート Developers Summit 2011(2月17日,18日/東京目黒)1日目 レポートx4まとめ

02:32

Developers Summit 2011(デブサミ)に参加中です。今年のキーワードクラウドモバイル

レポートは以下のリンクからどうぞ。

クラウドを利用する

クラウドは、提供する側の企業ごとに特徴が違うのでそれらを生かしつつ、差違をSpring Rooなどフレームワークで吸収・抽象化するアプローチが活発でした。また、Hadoopなど大規模分散処理の最新の導入事例などは技術的にも新しく、興味深い分野です。

開発管理、手法

チケット管理システムのパネルセッションは、詳細に比較できる機会がなかったので、とてもおもしろく聞けました。アジャイル、scrumについては、開発プロセスとして新しいトピックではなくなって久しいな、と感じました。提唱されて間もない当時の衝撃に比べると落ち着いてきた、という印象です。

どのように導入するか?どうやればうまく回せるのか、絶対的な解がないため、話も抽象的になりがちです。何より様々なプロジェクト=自分の現場での試行錯誤が必要ですね。

ブース写真

f:id:hdk_embedded:20110217140451j:image:w400

DevLOVEさん。

f:id:hdk_embedded:20110217140519j:image:h400

アジャイルUXカード

f:id:hdk_embedded:20110217140553j:image:w400

オライリーさんのガチャガチャ

デブサミ 【17-E-3】 Hadoop:黄色い象使いへの道 〜「Hadoop徹底入門」より〜 下垣徹 氏

01:01

Developers Summit 2011(2月17日/東京目黒)に行ってきました。

いくつかセッションのメモをとったので備忘録代わりに。

まとめ

HadoopGoogleMapReduce論文をベースに作られた大規模な分散処理フレームワーク

高いスケーラビリティ、I/O性能を持つがRDBMSと競合するものではない。組み合わせて使うもの。

検索Indexの作成などバッチ処理に向いている。

f:id:hdk_embedded:20110217133926j:image:w400

以下、セッションメモです。

Hadoop:黄色い象使いへの道 〜「Hadoop徹底入門」より

スピーカー:下垣徹さん

もともとはDB屋さん。PostgreSQL使い。

Hadoop徹底入門はオライリー「象本」との棲み分けを目指して執筆開始

12月末日Amazonにてひっそりと発売告知。目次も公開されていない段階でランキング1位に。

Hadoop

Hadoop

こちらが象本。

Hadoop徹底入門

Hadoop徹底入門

Hadoop徹底入門:書きたいことはたくさんあったが、尺に収まらず、入らないものがでてきた。

FairScheduler Mahout などなど…次があれば入れてみたい。

本日のアジェンダ

  • Hadoopの概要
  • 適用事例
  • Hadoop徹底入門」の読み方
  • 黄色い象(Hadoopのキャラクター)使いへの道
  • Hadoop利用時のよく聞かれる質問

技術背景:Google

Google独自の基盤技術を用いて、大規模データを対象としたサービスを展開。自ら「クラウドコンピューティングを持ってサービスを展開」

Hadoopオープンソースの大規模分散処理フレームワークで、Googleの基盤ソフトウェアOSSクローン

巨大なデータを並列で呼んで、データのローカリティを生かしてデータ処理する

  • 高いスケーラビリティ、小さくはじめて大きく活用
  • 大きな企業での活用事例が増えてきている

Hadoopクラスタの全体像

Hadoopは集中管理型の分散システム。全体を管理するマスターサーバが1つある。

  • 分散処理、ジョブ、データ管理はマスターサーバー
  • スレーブサーバーにはデータの実行処理がある

HDFSMapReduceフレームワーク

HDFS低価格サーバーを大量に使用するのが前提。

データの多重化で可用性を担保する。故障の発生が前提の設計

サーバーが死んでも、ラックが死んでも、大丈夫なようにデータ配置を考えてくれる

MapReduce:分散処理のフレームワーク

Googleが検索インデックス作成のために公安

Map:ある一行のレコードを変換させるなど、1行分の処理

Reduce:集約処理

Hadoopの特徴

プログラム個別に分散ロジックを用意する必要がない(プログラムごとに分散処理を設計しなくてもよい)

高いスケーラビリティ。I/O性能を柔軟に拡張できる。コモディティサーバーが前提

Hadoopの適応領域

数十Gバイト〜テラバイトペタバイトのデータを扱うシステム(数十Gは小さいかな)

バッチ処理的な処理に向いている。オンライン処理的なところは適応できない。

リアルタイム性が求められるところの前処理に使える(検索インデックスを作るなど)

一般的にログ解析、レコメンテーション、検索、データマイニング機械学習、データ変換の分野。

利用事例

f:id:hdk_embedded:20110217133637j:image:w400

  • facebook
    • 4TBのデータが毎日新規に生成、135TBのデータを毎日管理。Hadoopで処理したデータをOracleRACに、など棲み分けている

適用領域の大事なポイント

f:id:hdk_embedded:20110217133926j:image:w400

RDBMSと競合するものではない。組み合わせて使うもの。

徹底入門の読み方

まずは1章から5章・6章まで通して読む。(204ページぐらい/全437ページ)

導入からはじまり、3章、4章は前半が理論、後半が使い方。

5章はプログラミング入門、開発したときのテストMRUnitまで解説

6章はSQLインターフェイスHive。JavaMapReduceを書きたくない・かけない場合はこちら。

残りの章は必要に応じて読みたいところを。

たとえば10章は性能向上のための性能チューニング、実践的な内容

7,8,9章は次のステップ。

7章:自動構築、高可用性

8章:可視化。台数が増えてくると、監視するための負荷が馬鹿にならない。

9章:マスターサーバーの信頼性を確保するなど(単一障害点の排除)

11章以降はHadoopと連携する周辺ツールの紹介

黄色い象使いになるためには

SQLがそのまま使えるわけではなくちょっと変更が必要だったりする

HadoopRDBMSではない。トランザクション、1レコードの更新・削除、B-Treeインデックス、これらは存在しない。

RDBの常識を捨てて、大量のデータ処理に特化していると認識すること。

癖のあるシステムなので適材適所の観点で大量のデータの前処理をHadoop→検索はRDBMSにもっていくなど役割分担が必要

f:id:hdk_embedded:20110217135218j:image:w400

Hadoopへのマイグレーションってどう?

    • それなりに工数がかかることが多い。※OracleからPostgraSQLなどと一緒でHadoopに限った話ではない。
    • 別のメリットを見つけることが大事。スケーラビリティの確保など。
「何かの壁をぶち破るために」

何かとは処理時間であったり、大量のデータ(テラバイト)かもしれない。

マイグレーション前と全く同じ品質・機能・SLAを求められるとつらい

機能差違がつきもの。割り切って、メリットを享受したほうが幸せ。既存の処理は1行引っ張ってきて、どうこうする、というRDBMS前提の処理が書かれていることが多い。

そのままHadoopにもってくるのではなく、処理をまとめる(ジョブを減らす)と性能向上が顕著

ジョブ、クエリを減らす。

どのバージョンがいい?

コミュニティから提供されているのは0.21系。周辺プロダクトは0.21系を未サポート。安定性重視の場合はCDH(クラウディア社)

デブサミ 【17-B-4】チケット管理システム大決戦 JIRA vs Redmine vs Trac 〜ユーザーが語る、なぜ私はこのツールを使うのか

01:38

鈴木雄介 氏 / 小川明彦 氏 / 吉羽龍太郎 氏 / 大澤俊介 氏

パネルセッションです。チケット管理システムに関する質問に回答する形で進行していました。

まとめ

チケット管理システムはツールである。必要に応じて最適なものを選ぶことが大切。

チケット管理システムをすべて比較できるひとは少ない。色々調べて、聞いて、使ってみると良い。

開発の規模が大きくなると導入効果も上がる。

  • 前提として導入するだけじゃなくて、ちゃんとみんなで使うこと、日々改善すること。
  • コミュニケーションにかかるコストを節約できる。
  • 頻繁な変更への対応、メンバ間、顧客との課題共有がしやすい。

資料が公開されています。あわせてどうぞ。

スピーカー紹介

Atlassian(アトラシアン) 大澤さん @Sean_SF
  • 製品をアジャイル開発している会社。JIRA使用歴2年
  • チケット管理システムを使うことが普通だった

f:id:hdk_embedded:20110217142503j:image:w400

チケット管理システムはたくさんあるが、何が違うのか?

詳しいひとに聞いてみよう。 #itsjp

鈴木雄介:グロースエクスパートナーズ株式会社

ソフトウェアアーキテクトが知るべき97のことの著者

ソフトウェアアーキテクトが知るべき97のこと

ソフトウェアアーキテクトが知るべき97のこと

小川明彦:業務系Webシステム開発に従事

Redmineによるタスクマネジメント実践技法の著者

Redmineによるタスクマネジメント実践技法

Redmineによるタスクマネジメント実践技法

チケット駆動開発の体験談をまとめて出版。

吉羽龍太郎:スクラムマスター/アジャイルコーチ @Ryuzee

アジャイルの導入支援。スクラム道の共同設立

TIS野村総合研究所を経てベンチャーCTO

なぜチケット管理システムを使うのか

プロジェクト全体状況の把握とプライオリティ付け

10個のプロジェクトが同時に進行、1つずつの管理が難しくなった。Excelどこ?なにがあるの?

メールでみるとプライオリティ付けができない。2週間前のメールとかが最近のメールで上書きされてしまう。

コストの削減

人数が増えるとコミュニケーションコストが大きくなる。チケットを介してやりとりすることで、見えないコストが減る。

(=無駄なところにとられるコスト。エクセルメンテナンスや各資料の不整合)

頻繁な変更への対応

開発途中で要件がかわるのがほとんど。だれがなにしているのかが「ガントチャートでしか見えない」状態での仕様変更は、タスク依存関係がちゃんと見えなくなる。

突発的な仕様変更などで計画立て直しでリーダーさんの負荷が高い

情報の共有、蓄積

一人で複数の案件を担当していたら、メンバーが替わったときに引き継げない。メールの内容をみつけることができず、ナレッジがたまらない。

DTSやITSがあれば、すぐ見つけられる。スキルの追跡が可能=ナレッジ蓄積しやすい。

なぜそのツールを使っているのか?

Trac

f:id:hdk_embedded:20110217143727j:image:w400

RedMine
  • チケット集計機能、進捗管理機能が優れている、ガントチャートやロードマップ。
  • Agile開発の特徴を理解できる。イテレーション、リリース計画。
  • 構成管理パターンが理解できる。メインラインモデルは複数プロジェクト対応、タスク管理できる。
    • トピックブランチはチケット単位でブランチできる。

→ いろんなViewをつかってチケット属性と進捗の観点でひも付けがうまい。バーンダウンチャート、かんばん、レポート、など自動で作り出せる。

f:id:hdk_embedded:20110217144141j:image:w400

ツールをどうやってつかうか?

プロジェクトの大きさ、内容で使い分けができるのが良い。Tracは柔軟性が高い。

 JIRA(じら)
  • シンプルで必要十分な管理方法
  • マルチプロジェクト前提
    • サブシステム、フェーズ、目的で選べる
  • 優秀なコミュニケーションツール
    • 検索クエリーの共有、オフィス製品との連携(ExcelWordでの出力)、レポート、リリースノート

f:id:hdk_embedded:20110217144455j:image:w400

コミュニケーション

アジャイルF2Fとよく言う。隣にいるのになんでチケットを切る必要があるのか、共有して残したいものを確認しよう。

使い始めると楽しくなってきてチケットをやたら切るひとがいる。粒度を合わせないと。

見積もりと一緒でチケットの粒度が難しい。アジャイルはall or nothingの世界

チケット管理システムに商用を使うメリット

リリースタイミングが明確、サポートがついてくる。証跡を残すなどワークフロー設定ができると可能。

ドックフーディング:アトラシアン社がJIRAを使っている。

利用について

オープンソースプロジェクトの場合はJIRAは無償で使える。

ボーダフォンさんのチケット管理システムの事例:JIRAにチケットを切ると印刷されてでてくる、ホワイトボードRFIDをつかってはる

チケット管理システムの導入効果

JIRA
  • コミュニケーション精度が向上。抜け漏れがなくなる。
  • 起票からデプロイまでの流れが明確
  • 負荷分散の目安につかえる。
  • 顧客とも円滑に
    • 問い合わせや依頼の抜け漏れがなくなる
    • ユーザ同士の会話が見えてくる
    • 定例会はExcel出力して提出できる
  • 課題(できれば嬉しいな)
    • プラグイン機能を活用して、自社インフラとの連携したい
    • PMとして、顧客からのサービスデリバリーまでを一元管理
    • 蓄積情報の活用(どのコンポーネントがやばいのか、どういうチケットが多くなれば活性度が落ちるのか、など)

Redmine

チケット駆動開発アジャイルじゃないと使えない、わけではない。

ウォーターフォール型でもバグを改修するタイミングではとても有効。

Trac
  • チケット管理全般。導入しただけでは効果は上がらない。
  • うまく使うことでアジリティや顧客満足度が向上する
    • チームで使い方や運用方法を決める必要がある。

ツールの導入で効果を出すために
  • プロジェクトのはじめから使う。
  • プロジェクト成功のための場につかう。全員がそこをみることが大事。
    • 顧客に公開もする。とてもよい。

定期的な棚卸しをする。ゴミ箱にしない。放置されたチケット=プロジェクトの健康状態

自分たちで使い方を継続的に改善する★

 最後に「チケット管理システム」について

もっと広げていきたい。エクセルを使うこと(ツールにこだわりすぎる)がボトルネック、変えていきましょう。

プロジェクトに適したツールを選ぶこと。ツールに限らず、みんなで管理していくことが大事。

議論のつづきはハッシュタグ #itsjp で。

デブサミ 【17-C-5】Spring as a Cloud Platform 河村嘉之 氏

01:50

日本Springユーザー会 河村 嘉之

セールスフォースドットコム テクニカルコンサルタント

f:id:hdk_embedded:20110217153048j:image:w400

まとめ

Cloud上でSpringのプログラミングモデルでのアプリケーション開発が可能

そのまま動くことよりも、クラウドが提供する機能に注目すべき

クラウドの特徴に合わせて選択)

Springの源流

Expert One-on-One J2EE Development without EJB

Expert One-on-One J2EE Development without EJB

J2EE Development without EJB, Rod Johnson / 2004

↑時代背景としてEJBはあまり流行らなかった。その反動でSpringがでてきた。

Spring Framework

世界で一番有名なEnterprise Javaフレームワークの一つ

その後のJavaはSunがなくなってOracleが買ってJavaが終わったのか?

プラットフォームとしてのJava

言語としてのJava → ある程度落ち着いて、新しいものが出てくることはあまりなくなった。

プラットフォームとしてのJava VM → まだまだ発展途上。Java VM上で動く言語がたくさん出てきた。

JRuby,Jyhon,Groovy,Scalaなど

Springが終わったのか?

一年前はある程度Yes、Spring3.0にうきうきしなくなった。

JavaでのWebアプリケーションも枯れてきた。使って当たり前、新しいものが始まる場所ではない印象だった。

今は状況が変わった。Spring Sourceを中心に、おもしろくなってきた。

現在のSpring

Springがではじめて2004年から7年の時間が経過。現在のSpringSourceが目指すところ

3つの軸で進化している。

  • 開発サイクル
  • プラットフォームスタックとして上位層、下位層との親和性
  • Springの走るプラットフォームが成長

Google App Engine

JavaPythonが動く。Springのアプリケーションも動かせる。

VMForce

(参考)http://www.publickey1.jp/blog/10/javavmforcesalesforcevmware.html

まとめ

Cloud上でSpringのプログラミングモデルでのアプリケーション開発が可能

そのまま動くことよりも、クラウドが提供する機能に注目すべき

クラウドの特徴に合わせて選択)

デブサミ 【17-C-6】SpringのこれからとJava開発者向けの次世代RAD、Spring Roo Stefan Schmidt 氏

02:07

Stefan Schmidt氏:VMWareのSpringSourceチーム

講演内容はSpring Rooのデモとコンセプト、Springの今後の計画について。

デモンストレーション

Spring Rooでプロジェクトを作成するデモンストレーションでした。非常に軽快にデータベースをつくり、ブラウザから

データ編集をしていました。20分の短期間で、モデル定義からコード生成、テストまで。生産性の高さが伝わってきました。

以下、デモとSpringの周辺製品の情報です

ディレクトリ作成、Spring Rooを使うと画面が切り替わる

hintと入力すればヘルプ、機能が紹介される。かなり簡単にシステム構築できる。

プロジェクトを作成、トップレベルパッケージを設定

Rooはプロジェクト構造を作成、いくつかのフォルダの中はコンフィグファイルが格納されている

つねにhintと入力することでコンテキストにあったヒントが出てくる。

コンフィグ設定

EclipseTool > Datebaseと選ぶだけで新しいデータベースの設定が完了する

プロジェクトの要素を作成する

新しいドメイン Speaker を作成。自動的にSpeaker.javaテストケースが生成される

Speakerはフィールド 名前/企業を持つ

新しいドメイン Conferenceはフィールド 日付を持つ。

ConferenceとSpeakerの関係を関係づけると単純ではあるが、ドメインモデルができる。

ここまでやったことが機能するか、確認するためのテストを実行(テストケースの自動生成?)

Web画面の生成

Rooに対してはWebサブシステムを指定するだけ。Eclipceで確認するとコードは自動生成されている。(Get/Setなど)

Rooが何をしているのか?はコードをみれば確認することができる。ただし確認はできるが、Roo側で保守、変更されるコード。

直接編集はできない。そのかわり、カスタマイズするための機能もある。

カスタマイズのためにJavaに変換した場合、Rooはメンテしない(できない)

SpringMVC以外に、Google WebToolKitが使える。

ServerBaseのJavaもサポートする予定。

Web画面の確認(MVCフロントエンド)

WebブラウザからSpeaker:2名分を追加、Conference:今日の日付で追加

つづけて参加するスピーカーを選ぶことで簡単に登録、ひも付けできる。

オブジェクトの確認などもListView,ページネーションもフレームワークでサポートされている。

Rooは9カ国語をサポート。GoogleWebToolKitのフロントエンドもあり、MVCフロントエンドと同様の機能がある

デモの補足

ほんの一部しか紹介できなかったが、ほかにもDatabaseリバースエンジニアリング機能等が追加されている。

これは既存のデータベースアプリケーションに取り込むための移行ツール。

コミュニティも活発。SpringSourceの外でも多くの活動がある。活動の一環として日本語の翻訳も進んでいる。

Spring Rooフレームワークの今後

現在のRooフレームワークはVersion3。Spring Expression Languages(コード作成補助)、新しいフォーマットのサポート、非同期処理を実現してきた。次のバージョンは3.1。

特徴は

→ V3.1ha近日中にDeveloper Releaseされる

次は3.2

今年の末を予定。Java7のサポートが目玉。JVC4.1、Fork/Joinモデルもサポート。並列型マルチコアプログラミングで活用できる。

Springフレームワーク以外のもの
特に注目して欲しい機能

環境プロファイル、キャッシュ機能、非SQLのサポート

Spring Roo

とても簡単にアプリケーションを作れる。アプリケーション開発時のみRooを使用。

本番時はRooに依存しているものはない。返還後のコードがあればOK。Rooの開発はオーストラリアシドニーで行われている。日本との時差もすくなく積極的に取り組んでいる。

ryuzeeryuzee 2011/02/19 09:14 セッションに参加いただいてありがとうございます!
しょーもない話で恐縮ですが、僕の名前 s/竜/龍 ですw

hdk_embeddedhdk_embedded 2011/02/22 14:31 わー、ごめんなさい!なおしました。
セッション、とても良かったです!

ryuzeeryuzee 2011/02/23 16:16 ありがとうございます!
Shibuya.tracにもぜひお越しくださいませ!