JJUG Bizreach DBFlute 2014
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

JJUG Bizreach DBFlute 2014

  • 180 views
Uploaded on

http://www.java-users.jp/?page_id=1292#R2-5

http://www.java-users.jp/?page_id=1292#R2-5

More in: Engineering
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment

Views

Total Views
180
On Slideshare
124
From Embeds
56
Number of Embeds
1

Actions

Shares
Downloads
1
Comments
0
Likes
2

Embeds 56

https://twitter.com 55

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • つぎ、ひとーつ
  • つぎ、ふたーつ
  • つぎ、みっつ
  • つぎ、ちょっとBreak
  • つぎ、よっつ
  • つぎ、いつつ
  • つぎ、むっつ
  • つぎ、さてさて
  • まず、Scala
  • そして、Java
  • もう、まとめ
  • もう、まとめ
  • ご清聴ですよー
  • ご清聴ですよー

Transcript

  • 1. Javaだからこそできる、 ビズリーチ、 攻めのDB変更 久保 雅彦 jflute
  • 2. ビズリーチの紹介 Bizreach 選ばれた人だけの会員制転職サイト CareerTrek レコメンド型転職サイト ZuKnow 友だちと競える暗記帳アプリ RegionUp アジア展開のビズリーチ! その他、新進気鋭サービス続々!
  • 3. 自己紹介 久保 雅彦 :: jflute (じぇいふるーと) DBFluteの作者(メインコミッタ) ビズリーチで教育・Javaサイドアーキテクト jfluteの日記 :: http://d.hatena.ne.jp/jflute/ Twitter: @jflute / Facebook: dbflute
  • 4. さて DB変更、 好きですか?
  • 5. そりゃまあ DB変更しないと 生きていけないのであれば... …やるさ
  • 6. ビズリーチでは DB変更して会員が喜ぶなら… やる!
  • 7. ビズでのイテレーション 二週にいっぺんリリース // 巨人プロジェクト 毎週リリース // 発展途上プロジェクト 週に三回くらいリリース // 黎明期プロジェクト
  • 8. 普通に発する言葉 「今回リリースの DB変更は?」
  • 9. そこで
  • 10. DBFluteとは? 「DB変更に強い」 をテーマにした開発支援ツール
  • 11. DBFluteのターゲット BtoCなどのサービス開発(事業会社) リーン・スタートアップ インクリメンタル開発 DB設計と実装の同時開発 ※ビジネスのための泥臭いツールである
  • 12. 根本 DB変更が発生すると、 何が困るの?
  • 13. ひとーつ! 密かにデグレる
  • 14. ジレンマ すべてのテストは不可能 UnitTest自体も修正の嵐 「現場のテストコードはどこへ?」 http://d.hatena.ne.jp/jflute/20120806/1344262853
  • 15. そこでコード生成 (デモ)
  • 16. ConditionBean RDB指向の タイプセーフ
  • 17. ConditionBeanの実装
  • 18. 外だしSQL(2WaySQL) 引数DTOも検索結果DTOも自動生成! そして、外だし一括実行!
  • 19. 外だしSQLの手順 2WaySQLを書く Sql2Entityを叩く // もろもろDTO自動生成 自動生成クラスで外だしSQLを呼ぶ ※詳しくは、オフィシャルドキュメントにて
  • 20. 100%検知は無理でも… 30個自力で探すのと、 20個は自動検知で10個だけ 探せばいい、では大違い!
  • 21. ふたーつ! ドキュメントが古くなる (えっ、何が変わったの?)
  • 22. ジレンマ 手メンテは絶対に無理 9割くらい正しい テーブル定義なんて無意味
  • 23. そこでドキュメント生成 (デモ)
  • 24. SchemaHTML ※SchemaHTMLでググってみてください
  • 25. HistoryHTML ※HistoryHTMLでググってみてください
  • 26. ドキュメントの生成手順 1. DBのメタデータを取得して… manage.bat(sh) の 21 (jdbc) を叩く 2. そして、ドキュメント生成 manage.bat(sh) の 22 (doc) を叩く ※詳しくは、オフィシャルドキュメントにて
  • 27. みっつ! みんなのローカルDBが 古くなる
  • 28. ジレンマ 確かにalterするの面倒 なれの果ては結合直つなぎ…
  • 29. そこでReplaceSchema (デモ)
  • 30. ReplaceSchema運用 誰からDB変更したらDDLコミット みんなはFetch&Pullしたら ReplaceSchema => ローカルDB最 新 ※最新テストデータも一緒に登録される
  • 31. ちょっとBreak ビズリーチの DB変更風景
  • 32. DB変更の流れ ERMaster-bでスキーマ変更 (ERDドリブン) DDL生成 => ReplaceSchemaへ渡す DBFluteで自動生成 (DB再構築&コード生成) DDLと自動生成クラスをコミット みんなは Fetch&Pull して、ReplaceSchema SchemaHTMLとHistoryHTMLを確認
  • 33. 全員DB設計者 シニアも新卒も、 DB変更する!
  • 34. 格言 SQLが書けるだけのエンジニアでは、 DBは守れない (モデリング力重視)
  • 35. 疑問 「コンフリクトしません?」
  • 36. 回答 「だいじょうぶ!」
  • 37. この方(!?)を…
  • 38. 持っている人がDBAです
  • 39. 鉄の掟 この方(!?)を持っている人 だけが、 ERMasterをさわれる!
  • 40. もうちょい、ちゃんとした話 DB変更用のブランチがあります 画面の修正に必要なDB変更があれば、 各々のチケットブランチが取り込む
  • 41. そしてみんなでレビュー
  • 42. 戻ります DB変更すると、 さらに何が困る?
  • 43. よっつ! 本番とローカルで スキーマ違う!
  • 44. ジレンマ どーーーーーしても 発生しちゃう… ※なんでだよ、って思うかもですが…
  • 45. そこでAlterCheck (デモ) ※時間があれば…m(_ _)m
  • 46. AlterCheckの仕組み 一つ前のDDL + Alter文 = 最新のDDL ※この方程式でチェック
  • 47. AlterCheck運用 リリースしたら現状DDLを保存 普通にDB変更フロー さあ、Alter文書くときにAlterCheck OKなら本番へ ※AlterCheckでググってみてください
  • 48. いつつ! テストデータ作るの つらい(><
  • 49. ジレンマ 手で作るの確かにつらい
  • 50. そこでLoadDataReverse (デモ) ※時間があれば…m(_ _)m
  • 51. LoadDataReverse運用 画面でデータを登録 エクセルデータにリバース ReplaceSchemaで登録できる ※LoadDataReverseでググってみてくださ い
  • 52. 疑問 「FK制約違反にならないの?」
  • 53. 回答 「FKピラミッド通りに出力」 FKなし FKもってる FKちょーもってる まあ、ダメなケース もあるけど… そのときは手で微調整
  • 54. 循環できるデータ 画面で登録データを、みんなで共有 ちょっと手で修正することもできる 循環型テストデータ運用!
  • 55. むっつ! スロークエリさん、 こんにちは
  • 56. プレゼン資料作りながら心配に… まだ、時間あります?
  • 57. ジレンマ 設計が積み上げなので、 データ量がなかなか読めない ※スロークエリは嬉しい悲鳴ではありますが…
  • 58. もいっこジレンマ スロークエリ出ても、 「それ、どの画面のSQL?」 って、意外にわからない
  • 59. そこで、SQLとアプリのマッピング (デモ) ※時間があれば…m(_ _)m
  • 60. グラフ化されたもの! (会場の方にだけちょっとお見せします) ※時間があれば…m(_ _)m
  • 61. スロークエリ管理 SQLに、実行クラス名が入る(DBFlute) Fluentdで抽出 to ElasticSearch Kibanaグラフ化 => メソッドのトップ10 「SQLに呼び出しActionを埋め込み」 http://dbflute.seasar.org/ja/manual/function/helper/safl ute/friendlylogging.html#calllersqllog
  • 62. SQL発行回数管理 SQLの発行回数を数える(DBFlute) 1リクエスト30回以上で警告ログ まだ、Kibanaに載ってないが…いつか 「RequestごとのSQLの発行回数」 http://dbflute.seasar.org/ja/manual/function/helper/saflute/fri endlylogging.html#sqlcountlog
  • 63. DBFluteがやっていること DBFluteは、 SQLを管理するための 拡張ポイントを用意している
  • 64. さてさて お知らせ
  • 65. ビズリーチでは Scalaでサービス開発 してみたい方、 大募集!
  • 66. Scalaの勉強会も活発 「Daily Scala始まりました」 https://codebreak.com/blog/shimamoto/page/c58202/ ※Scala未経験でもだいじょうぶ、 Scalaプロフェッショナルがすぐそばにいます!
  • 67. jfluteも勉強中 「DBFlute on Scala パイロット版」 http://d.hatena.ne.jp/jflute/20140904/onscala ※ (サイン入り)「Scala逆引きレシピ」が手放せない(^^
  • 68. もちろん Javaでサービス開発 してみたい方も、 大募集!
  • 69. 疑問 「DBFluteなんてまっっったく、 知らないんですけど…」
  • 70. 回答 「知ってたら、 ビックリしますよぅ」
  • 71. DBFluteハンズオン! 新卒だけでなく、 中途の方もしっかり研修制度あり http://d.hatena.ne.jp/jflute/20130602/1370192962 ※現社員、ほぼみんなDBFlute初めての状態から プロフェッショナルに
  • 72. ビズリーチの社内勉強会 【業務時間“内”のOfficial勉強会・トレーニング】 CTO室共有会 (最先端の技術話) DBFluteハンズオン (1on1フォロー) 【業務時間“外”のサークル活動】 地味な勉強会 (実務レベルの技術話) コードリーディング会 (正面突破) 最近、Spring勉強会も 始まりました!
  • 73. … そして…
  • 74. お知らせ 11月22日(土) ビズリーチガーデンにて、 DBFluteフェスやります! http://connpass.com/event/9544/
  • 75. まとめ DB変更から逃げずに、 ビジネスと向き合うための、 道具を使う。
  • 76. じつは 後半Javaじゃなくても… コード生成なしの ”Alto DBFluteスタイル” で PHPやRubyの現場でも使われることも。 http://dbflute.seasar.org/ja/introduction/altodbflute.html
  • 77. おしまい! ご清聴ありがとうございました