Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Hier ansehen

1 von 50 Anzeige

タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-

Herunterladen, um offline zu lesen

日本Javaユーザー会 JJUG CCC 2015 Fall AB-4セッションの発表資料です。

日本Javaユーザー会 JJUG CCC 2015 Fall AB-4セッションの発表資料です。

Anzeige
Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (20)

Anzeige

Ähnlich wie タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.- (20)

Weitere von Takakiyo Tanaka (15)

Anzeige

Aktuellste (20)

タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-

  1. 1. © 2013 IBM Corporation JJUG  CCC  2015  Fall タイムマシン採⽤用: 明⽇日のエンタープライズJavaの世界を予想する   -‐‑‒Java  EE7/クラウド/Docker/etc.-‐‑‒ #ccc_ab4
  2. 2. #ccc_ab4 タイムマシン経営 •  「海外で成功したビジネスモデルは   数年年遅れで必ず⽇日本にもやってくる」 –  90年年代に孫正義⽒氏が提唱した⼿手法 •   ⽶米国などで成功したビジネスモデルを  国内でいち早く取り⼊入れることにより  ⼤大きな成功を収めた
  3. 3. #ccc_ab4 リスクの最⼩小化 を優先   ミッション・クリティカルな アプリケーションの管理理、運⽤用 マラソンランナー q  サービスレベル重視 q  ウォーターフォール開発 q  ⻑⾧長期に渡るシステム構築 イノベーションのスピード を優先 成⻑⾧長機会のための 探索索、開発、デプロイ スプリンター q  スピード開発重視 q  試⾏行行錯誤、継続的デプロイ q  早期のシステム構築/改修 Web系企業 SI系企業 ⼆二つの⽂文化に分かれる⽇日本のIT企業
  4. 4. #ccc_ab4 しかし,異異なる技術が使われるわけではない § 新しい技術は, 最初にWeb系の企業で採⽤用が進む – 試⾏行行錯誤による技術適⽤用 – トラブルの発⽣生と解析,対応 – リリース後の効果確認 § 数年年たち, ⼗十分な実績が確認された技術がSI系の企業でも採⽤用される – ベストプラクティスの確⽴立立 – 問題判別のノウハウの蓄積 – 適⽤用前のROIの確認 4
  5. 5. #ccc_ab4 例例えば,ソースコードの履履歴管理理 § かつてのSI系企業は – 共有ディスクでソースファイルを管理理 – 変更更前のコードはコメントで残す – 変更更内容は台帳で管理理 § 現在は,SI系企業でも VCS(バージョンコントロールシステム)を使⽤用 – 変更更は「コミット」で管理理 5
  6. 6. #ccc_ab4 タイムマシン採⽤用 § Web系企業の動向を⾒見見れば エンタープライズの将来がわかる – 全ての新技術がSI系企業で 普及するわけではない – 成功が確認された 技術が採⽤用される 6
  7. 7. #ccc_ab4 いま、まさに採⽤用が進んでいる技術 モバイル クラウド ビッグデータ
  8. 8. #ccc_ab4 これから採⽤用されることが確実な技術 § アプリケーションのモダン化 – HTML5アプリケーション – マイクロサービスアーキテクチャー § Java  EE  7  /  Java  SE  8 § システム構築の⾃自動化 – Docker – CHEF 8
  9. 9. #ccc_ab4 9 アプリケーションのモダン化
  10. 10. #ccc_ab4 HTML5環境の新しいアプリケーションスタイル § クライアントMVC・サーバーの機能はAPIとして利利⽤用 10 Web Browser Application Server Application HTTP Request HTML/JS Controller Session Data View Business LogicModel DomainDomain Web Browser Application Server Application View HTML/JS Controller Data Store Model Model DomainDomain RESTful or WebSocket JSON Business Logic 従来のWebアプリケーション Single Page Application (SPA)
  11. 11. #ccc_ab4 HTML5アプリ・クライアントMVCのメリット ユーザー・エクスペリエンスの向上 「使いやすいWebアプリケーションが作れる」 § 従来のフォームベースのWebアプリケーション, ページ遷移を前提としたアプリケーションは, 決してユーザーにとって使いやすいものではない § HTML5アプリケーションは, 多くの「ブラウザ上で動くRichクライアント」が模索索され 試⾏行行錯誤が繰り返された末の最終結論論 11
  12. 12. #ccc_ab4 マイクロサービス・アーキテクチャー § 単⼀一の(モノリシックな)アプリとして実装するのではなく, 複数のサービス・APIの統合として実装する – 変更更の影響範囲を極⼩小化 – 機能の再利利⽤用を促進 12 http://martinfowler.com/articles/microservices.html
  13. 13. #ccc_ab4 なぜサービスへの分離離が必要なのか § かつては 「部品化・サービス化・API化による再利利⽤用」 といっても絵に描いた餅状態だったが... § これからは エンタープライズの世界でも必須の考え⽅方になる 13 なぜなら・・・
  14. 14. #ccc_ab4 ブラウザ・クライアント環境の急激な変遷 § MS  IE  6  →  7/8/9/10/11/MS  Edge  ... § iOS  4/5/6/7/8/9  ... § Firefox/Chrome/Safari/Android... 14
  15. 15. #ccc_ab4 ブラウザ上のJavaScriptの群雄割拠 15
  16. 16. #ccc_ab4 Webアプリケーションの短寿命化 § ⼀一度度作成したアプリケーションを 何年年も使い続けることは不不可能になった § 年年に数回の更更新では変化に追いつけなくなった ↓しかし § 企業の基幹系システムをそんな頻度度で更更新はできない ↓どうするか § フロントエンド/クライアントUIは使い捨てにする § バックエンドを⻑⾧長期間つかっていく 16
  17. 17. #ccc_ab4 マイクロサービスも普及期に § 事例例やノウハウもたまってきました 17 http://www.atmarkit.co.jp/ait/articles/1507/17/news019.html
  18. 18. #ccc_ab4 18 Java  EE  7  /  Java  SE  8
  19. 19. #ccc_ab4 Java  Enterprise  Edition  7  (Java  EE  7) 19 あれから 2年年半がたちました
  20. 20. #ccc_ab4 JavaOne  2015 20
  21. 21. #ccc_ab4 WAS  Libertyプロファイルは V8.5.5.6で Java  EE  7  Full  Platform対応 21
  22. 22. #ccc_ab4 22 WASの新しいランタイム:Libertyプロファイル WAS V8.5.5 Liberty & WDT Java EE 7準拠 Java EE 7のFull Platform標準に 準拠したアプリを完全サポート 最新のJava SE 8もサポート Unzipによる導⼊入とデプロイ パッケージをした サーバー  + アプリ  + 構成情報を Unzipでデプロイ可能 簡単な構成と動的変更更 最低限必要な構成ファイルは server.xmlひとつだけ デフォルトベースで簡単構成 構成変更更は再起動なしに反映 軽量量ランタイム メモリー使⽤用量量が⼩小さい: 60MB程度度〜~ ディスク使⽤用量量も100MB以下 起動が速い 起動時間: 5秒程度度 統合ツール(WDT) ⾼高機能なEclipse⽤用の連携ツールを無償で提供 Eclipseから簡単に使⽤用可能 ⾃自動化ツールとの連携 多くのOSSツールに 無償でプラグインを提供
  23. 23. #ccc_ab4 軽量量・⾼高速なランタイム § 軽量量 – 数⼗十メガバイトのメモリ消費/100メガバイト弱のディスク消費 – コンテナや仮想環境への集約が容易易に § ⾼高速起動・動的変更更 – 数秒以内でサーバーが起動 – サーバーの構成変更更や アプリケーションの変更更も 即座に反映 § モジュール構造のランタイム – 提供機能をFeatureとして モジュール化 – 必要なFeatureだけを選択して 導⼊入・起動 <featureManager>        <feature>jsp-‐‑‒2.3</feature>        <feature>jdbc-‐‑‒4.1</feature>        <feature>jaxrs-‐‑‒2.0</feature>        <feature>sessionDatabase-‐‑‒1.0</feature>        <feature>ssl-‐‑‒1.0</feature> </featureManager> 構成ファイル  server.xml ServletJSPJDBCSSL JAX-‐‑‒RS sessionDatabase 依存関係も ⾃自動的に解決 JSON
  24. 24. #ccc_ab4 Java EE 7の三つのゴール § HTML5環境への対応 § 開発⽣生産性の向上 § エンタープライズ・ニーズへの対応 24 ⼤大幅な機能拡張
  25. 25. #ccc_ab4 フレームワークの世代交代 § Struts  1.x – 2013年年  EoL(End  of  Life)の発表 – 2014年年  脆弱性発⾒見見による混乱(CVE-‐‑‒2014-‐‑‒0114) § Seaser2 – 主要開発者のプロジェクト離離脱により新機能追加の停⽌止 – Ajax/HTML5連携やRESTful  Webサービス対応の不不備 – 2016年年でのサポート終了了宣⾔言 25
  26. 26. #ccc_ab4 2000年年代前半のWebアプリケーション § まだまだ未完成で⼒力力不不⾜足のJ2EE仕様 →多くの「アンチJ2EE技術」の登場 § コンテナ上にフレームワークを追加し その上にアプリケーションを構築することが主流流に – Open  Sourceフレームワーク – ベンダー製フレームワーク – 独⾃自フレームワーク 26
  27. 27. #ccc_ab4 2015年年のWebアプリケーション事情 § Java EE提供の各種仕様の機能増強・完成度度の向上 「標準仕様で⼗十分」 – CDI 1.x :依存性注⼊入 •  HibernateやSeaser2の提供していた機能をとりこみ – JSF 2.x :Webアプリケーション・フレームワーク – JPA 2.x :O/Rマッピング •  いずれもVersion 1.xから⼤大幅な機能強化 27 → Java EEへの回帰
  28. 28. #ccc_ab4 JSF JSP / EL Java  EE  7の標準的なアプリケーション構成 JAX-RS WebSocket CDI                    . EJB / JTA JPA Database •  画⾯面デザイン -‐‑‒  JSF  /  JSP  /  EL •  外部連携 -‐‑‒  JAX-‐‑‒RS  /  WebSocket •  依存性注⼊入・ビジネスロジック -‐‑‒  CDI  /  EJB  /  JTA •  DB連携・ORマッピング -‐‑‒  JPA
  29. 29. #ccc_ab4 Java  EE  7を採⽤用する価値 「標準」である強み § 多くのベンダーによるサポート – 特定のベンダーにロックインされることなく使⽤用できる § ⻑⾧長期にわたるサポート – 寿命の⻑⾧長いバックエンドにも安⼼心して採⽤用できる 利利⽤用する「フレームワーク」には, 利利⽤用する「アプリケーションサーバー」より   はるかに強くロックインされる 29
  30. 30. #ccc_ab4 Libertyプロファイルの「ゼロ・マイグレーション」 § 新しい仕様のバージョンに対応するフィーチャーが 追加されても,従来のバージョンも提供されます – 例例)  現在はServlet  3.1フィーチャーが提供されていますが, Servlet  3.0フィーチャーも引き続き利利⽤用できます § アプリケーションで新仕様が必要なければ 従来のフィーチャーをそのまま利利⽤用可能 – ただし, 対応するJDKのバージョンは変更更される可能性があります servlet-‐‑‒3.0 servlet-‐‑‒3.1 servlet-‐‑‒3.0 servlet-‐‑‒3.1 新バージョン 新バージョン ⼀一般的なアプリケーションサーバー WAS  Libertyプロファイル
  31. 31. #ccc_ab4 Java  SE  8:Project  Lambda 31 §   Lambda式 §   型推論論 §   Method  Reference §   Default  Method §   Stream  API ( 引数 ) -> { 処理理 } オブジェクトとして「変数に代⼊入」したり 「メソッドの引数にわたす」ことができる「コード⽚片」
  32. 32. #ccc_ab4 Lambda式とStreamによるループの内部化 § 外部イテレータ – コンテナから順次,要素を取り出して処理理を記述する § 内部イテレータ – 処理理をコンテナにわたして,コンテナが要素ごとに実⾏行行する 32 List<Person> list = ... ; List<String> ret = new ArrayList<String>(); for (Person p : list) { if (p.getGroupId().equals(group)) { String name = p.getName(); ret.add(name); } } return ret; return list.stream() .filter(p -> p.getGroupId().equals(group)) .map(p -> p.getName()) .collect(Collectors.toList()); filter map collect
  33. 33. #ccc_ab4 エンタープライズといえばロギング § ありがちなコード § これがLambda式でこうなる 33 if (log.isLoggable(Level.FINE)) { log.fine("Value = " + getVeryLargeString()); } log.fine(() -> "Value = " + getVeryLargeString()); メリット: ⾼高速化・コードの簡素化
  34. 34. #ccc_ab4 34 既存コードのJava  8への移⾏行行の負荷はそれなり 過去⼆二回(1.1→1.2および1.4→5.0)に匹敵する あるいは,それ以上のインパクトのある⼤大変⾰革 § じつはユーザーコードの変更更は,それほど⼤大変ではない § アプリケーションが使⽤用しているライブラリの Java  SE  8対応がかなり⼤大変になるケースがしばしば § 詳細はCD-‐‑‒2  清⼤大輔さん(株式会社ビズリーチ)のセッション資料料を! Java⾔言語仕様 1st Edition JDK 1.0 1.1 Java⾔言語仕様 2nd Edition J2SE 1.2 1.3 Java⾔言語仕様 3rd (SE 7) Edition J2SE 5.0 Java SE 61.4 7 Java⾔言語仕様  Java SE 8 Edition Java SE 8
  35. 35. #ccc_ab4 最初は新規アプリケーションで § 可能であれば「最初のJava  SE  8アプリケーション」は 新規に開発する案件で採⽤用 § ⼗十分なスキルが蓄積されたあとで 既存のアプリケーションのマイグレーションを § 移⾏行行後は,メンテナンスなどで⼤大きなメリットがあります 35
  36. 36. #ccc_ab4 36 システム構築の⾃自動化
  37. 37. #ccc_ab4 基盤技術者は「ソフトウェア開発者」になる § クラウドの時代にはInfrastructure  as  Codeや Immutable  Infrastructureの考え⽅方が必要 § 実⾏行行環境に問題が⾒見見つかった場合: – 従来は:実⾏行行環境を直接変更更する – これからは:環境を構築する「コード」を修正し,環境を再構築 37 ⼿手作業による 再現性のない作業 (の繰り返し) コード実⾏行行による 均質な作業と実⾏行行結果 ⼤大量量のドキュメント ・作業⼿手順書の整備 短時間で 確実なアウトプット
  38. 38. #ccc_ab4 構築⾃自動化の必要性 § クラウドではサーバー環境も – 必要なときに素早く作成 – 負荷に応じて数を⾃自由に増減 – 不不要になったら環境を削除 § 構築の頻度度はあがり かけられる時間は減少する 38
  39. 39. #ccc_ab4 Infrastructure  as  Codeの効果 § 構築時間の短縮 § ⼿手動設定によるミスの防⽌止・属⼈人性の排除 § 構成のバージョン管理理 39
  40. 40. #ccc_ab4 コンテナ技術:Dockerの普及 § OSも含んだ「仮想マシン」ですら負荷が⾼高い – サイズの⼤大きな仮想ディスクイメージ – OSの起動・停⽌止時間 – メモリリソースの消費 § 「仮想マシン」から「コンテナ」へ – アプリケーションを実⾏行行するのに 必要なリソースだけをイメージに格納 – OS内に隔離離された領領域を作成 – 短時間に配備・起動が可能 § Linuxをベースとしたコンテナ技術Dockerが デファクトスタンダードになりつつある 40
  41. 41. #ccc_ab4 WAS  LibertyはDockerイメージも提供 § Dockerで稼働するWebSphere  Application  Server   Liberty  プロファイル,  フルプロファイルもサポート対象 § 開発⽤用途で利利⽤用可能なWAS  Liberty  イメージは Docker  Hubからpullして使⽤用 – Java  EE  7対応の最新版  WAS  V8.5.5  Liberty  ドライバーを提供 – Liberty  Core,  Base,  NDの商⽤用ライセンスを使⽤用し,   Docker  Hubにあるイメージをアップグレード可能 https://registry.hub.docker.com/_̲/websphere-‐‑‒liberty/
  42. 42. #ccc_ab4 各種OSSツールとの連携 各種CI・Buildツールとの 連携機能をGitHubで公開 https://github.com/wasdev
  43. 43. #ccc_ab4 WAS  Libertyの無償利利⽤用 ⼀一つの企業につき2GバイトのJavaヒープメモリに限定し,テストおよび本 番でのLibertyプロファイルを無償で使⽤用が可能(サポートはなし)になる オプションを提供 ü  ⼩小規模な開発を無償ではじめて, 必要に応じて拡張 ü  現在の無償の開発者オプションに加え 実際の本番環境での利利⽤用を確認できる ü  パフォーマンスや機能拡張に優れた WAS  Liberty  Base  エディションの全機 能を利利⽤用可能 ü  オンプレミスとパブリッククラウドの 開発オプションを柔軟に選択可能 Libertyプロファイル無償提供の意義 無償オプションの利利⽤用⽤用法 §  WASdev.netから開発者版をダウンロード 提供されるライセンスファイルを適⽤用 §  WASdev上の⽂文章やForumを利利⽤用して 問題の解決が可能
  44. 44. #ccc_ab4 44 One  more  thing...
  45. 45. #ccc_ab4 エンタープライズにも来るかもしれない技術 § サーバーサイドJavaScript 45 サーバーブラウザ APIクライアント モバイル var  http  =  require("http"); http.createServer(function(request,  response)  {    response.writeHead(200,  {"Content-‐‑‒Type":  "text/plain"});    response.write("Hello  World");    response.end(); }).listen(8888);
  46. 46. #ccc_ab4 Node.js § サーバーサイドJavaScriptの デファクトスタンダードの地位を確⽴立立 – 2009年年に開発、2012年年ぐらいから普及 – クライアント側でのJavaScriptの重要性が増すにしたがい台頭 § 評価された理理由 – Google製V8エンジンによるJavaScriptの⾼高速実⾏行行 – シングルスレッドのイベント・ループ,ノンブロッキングI/O – Node.js⽤用のモジュールが、エコシステムにより⼤大量量に存在 既存のものを組み合わせるだけでそれなりの物ができてしまう 46
  47. 47. #ccc_ab4 実は、IBMもNode.jsを提供してます §  IBM  SDK  for  Node.js  V1.2 §  OSSのNode.js  version  0.12.7ベース(2015/7/9リリース) –  現在の最新のNode.jsは5.0.0  (2015/10/29リリース) §  Intelアーキテクチャーに深く依存したV8エンジンを改良良し IBM  POWER  /  zアーキテクチャーに適合 –  AIX  /  Linux  on  Power  Systems  版 –  Linux  on  z  Systems  版 §  RAS(Reliability,  Availability,   and  Serviceability)機能を追加 §  Linux  x86  /  Windows  /  Mac  OS  X  版も提供 §  有償でサポートを提供
  48. 48. #ccc_ab4 2015年年9⽉月 IBMはStrongLoop社を買収しました § Node.js  向けの エンタープライズ ソリューションを 有償/OSSで 提供する企業 48 StrongLoop  Arc Data  Connectors Mobile  SDKs Enterprise  Connectors Process  Manager Monitoring  &  Tracing LoopBack:  API  Server Express  Framework Enterprise  Support API  Gateway  (beta) Open  Source Commercial License  Model Node.jsの Webアプリ・ フレームワークの デファクト MEAN(MongoDB,  Express,  AngularJS,  Node.js)
  49. 49. #ccc_ab4 49 最後に
  50. 50. #ccc_ab4 みなさんの⼒力力が必要です § 新しい技術が, あなたの会社でいつ採⽤用されるかを決定する もっとも⼤大きな要因は「現場の⽅方たちの声」です。 § ⼗十分に検証された新技術の導⼊入は, 利利⽤用者・開発者・経営者のみなにメリットをもたらします § 変わることを楽しみましょう! 50

×