...

エンタープライズJava環境における マイクロサービス・アーキテクチャーの必要性 2015/7/29 日本アイ・ビー・エム株式会社

by user

on
Category: Documents
45

views

Report

Comments

Transcript

エンタープライズJava環境における マイクロサービス・アーキテクチャーの必要性 2015/7/29 日本アイ・ビー・エム株式会社
エンタープライズJava環境における
マイクロサービス・アーキテクチャーの必要性
2015/7/29
日本アイ・ビー・エム株式会社
IBM Systems アプリケーションプラットフォーム
テクニカル・セールス 田中 孝清
© 2013 IBM Corporation
Microservices Architecture
2
© 2015 IBM Corporation
Microservices Architecture(MSA)とは
きっかけ
–ソフトウェア・
アーキテクチャーの大家
マーティン・ファウラーの
2014年3月の
Blogエントリー
http://martinfowler.com/articles/microservices.html
3
© 2015 IBM Corporation
Microservices Architectureの基本思想
 技術面:分散配置と統合
–サービスによるコンポーネント化
–スマートなエンドポイントと単純なパイプ処理
–分散データマネジメント
–インフラの自動化
–フェイルを前提とした設計
 文化面:持続性と分権
–ビジネスケイパビリティに基づく組織化
–プロジェクトではなくプロダクト
–分散ガバナンス
–進化的な設計
4
グロースエクスパートナーズ(株)鈴木雄介氏
「マイクロサービスアーキテクチャとは何か」より
http://www.slideshare.net/yusuke/msa-share-02
© 2015 IBM Corporation
Microservices Architectureアプリケーション
 単一の(モノリシックな)アプリとして実装するのではなく,
複数のサービスの統合として実装する
– 変更の影響範囲を極小化
– 機能の再利用を促進
5
http://martinfowler.com/articles/microservices.html
© 2015 IBM Corporation
どこかで聞き覚えが・・・
 SOA:Service Oriented Architecture
2004〜
IBM,Gartner他
6
© 2015 IBM Corporation
Microservices ArchitectureはSOAの進化型
Monolithic App
SOA
Micro-services
 モノリシック・アプリケーション
–全体を単一のコードとして実装
 SOA(サービス指向アーキテクチャー)
–サブシステムごとに独立して実装/依存関係が可視化
 MSA(マイクロサービス・アーキテクチャー)
–システムを構成する機能(ファンクション)単位でサービス化
7
© 2015 IBM Corporation
粒度を細かくして機能単位のスケールアウトを実現
 小さなサービス単位でプロセスを起動することで
負荷に応じた柔軟なスケールアウト(拡張)が可能に
http://martinfowler.com/articles/microservices.html
8
© 2015 IBM Corporation
結局Microservice Architectureとは
 SOAを追求し,改善を続けていったらMSAになった
–SOAからのいくつかの改良
• サービスの粒度は「企業の組織単位」ではなく「業務の機能単位」で
• 通信経路は高機能なSOAP通信ではなく単純なREST通信も活用
• ESBは必須ではなくメッシュ型の直接呼び出しもOK
 「新しく考え出された理想論」ではなく
多くの成功したWebシステムのに共通する
「観測された現実解」に名前をつけたもの
9
© 2015 IBM Corporation
SOA / MSA導入の目的
 変化への対応を早く
オペレーションのスピード
ミッション・クリティカルな
アプリケーションの管理、運用
Systems of Record
成長機会のための
探索、開発、デプロイ
Systems of Engagement
 サービスレベル重視
 ウォーターフォール開発
 スピード開発
 試行錯誤、継続的デプロイ
 長期に渡るシステム構築
 早期のシステム構築/改修
数ヶ月〜数年
マラソンランナー
10
イノベーションのスピード
数日〜数週間
スプリンター
© 2015 IBM Corporation
MSAを必要とする「変化」とは
11
© 2015 IBM Corporation
企業のITシステムが直面する大きな変化
 クライアント・ブラウザの進化
 モバイルへの対応
 外部システム連携・APIエコシステム
12
© 2015 IBM Corporation
企業のITシステムが直面する大きな変化(1)
 クライアント・ブラウザの進化
 モバイルへの対応
 外部システム連携・APIエコシステム
13
© 2015 IBM Corporation
クライアント・ブラウザの変化
MSIE 6 全盛期(2000年代〜)
– Windows XP+MSIE 6をターゲットにすればよかった
– HTML4によるフォーム型Webアプリケーション
+
マルチ・ブラウザ時代(2010年代〜)
– Firefox / Google Chrome / Safariなどモダンブラウザの台頭
– MSIEが7から11まで進化 / Windows 10ではEdgeが標準に
– HTML5によるSPA型Webアプリケーション
14
© 2015 IBM Corporation
今まで以上にPLとBLの分離が必要に
 プレゼンテーション・ロジック(PL)の変化と
ビジネス・ロジック(BL)の変化の速度の大きな不一致
– 頻繁な変更を要求されるプレゼンテーションロジック
– 長期にわたって使用されるビジネスロジック
 独立したシステムとして構築するメリットが増大
– PLとBLをサービスとして連携
プレゼンテーション
ロジック
15
ビジネス
ロジック
© 2015 IBM Corporation
Webアプリケーションの実装スタイルの変化
 「サーバーサイドMVC」から「クライアントMVC」へ
Web Browser
Web Browser
Application
Application
Data
Store
Controller
HTTP
Request
HTML/JS
Session
Data
Controller
View
Model
Model
Business
Logic
Domain
Domain
HTML/JS
View
RESTful or
WebSocket
JSON
Model
Domain
Domain
Business Logic
Application Server
16
Application Server
© 2015 IBM Corporation
企業のITシステムが直面する大きな変化(2)
 クライアント・ブラウザの進化
 モバイルへの対応
 外部システム連携・APIエコシステム
17
© 2015 IBM Corporation
モバイル機器の急速な普及
世界 スマートフォン売り上げ台数(単位:千)
Source: Wikipedia
18
http://en.wikipedia.org/wiki/Mobile_operating_system
© 2015 IBM Corporation
Webからモバイルアプリケーションへ
 モバイル対応の第一段階
–Webアプリケーションの画面をモバイル用にカスタマイズ
 本格的なモバイル対応
–モバイル・アプリケーションの実装
• モバイル環境に最適化されたUI
• GPSやカメラなどの機能の活用
• オフライン処理
19
© 2015 IBM Corporation
モバイルアプリケーションのバックエンド連携
 モバイルアプリケーションは(多くの場合MEAP経由で)
バックエンドシステムをサービスとして利用
–必然的にSOA / MSAになる
MEAP製品
Mobile
Enterprise
Application
Platform
20
SOAP /
HTTP
基幹システムや
クラウド・サービス
REST
基幹システムや
クラウド・サービス
ESB製品
基幹システムや
クラウド・サービス
© 2015 IBM Corporation
企業ITシステムが直面する大きな変化(3)
 クライアント・ブラウザの進化
 モバイルへの対応
 外部システム連携・APIエコシステム
21
© 2015 IBM Corporation
APIの提供や活用による効果
新たなチャネルによ
る収益の増大
APIの提供
今までにない新しい
顧客体験の実現
外部 APIs
APIの活用
パートナー APIs
Assets &
Services
22
• Assembly
• Transformation
• Rationalization
社内 APIs
• Discovery
• Composition
• Deployment
Application End
Points
© 2015 IBM Corporation
実例:SNSアカウントをつかったログイン
 メリット
–利用者を煩雑なユーザー登録処理から解放
–万が一の情報漏洩発生時のリスクを軽減
–SNS上のバイラル(口コミ)マーケティングの促進
 デメリット
–頻発する外部システムの
仕様変更への追随
23
© 2015 IBM Corporation
アプリケーション・アーキテクチャーの刷新
24
© 2015 IBM Corporation
変革期を迎えているエンタープライズJava
 2000年代に多くの企業で
Javaを使用した業務アプリケーションのWeb化を実施
–J2EEアーキテクチャー
–Struts / Spring / Hibernate などのOSSフレームワークの活用
 更新と改良をつづけてきたアプリケーションの中には
現行アーキテクチャーの限界がみえてきたものも多い
–Strutsなどのサポート終了とセキュリティ脆弱性問題
–旧APIのみを使用したアプリを互換性モードで稼働
–最新の要件への対応ができない
 大きく進歩したJava EE 7の登場
25
© 2015 IBM Corporation
式年遷宮と増改築
 数年に一度,
いちから作り直す神社
 増築と改築を重ねた
温泉旅館
あなたのITシステムは
「増築を重ねた温泉旅館」になってませんか?
26
© 2015 IBM Corporation
ITシステムの「式年遷宮」のすすめ
 一定期間毎に,新しいアーキテクチャーで再実装する効果
–使用しているH/Wやミドルウェアの陳腐化の影響を排除
–新しいアプリケーション・アーキテクチャーの取り入れ
–世代を超えてシステムの構築スキル・構成知識を継承
 システムの寿命を超えて使い続けると・・・
–長期延長保守のための高額なサポート費用
–時代のニーズを満たせない旧式のアプリケーション
–構築した技術者の引退とともにシステムがブラックボックス化
27
© 2015 IBM Corporation
次世代をみすえ最新のアーキテクチャーへの移行を
 アプリケーション・アーキテクチャ
–モバイル・HTML5クライアントへの対応
–Microservices Architectureの採用
–APIエコシステムの構築
 アプリケーション開発体制
–Agile開発・継続的インテグレーション
–DevOpsの実現
 アプリケーション実行基盤
–クラウド環境の利用
–構築の自動化・Immutable Infrastructure
28
© 2015 IBM Corporation
Java EE 7とWAS Libertyプロファイル
29
© 2015 IBM Corporation
2013年に正式版となった最新仕様:Java EE 7
 Java EE 7の三つのゴール
–HTML5環境への対応
–開発生産性の向上
–エンタープライズ・ニーズへの対応
大幅な機能拡張
30
© 2015 IBM Corporation
Java EE 7 の主なAPI群
 JSR 342: Java Platform, Enterprise Edition 7
– HTML5環境への対応
• JSR 344: JavaServer Faces (JSF) 2.2
• JSR 353: Java API for JSON Processing (JSONP) 1.0
• JSR 356: Java API for WebSocket 1.0
• JSR 339: Java API for RESTful Web Services (JAX-RS) 2.0
– 開発生産性の向上
• JSR 345: Enterprise JavaBeans (EJB) 3.2
• JSR 346: Contexts and Dependency Injection
for Java EE (CDI) 1.1
• JSR 907: Java Transaction API (JTA) 1.2
• JSR 349: Bean Validation 1.1
– エンタープライズ・ニーズへの対応
• JSR 343: Java Message Service (JMS) 2.0
• JSR 338: Java Persistence API (JPA) 2.1
• JSR 236: Concurrency Utilities for Java EE 1.0
• JSR 352: Batch Applications for the Java Platform 1.0
31
© 2015 IBM Corporation
JAX-RS 2.0:JavaでRESTfulなWebサービスを実現
 アノテーションベースでRESTfulなWebサービスを実装
@Path("repository")
public class TestRepositoryService {
@Path("version")
@GET
@Produces("text/plain; charset=UTF-8")
public String getVersion() {
return "Test Service version 1.0";
}
 JAX-RS 2.0の新機能
– クライアント用のAPI
– 非同期クライアント・非同期サーバー
– メッセージ・フィルタ
およびエンティティ・インターセプター
• ヘッダやコンテンツを操作するインターセプター
Response response = ClientBuilder.newClient()
.target("http://www.foo.com/book")
.request(MediaType.TEXT_PLAIN)
.get();
32
© 2015 IBM Corporation
CDIによるアプリケーション内のPL / BLの分離
 画面デザイン
 依存性注入・ビジネスロジック
–JSF / EL / Servlet / JSP
 外部連携
 DB連携・ORマッピング
–JAX-RS / WebSocket
–JAX-WS
CDI
33
–CDI / EJB / JTA
JSF
JAX-RS
JSP / EL
WebSocket
–JPA
.
EJB / JTA
JPA
Database
© 2015 IBM Corporation
CDI使用のメリット
 外部接続のパラメーターのハードコーディングの防止
–ネーミングサービス利用からアノテーション指定へ
 コンポーネント間の依存性の除去
–モックやスタブを利用したテストが容易に
本番環境で
インジェクション
実際の
サービス実装
業務DB
@Inject
Service s;
テスト環境で
インジェクション
34
テスト用の
スタブ
ダミーデータ
© 2015 IBM Corporation
WebSphere Application Server Java EE7対応
 IBMのWAS Libertyプロファイルは6月25日出荷の
V8.5.5.6でJava EE 7のFull Platformに対応
http://www.ibm.com/jp/press/2015/06/1601.html
35
© 2015 IBM Corporation
WASの新しいランタイム:Libertyプロファイル
軽量ランタイム
Java EE 7準拠
メモリー使用量が小さい: 60MB程度〜
ディスク使用量も100MB以下
Java EE 7のFull Platform標準に
準拠したアプリを完全サポート
JAX-WS, JAX-RS, JMSもサポート
起動が速い
起動時間: 5秒程度
簡単な構成と動的変更
最低限必要な構成ファイルは
server.xmlひとつだけ
デフォルトベースで簡単構成
構成変更は再起動なしに反映
自動化ツールとの連携
多くのOSSツールに
無償でプラグインを提供
WAS V8.5.5 Liberty & WDT
統合ツール(WDT)
高機能なEclipse用の連携ツールを無償で提供
Eclipseから簡単に使用可能
36
Unzipによる導入とデプロイ
パッケージをした
サーバー + アプリ + 構成情報を
Unzipでデプロイ可能
© 2015 IBM Corporation
API・サーバー機能を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
sessionDatabase
JAX-RS
JSON
SSL
JDBC
JSP
Servlet
© 2015 IBM Corporation
Libertyプロファイルで提供されているFeature(抜粋)
zosConnect-1.0
zOS
zosSecurity-1.0
zosTransaction-1.0
zosWlm-1.0
zosLocalAdapters-1.0
scalingController-1.0
collectiveController-1.0
ND
clusterMember-1.0
scalingMember-1.0
dynamicRouting-1.0
Base
wsSecurity-1.1
wasJmsServer-1.0
mongodb-2.0
jms-1.1
jaxb-2.2
wmqJmsClient-1.1
jmsMdb-3.1
mdb-3.1
jcaInboundSecurity-1.6
jaxws-2.2
wasJmsClient-1.1
wasJmsSecurity-1.0
couchdb-1.0
jca-1.6
ldapRegistry-3.0
Core
New in
1Q15
New in
4Q14
38
jaxrs-1.1
collectiveMember-1.0
osgiConsole-1.0
adminCenter-1.0
json-1.0
restConnector-1.0
oauth-2.0
osgiAppIntegration-1.0
concurrent-1.0
timedOperations-1.0
openid-2.0
wab-1.0
monitor-1.0
webProfile-6.0
sessionDatabase-1.0
webCache-1.0
openidConnectClient-1.0
blueprint-1.0
serverStatus-1.0
distributedMap-1.0
spnego-1.0
ejbLite-3.1
jdbc-4.0
ssl-1.0
jdbc-4.1
jsf-2.0
jndi-1.0
beanValidation-1.0
websocket-1.1
websocket-1.0
jsp-2.2
appSecurity-2.0
cdi-1.0
el-3.0
jsonp-1.0
servlet-3.0
managedBeans-1.0
jpa-2.0
jsp-2.3
servlet-3.1
openidConnectServer-1.0
© 2015 IBM Corporation
パッケージ作成による複数環境の導入
 開発環境でテストしたアプリケーションだけでなく
製品の構成・Fixpackレベルまでふくめて
そのまま本番環境へ移行することが可能
–サービス単位でZIPを作成
–使用するFeatureだけパッケージされるので最小サイズのZIPに
–必要に応じて展開・実行することで容易にスケールアウト
③アプリ開発
②サーバー構成
①インストール
開発環境
テスト・本番環境
ディスク
ディスク
アプリ
サーバー構成
④パッケージ
⑤展開
アプリ
サーバー構成
Liberty Profile
Liberty Profile
Java SDK
39
ZIPファイル
Java SDK
© 2015 IBM Corporation
Libertyとマイクロサービスの記事を公開中
 JAX-RS/CDIのサポートで
マイクロサービスの
開発も容易に
〜Java EE 7正式対応で
大幅強化された
「WebSphere Application
Server Liberty Core」
http://codezine.jp/article/detail/8834
 Codezine マイクロサービス
で検索
40
© 2015 IBM Corporation
41
© 2015 IBM Corporation
Fly UP