Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。

6,588 views

Published on

JJUG CCC 2016 Spring F-5セッションの発表資料です。 #jjug #jjug_ccc #ccc_f5

Published in: Software
  • Be the first to comment

Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。

  1. 1. ⽇日本アイ・ビー・エム株式会社 クラウド・ソフトウェア事業部 ⽥田中  孝清 Javaプログラマーも もう逃げられない マイクロサービスとAPIの世界 #ccc_f5
  2. 2. ©  2016  IBM  Corpora/on  2   #ccc_f5 アジェンダ q イントロダクション q マイクロサービスアーキテクチャー q Java  EEとマイクロサービス q IBMの提供するSolution ¦ WebSphere  Application  Server ¦ IBM  API  Connect q まとめ
  3. 3. ©  2016  IBM  Corpora/on  3   #ccc_f5 イントロダクション
  4. 4. ©  2016  IBM  Corpora/on  4   #ccc_f5 ⼆二つの⽂文化に分かれる⽇日本のIT企業 リスクの最⼩小化 を優先   ミッション・クリティカルな アプリケーションの管理理、運⽤用 マラソンランナー q  サービスレベル重視 q  ウォーターフォール開発 q  ⻑⾧長期に渡るシステム構築 イノベーションの スピードを優先 成⻑⾧長機会のための 探索索、開発、デプロイ スプリンター q  スピード開発重視 q  試⾏行行錯誤、継続的デプロイ q  早期のシステム構築/改修 Web系企業 SI系企業
  5. 5. ©  2016  IBM  Corpora/on  5   #ccc_f5 Javaは,どちらかというと... 重厚⻑⾧長⼤大な業務システムでの使⽤用が多い
  6. 6. ©  2016  IBM  Corpora/on  6   #ccc_f5 ⽐比較的変化が遅い世界 q 「現在のアプリケーションを   ⼀一から作り直すこともできないし」 q 「社外連携とかクラウドとかは当分先の話」 q 「うちなんか,   まだJDK  1.4のシステムがありますよ」
  7. 7. ©  2016  IBM  Corpora/on  7   #ccc_f5 そろそろ逃げられなくなってきました q ブラウザの進化 q 最新セキュリティ技術への追随 q HTML5による アプリケーションのモダン化 q モバイル対応 q クラウドの利利⽤用
  8. 8. ©  2016  IBM  Corpora/on  8   #ccc_f5 ブラウザ:クライアント環境の急激な変遷 q MS  IE  6  →  7/8/9/10/11/MS  Edge  ... q iOS  4/5/6/7/8/9  ... q Firefox/Chrome/Safari/Android...
  9. 9. ©  2016  IBM  Corpora/on  9   #ccc_f5 セキュリティ:SSL/TSL技術の陳腐化 q  2011 ¦  BEAST(CVE-‐‑‒2011-‐‑‒3389) n  SSL,TLSのCBCモードの処理理の初期化ベクトル決定に関する問題で⽣生ずる脆弱性 q  2012 ¦  CRIME(CVE-‐‑‒2012-‐‑‒4929) n  TLS圧縮機能に存在する脆弱性 q  2013 ¦  LuckyThirteen(CVE-‐‑‒2013-‐‑‒0169) n  SSL,TLS,DTLSのCBCモードの処理理に存在する脆弱性 q  2014 ¦  POODLE(CVE-‐‑‒2014-‐‑‒3566) n  SSL3.0のCBCモードの脆弱性 ¦  POODLE  bites  TLS(CVE-‐‑‒2014-‐‑‒8730) n  POODLE同様の攻撃がTLS1.0でも利利⽤用できる q  2015 ¦  FREAK(CVE-‐‑‒2015-‐‑‒0204  /  CVE-‐‑‒2015-‐‑‒0138) n  過去の暗号輸出規制時のグレードが使われる問題 ¦  Bar  Mitzvah  Attack(CVE-‐‑‒2015-‐‑‒2808) n  RC4⾃自⾝身の脆弱性 ¦  Logjam(CVE-‐‑‒2015-‐‑‒400) n  Diffie-‐‑‒Hellman鍵交換プロトコルを使⽤用したTLS接続で512ビットの輸出グレード暗号にダウングレードされる q  2016 ¦  SLOTH(CVE-‐‑‒2015-‐‑‒7575  /  CVE-‐‑‒2016-‐‑‒0201) n  TLS,MD5のHash衝突の脆弱性 ¦  DROWN(CVE-‐‑‒2016-‐‑‒0800) n  SSL  v2でRSAベースの証明書を使っていると、同⼀一証明書⽤用いたTLS通信が解読される問題
  10. 10. ©  2016  IBM  Corpora/on  10   #ccc_f5 HTML5 q HTML  +  JavaScript技術の普及と 各種ライブラリの台頭
  11. 11. ©  2016  IBM  Corpora/on  11   #ccc_f5 HTML5によるアプリケーションのモダン化 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) サーバーはクライアントアプリにサービス(API)を提供
  12. 12. ©  2016  IBM  Corpora/on  12   #ccc_f5 モバイルアプリケーションへの対応 q モバイルアプリケーションは(多くの場合MEAP経由で) バックエンドシステムをサービスとして利利⽤用 MEAP製品! ! Mobile! Enterprise! Application! Platform! ESB製品! SOAP / HTTP! REST! 基幹システムや
 クラウド・サービス 基幹システムや
 クラウド・サービス 基幹システムや
 クラウド・サービス
  13. 13. ©  2016  IBM  Corpora/on  13   #ccc_f5 クラウド対応 q   クラウドの活⽤用は必須だが  全てをクラウドに出すことはできない ¦ 社内システムと社外クラウドを連携させる Hybrid  Cloudへの挑戦 Hybrid   Cloud クラウド上のシステム Social,  Mobile,  IoT 既存の社内システム CRM ERP 社内の各種データ Transactions Integration  bus APIによる連携
  14. 14. ©  2016  IBM  Corpora/on  14   #ccc_f5 マイクロサービス・アーキテクチャーとは
  15. 15. ©  2016  IBM  Corpora/on  15   #ccc_f5 Microservices  Architecture(MSA)とは q きっかけ ¦ ソフトウェア・ アーキテクチャーの⼤大家 マーティン・ファウラーの 2014年年3⽉月の Blogエントリー http://martinfowler.com/articles/microservices.html
  16. 16. ©  2016  IBM  Corpora/on  16   #ccc_f5 Microservices  Architectureアプリケーション q 単⼀一の(モノリシックな)アプリとして実装するのではなく, 複数のサービスの統合として実装する ¦ 変更更の影響範囲を極⼩小化 ¦ 機能の再利利⽤用を促進 http://martinfowler.com/articles/microservices.html RESTを中⼼心とした
 APIによる連携
  17. 17. ©  2016  IBM  Corpora/on  17   #ccc_f5 2004〜~ IBM,Gartner他 どこかで聞き覚えが・・・ q SOA:Service  Oriented  Architecture
  18. 18. ©  2016  IBM  Corpora/on  18   #ccc_f5 Microservices  ArchitectureはSOAの進化型 q モノリシック・アプリケーション ¦ 全体を単⼀一のコードとして実装 q SOA(サービス指向アーキテクチャー) ¦ サブシステムごとに独⽴立立して実装/依存関係が可視化 ¦ 連携の⼿手段:SOAP,バス型の連携基盤 q MSA(マイクロサービス・アーキテクチャー) ¦ システムを構成する機能(ファンクション)単位でサービス化 ¦ 連携の⼿手段:REST,多対多の直接連携 Monolithic App SOA Micro-services
  19. 19. ©  2016  IBM  Corpora/on  19   #ccc_f5 もっとも⼤大きな違いは・・・ q SOA:Service  Oriented  Architecture ¦ コンサルタントやITベンダーが考案した 「あるべきシステムの姿」 q Microservices  Architecture ¦ 成功した企業のWebシステムから導き出した 「ベスト・プラクティス」 その効果は実証済み
  20. 20. ©  2016  IBM  Corpora/on  20   #ccc_f5 Microservices  Architectureへの第⼀一歩 他のシステムから利利⽤用できるものを探す q システムが提供している機能で 外部から利利⽤用できると 便便利利になるものは? ¦   ユーザーの認証情報・属性 ¦   製品の在庫情報 ¦   発注処理理 ¦   ⽀支払い機能 etc. q APIとして公開する
  21. 21. ©  2016  IBM  Corpora/on  21   #ccc_f5 既存システムのMSA化:キーワードはAPI化 q 「既存システムを分割」することよりも q 「アプリケーションの機能を外部から呼べる」 ようにすることを重要視する q APIの先を順次拡⼤大 ¦   社内の他システムからの呼び出し ¦   Webアプリから呼び出し ¦   モバイル・アプリから呼び出し ¦   社外のシステムから呼び出し API連携 分割>
  22. 22. ©  2016  IBM  Corpora/on  22   #ccc_f5 Java EEとマイクロサービス
  23. 23. ©  2016  IBM  Corpora/on  23   #ccc_f5 2013年年に正式版となった最新仕様:Java EE 7 q Java EE 7の三つのゴール ¦ HTML5環境への対応 ¦ 開発⽣生産性の向上 ¦ エンタープライズ・ニーズへの対応 ⼤大幅な機能拡張
  24. 24. ©  2016  IBM  Corpora/on  24   #ccc_f5 Java EE 7 の主なAPI群 q JSR 342: Java Platform, Enterprise Edition 7 ¦ HTML5環境への対応 n JSR 344: JavaServer Faces (JSF) 2.2 n JSR 353: Java API for JSON Processing (JSONP) 1.0 n JSR 356: Java API for WebSocket 1.0 n JSR 339: Java API for RESTful Web Services (JAX-RS) 2.0 ¦ 開発生産性の向上 n JSR 345: Enterprise JavaBeans (EJB) 3.2 n JSR 346: Contexts and Dependency Injection for Java EE (CDI) 1.1 n JSR 907: Java Transaction API (JTA) 1.2 n JSR 349: Bean Validation 1.1 ¦ エンタープライズ・ニーズへの対応 n JSR 343: Java Message Service (JMS) 2.0 n JSR 338: Java Persistence API (JPA) 2.1 n JSR 236: Concurrency Utilities for Java EE 1.0 n JSR 352: Batch Applications for the Java Platform 1.0
  25. 25. ©  2016  IBM  Corpora/on  25   #ccc_f5 Java  EEのシステム間連携 q J2EE  1.3以前 ¦ CORBA,RMI/IIOP q J2EE  1.4 ¦ JAX-‐‑‒RPC q Java  EE  5 ¦ JAX-‐‑‒WS q Java  EE  6 ¦ JAX-‐‑‒RS レガシーとの接続 エンタープライズ間の連携 あらゆるものとの連携
  26. 26. ©  2016  IBM  Corpora/on  26   #ccc_f5 JAX-‐‑‒RS  2.0:JavaでRESTfulなWebサービスを実現 q アノテーションベースでRESTfulなWebサービスを実装 q JAX-‐‑‒RS  2.0の新機能 ¦ クライアント⽤用のAPI     →  ブラウザとの連携だけでなくシステム間連携も ¦ ⾮非同期クライアント・⾮非同期サーバー ¦ メッセージ・フィルタおよびエンティティ・インターセプター Response response = ClientBuilder.newClient()
 .target("http://www.foo.com/book")
 .request(MediaType.TEXT_PLAIN)
 .get(); @Path("repository") public class TestRepositoryService { @Path("version") @GET @Produces("text/plain; charset=UTF-8") public String getVersion() {
 return "Test Service version 1.0";
 }
  27. 27. ©  2016  IBM  Corpora/on  27   #ccc_f5 CDIによるアプリケーション内のPL  /  BLの分離離 q 画⾯面デザイン ¦ JSF  /  EL  /  Servlet  /  JSP q 外部連携 ¦ JAX-‐‑‒RS  /  WebSocket ¦ JAX-‐‑‒WS q 依存性注⼊入・ビジネスロジック ¦ CDI  /  EJB  /  JTA q DB連携・ORマッピング ¦ JPA JSF JSP / EL JAX-RS WebSocket CDI                    . EJB / JTA JPA Database
  28. 28. ©  2016  IBM  Corpora/on  28   #ccc_f5 MSAからみたJava  EE  7の特徴 q RESTfulなWebサービスへの対応が進み API連携が容易易になった q CDIにより, Java  EEアプリケーション内部の 部品化・サービス化もやりやすくなった
  29. 29. ©  2016  IBM  Corpora/on  29   #ccc_f5 WebSphere Application Server
  30. 30. ©  2016  IBM  Corpora/on  30   #ccc_f5 30 WASの新しいランタイム:Libertyプロファイル WAS V8.5.5 Liberty & WDT Java EE 7準拠 Java EE 7のFull Platform標準に 準拠したアプリを完全サポート JAX-WS, JAX-RS, JMSもサポート Unzipによる導⼊入とデプロイ パッケージをした サーバー  + アプリ  + 構成情報を Unzipでデプロイ可能 簡単な構成と動的変更更 最低限必要な構成ファイルは server.xmlひとつだけ デフォルトベースで簡単構成 構成変更更は再起動なしに反映 軽量量ランタイム メモリー使⽤用量量が⼩小さい: 60MB程度度〜~ ディスク使⽤用量量も100MB以下 起動が速い 起動時間: 5秒程度度 統合ツール(WDT) ⾼高機能なEclipse⽤用の連携ツールを無償で提供 Eclipseから簡単に使⽤用可能 ⾃自動化ツールとの連携 多くのOSSツールに
 無償でプラグインを提供
  31. 31. ©  2016  IBM  Corpora/on  31   #ccc_f5 ②  Libertyが軽量量な理理由 Servlet JSP JSF q Java  EEなどのAPIやサーバーが提供する機能のうち、必 要な機能(Feature)のみを⾃自由に組み合わせることができる SSL JAX-‐‑‒RS JSON Monitor JPAJDBC CDI LDAP  Registry JAX-‐‑‒WS JAX-‐‑‒B Admin  Center JMSEJB  lite EJB  MDB Cluster §  必要な機能のみ稼動するため起動が速い! §  Libertyプロファイル⾃自体のメモリー使⽤用量量も、60MB程度度
  32. 32. ©  2016  IBM  Corpora/on  32   #ccc_f5 API・サーバー機能をFeatureとして定義 q 必要なものだけを構成   ¦ 設定されたものだけがメモリにロード・初期化される →  最⼩小限の起動時間・メモリー使⽤用 ServletJSPJDBCSSL JAX-RS sessionDatabase <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 依存関係も
 自動的に解決 JSON
  33. 33. ©  2016  IBM  Corpora/on  33   #ccc_f5 Libertyプロファイルの「ゼロ・マイグレーション」 q 新しい仕様のバージョンに対応するフィーチャーが 追加されても,従来のバージョンも提供される ¦  例例)  現在はServlet  3.1フィーチャーが提供されているが,       Servlet  3.0フィーチャーも引き続き利利⽤用できる q アプリケーションで新仕様が必要なければ 従来のフィーチャーをそのまま利利⽤用可能 ¦  ただし,対応するJDKのバージョンは変更更される可能性がある servlet-‐‑‒3.0 servlet-‐‑‒3.1 servlet-‐‑‒3.0 servlet-‐‑‒3.1 新バージョン 新バージョン ⼀一般的なアプリケーションサーバー WAS  Libertyプロファイル
  34. 34. ©  2016  IBM  Corpora/on  34   #ccc_f5 パッケージによる導⼊入 q 既存環境をZIPファイルにパッケージ ¦ アプリケーション・サーバー構成・Libertyランタイム q minifyオプションを指定することで アプリケーションが使⽤用するFeatureだけをパッケージ ¦ コンパクトな実⾏行行環境を作成可能 OS#1 Java  SDK Liberty  Profile サーバー構成 アプリケーション ①インストール ディスク ②サーバー構成 ③デプロイ OS#2 Java  SDK Liberty  Profile サーバー構成 アプリケーション ディスク server  –package  <サーバー名>  -‐‑‒-‐‑‒include=minify zipファイル 元のサイズよりコ ンパクトに! zipファイルzipファイル ④パッケージ ⑤展開
  35. 35. ©  2016  IBM  Corpora/on  35   #ccc_f5 開発者版は無償で利利⽤用可能 q 名前の登録やIBMへの問い合わせなしに ⾃自由にダウンロード可能・使⽤用期限もなし 1.  Eclipse  Marketplaceから Liberty開発者ツールを導⼊入 開発者ツールをつかってLibertyをダウンロード 2.  WASdev.netからランタイムをダウンロード
  36. 36. ©  2016  IBM  Corpora/on  36   #ccc_f5 様々なレベルでクラウドに対応 q オンプレミス⽤用のライセンスをIaaS上でも使⽤用可 q 様々な⾃自由度度でランタイムをPaaSとして提供 利用者が管理 プラットフォームが管理 利用者がパターンから作成 事前構成されたWASが提供(個別管理可能) Liberty Buildpack WAS on Cloud WAS Docker Containers PureApp   Service
  37. 37. ©  2016  IBM  Corpora/on  37   #ccc_f5 IBM  BluemixでのLibertyの使⽤用 ランタイム アプリ コード アプリ コード 開発者 ランタイムと呼ばれる実⾏行行環境を   わずか30秒    で準備 様々なレベルで公開 -‐‑‒  Java  EEに準拠したEAR/WAR -‐‑‒  アプリケーションコードと構成 -‐‑‒  アプリとLibertyランタイム Liberty以外の実⾏行行環境も提供 -‐‑‒  任意の開発⾔言語を使⽤用可能 Bluemixのビルドパック
  38. 38. ©  2016  IBM  Corpora/on  38   #ccc_f5 IBM  Bluemixの特徴 アプリケーションを、構築・管理理・実⾏行行するための、 SoftLayerを基盤とし、オープン・スタンダード(Cloud Foundry)を活⽤用した、 新しいクラウド・プラットフォーム(PaaS) スピーディーな 環境構築 豊富な「API」と 「サービス」の提供 DevOpsの実現 既存システムとの インテグレーション 堅牢牢な セキュリティ 柔軟な価格体系 お⽀支払い⽅方法
  39. 39. ©  2016  IBM  Corpora/on  39   #ccc_f5 IBM API Connect
  40. 40. ©  2016  IBM  Corpora/on  40   #ccc_f5 IBM  API  Connect  V5 q API公開に関わるすべての作業を 1つの包括的ソリューションとして提供 外部のシステム 社内システム Integration  bus Team Stats Ticketing 社内データ クラウドアプリ
 開発者 API Connect 業務アプリ
 開発者 WebSphere Application Server APIの
 カタログ
 と公開 Discover API
  41. 41. ©  2016  IBM  Corpora/on  41   #ccc_f5 API  Connectの提供する4つの機能 q 作成 ¦  容易易にAPI開発を⾏行行えるツール ¦  ビルド、テスト、デプロイ q 実⾏行行 ¦  APIを実⾏行行するランタイムの管理理 (WAS  Liberty,Node.js) ¦  監視、スケーリング q 管理理 ¦  公開APIのポリシー定義 ¦  利利⽤用状況の分析、課⾦金金 ¦  開発者ポータルへの⾃自動連携 q 保護 ¦  APIの認証・認可 ¦  API利利⽤用者の認証とアクセス制御 ¦  アクセス数のレート制限 Create Run ManageSecure 作成 保護 実⾏行行 管理理 IBM  API  Connect
  42. 42. ©  2016  IBM  Corpora/on  42   #ccc_f5 StrongLoop社の買収とSolutionの融合 Create Run ManageSecure 作成 保護 実⾏行行 管理理 IBM  API  Connect IBM  API  Management StrongLoop  /  Node.js
  43. 43. ©  2016  IBM  Corpora/on  43   #ccc_f5 まとめ q   クラウド・セキュリティなどの要件から   そろそろJavaの世界も   API化から逃げられなくなってきました q Microservices  Architectureは   実証された有効なシステムアーキテクチャー q MSAの採⽤用では「分割」より「API化」が重要 q IBMは,業務システムのクラウド化・API化を 推進するソリューションを提供します
  44. 44. ©  2016  IBM  Corpora/on  44   #ccc_f5 最後に
  45. 45. ©  2016  IBM  Corpora/on  45   #ccc_f5 最新情報発表セミナー q WebSphere  AS  最新情報セミナー  2016 〜~  Are  You  ready?  Javaプラットフォームの新しい潮流流!  〜~ ¦ ⽇日時:   2016年年6⽉月23⽇日(⽊木)   15:00-‐‑‒17:30  (受付開始  14:30) ¦ 場所:   ⽇日本アイ・ビー・エム株式会社   本社事業所(箱崎) ¦ 参加費:   無料料 https://ibm.biz/cloudsw_̲school_̲16

×