8. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
Top 9 rules for cloud applications
1. Don't code your application directly to a specific topology
2. Don't assume the local file system is permanent
3. Don't keep session state in your application
4. Don't log to the file system
5. Don't assume any specific infrastructure dependency
6. Don't use infrastructure APIs from within your application
7. Don't use obscure protocols
8. Don't rely on OS-specific features
9. Don't manually install your application
h"p://ibm.biz/nine-rules
Kyle Brown
IBM DE
CTO for Cloud architecture
9. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
Java EEシステムのクラウド化が困難な理由
W
e
b
サ
|
バ
|
Java EE
アプリ
ケーション
Java EE
アプリケーション
サーバー
n トランザクション処理
n DB処理
n セッション管理
n メモリー管理
n セキュリティー
n その他
Java EE
アプリ
ケーション
Java EE
アプリ
ケーション
バックエンドシステム
◆ メニュー
◆ 案内
◆ メール
Webクライアント
1.アプリケーション・サーバーが
クラウドに適応していない
2.アプリケーションを
クラウド対応にするのが難しい
3.バックエンドシステムは
社外クラウドに
出すことができない
10. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
1.アプリケーションサーバー
• アプリケーションサーバーの導⼊が⼤変
• サイズが⼤きい(ディスク・メモリフットプリント)
• インストーラーの実⾏が必要
• システムの可搬性がない
• 環境にあわせた構成が必要
• ⾃動化ツールとの相性がよくない
• アプリケーションの「デプロイ」が必要
11. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
クラウド時代にもとめられる
Java EEアプリケーションサーバーとは
• 容易な導⼊
• ⼩さいメモリ・フットプリント
• 構成の可搬性
• 管理の⾃動化
12. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
2.アプリケーションのクラウド対応
マイクロサービスアーキテクチャー(MSA)
Microservices Architecture
13. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
既存のアプリケーションをMSA化するには
• 「既存システムを分割」することよりも
「アプリケーションの機能を外部から呼べる」
ようにすることを重要視する
例:
• アプリケーションの機能をAPIで提供する
• バックエンドへのアクセスを
JDBC(SQL)でなくRESTでよびだす
API連携 分割>
14. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
3.バックエンドの対応
ハイブリッドクラウドによる
オンプレミスとクラウドの連携
• 既存システムのデータ・機能をAPIで提供する
• ただしAPI管理セキュリティは重要
Systems of Record
Integration bus
CRMERP
Transactions
Systems of Insight
Systems of Engagement
Social, Mobile, IoT
Hybrid Cloud
既存環境と
クラウド環境の連携基盤
15. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
Java EEがクラウド対応するには
• クラウド対応のアプリケーションサーバー
• API連携に対応したアプリケーション
• ハイブリッドクラウドによる
バックエンドシステムの公開
これでJava技術者も
まだまだ戦えますクラウド時代に
なっても
16. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBMの取り組み
• クラウドに対応したJava EEランタイム
WebSphere Libertyの提供
• MicroProfileへの取り組み
• IBM J9 VMのOSS化
17. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
WebSphere Application Serverの
⼆つのランタイム
バージョン 提供されるWASランタイム
2011年7⽉
WAS V8.0
WAS
Java EE6 完全対応
WAS Libertyプロファイル
Servlet/JSPなど基本機能
WAS Fullプロファイル
Java EE6 完全対応
WAS Libertyプロファイル
Java EE6 Web Profile対応
WAS Fullプロファイル
Java EE6 完全対応
WAS Libertyプロファイル
Java EE7 完全対応
WAS Fullプロファイル
Java EE6 完全対応
WAS Liberty
Java EE7 完全対応
WAS traditional
Java EE7 完全対応
2012年7⽉
WAS V8.5
2013年6⽉
WAS V8.5.5
2015年6⽉
WAS V8.5.5.6
2016年6⽉
WAS V9.0
18. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
⽤途に応じた⼆つのランタイム
• 過去のバージョンとの
互換性を重視した
WAS traditional
• クラウド⾃体に対応した
新しいランタイム
WAS Liberty
19. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
WAS Libertyの特⻑
WAS Liberty & WDT
①Java EE 7対応
Java EE 7 標準に準拠したアプリを完全サポート
JAX-WS, JAX-RS, JMSもサポート
新機能も継続的に提供
③Unzipによる導⼊とデプロイ
パッケージをした
サーバー + アプリ + 構成情報を
Unzipでデプロイ可能
④簡単な構成と動的変更
最低限必要な構成ファイルはserver.xmlひとつだけ
デフォルトベースで簡単構成
構成変更は再起動なしに反映
②軽量ランタイム
メモリー使⽤量が⼩: 60MB程度
ディスク使⽤量も100MB程度
起動が速い:5秒程度
⑦様々な環境で稼動
オンプレ,クラウド(IaaS、
PaaS),Dockerで稼動
⑤統合ツール(WDT)
⾼機能なEclipse⽤の連携ツール
を無償で提供
Eclipseから簡単に使⽤可能
⑥⾃動化ツールとの連携
多くのOSSツールに
無償でプラグインを提供
⑧API公開
RESTのアノテーションから
Swaggerを⾃動⽣成
25. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
MicroProfile
• Microservices Architectureに最適化された
Enterprise Javaの仕様策定をめざすプロジェクト
• 現在のMicroProfile
• JAX-RS / JSONP / CDI
• サンプルコード・プロジェクトも公開中
26. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
WAS Liberty
with Micro Profile for enterprise Java
ダウンロードサイズ35.2Mバイト
AA287086c:microProfile takakiyo$ ls -l!
total 72128!
-rwxr-xr-x@ 1 takakiyo staff 36926674 12 3 15:09 wlp-microProfile1-16.0.0.3.zip*!
28. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
J9 VMとは
• IBMが独⾃に実装している
Java Virtual Machine
• J2SE 1.3のころから提供
• J2ME⽤のランタイムを起源としているため
軽くて⾼速・モジュール化された実装
29. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBM SDK for Java(過去)
Open JDK
Java Class Library
HotSpot VM
Oracle JDK
Java Class Library
HotSpot VM
IBM SDK for Java
Java Class Library
IBM J9
+ IBM Java
Class Library OSS
30. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBM SDK for Java(現在)
Open JDK
Java Class Library
HotSpot VM
Oracle JDK
Java Class Library
HotSpot VM
IBM SDK for Java
Java Class Library
IBM J9
+ IBM Java
Class Library
OMR
Eclipse
OMR
OSS
OSS
31. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
OMR
OMRって何の略?
• アクロニム/イニシャリズムではない
• 固有名詞だそうです
32. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
OMR
• ⾔語ランタイムを開発するツールキット
• 複数の⾔語実装で必要となる基本機能を提供
• メモリアロケータ/ガーベジコレクション
• スレッドライブラリ
• JITコンパイラ
• デバッグなどで使⽤するトレースエンジン
• Eclipse OMRとしてOSS化
• OMRを使⽤してRubyの実装を公開中
33. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBM SDK for Java(将来)
Open JDK
Java Class Library
HotSpot VM
Oracle JDK
Java Class Library
HotSpot VM
IBM SDK for Java
Java Class Library
IBM J9
OMR
Eclipse
OMR
OSS
OSS
Open JDK
Java Class Library
OpenJ9
OMR
+ IBM Java Class Library
OSS
34. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
J9 VMは何が嬉しいのか
• パフォーマンス
• トレース/問題判別情報
• VM間でクラス情報共有
35. IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
まとめ
MAKE JAVA GRATE AGAIN
• IBMはこれからも
新しいJavaの環境の提供を続けます
• アプリのアーキテクチャー更新など
皆様の協⼒も必要です
• クラウド時代にも
Javaの技術者が活躍できます