クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?...
-
Upload
takakiyo-tanaka -
Category
Software
-
view
35 -
download
2
Transcript of クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?...
IBM Corporation 2016 All Rights Reserved.
#ccc_g5 #jjug_ccc
クラウド、クラウドというけれどJavaのシステムにとってクラウドってメリットあるの?
⽇本アイ・ビー・エム株式会社⽥中孝清
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
⾃⼰紹介⽥中 孝清• ⽇本IBM クラウドソフトウェア事業部
アプリケーション・プラットフォームテクニカルセールス
• 2000年からWebSphereを売ってます
• JJUG幹事
• 趣味• 登⼭• Enlightened
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
10⽉15⽇ JJUG JavaOne報告会鈴⽊雄介 JJUG会⻑「JavaOne 2016総括」
• IBM 「MAKE JAVA GRATE AGEIN」
• クラウド「使ってて当たり前」• Agile「もはや議論すらない。常識の範疇」
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
⽇本のJavaの世界でクラウドは普及しているか
↓普及している部分と
していない部分がある
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
⼆つの⽂化に分かれる⽇本のIT企業
リスクの最⼩化を優先
ミッション・クリティカルなアプリケーションの管理、運⽤
マラソンランナー
q サービスレベル重視q ウォーターフォール開発q ⻑期に渡るシステム構築
イノベーションのスピードを優先
成⻑機会のための探索、開発、デプロイ
スプリンター
q スピード開発重視q 試⾏錯誤、継続的デプロイq 早期のシステム構築/改修
Web系企業 SI系企業
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
クラウド時代のプログラミング⾔語
Web系企業でよく使われる⾔語
SI系企業でよく使われる⾔語
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
クラウドのメリットとは
• 構築・運⽤コストの削減• 即応性
• Javaシステムにとってもメリットはもちろんある
しかし• クラウドのメリットを享受するためには
システムがクラウドに対応しなければならない• クラウド・レディー / Cloud Ready• クラウド・ネイティブ / Cloud Native
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
Top 9 rules for cloud applications1. Don't code your application directly to a specific topology2. Don't assume the local file system is permanent3. Don't keep session state in your application4. Don't log to the file system5. Don't assume any specific infrastructure dependency6. Don't use infrastructure APIs from within your application7. Don't use obscure protocols8. Don't rely on OS-specific features9. Don't manually install your application
h"p://ibm.biz/nine-rulesKyle BrownIBM DECTO for Cloud architecture
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
Java EEシステムのクラウド化が困難な理由
Web サ|バ|
Java EEアプリ
ケーション
Java EE アプリケーション
サーバーn トランザクション処理n DB処理n セッション管理n メモリー管理n セキュリティーn その他
Java EEアプリ
ケーション
Java EEアプリ
ケーション
バックエンドシステム
◆メニュー◆案内◆メール
Webクライアント
1.アプリケーション・サーバーがクラウドに適応していない
2.アプリケーションをクラウド対応にするのが難しい
3.バックエンドシステムは社外クラウドに
出すことができない
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
1.アプリケーションサーバー
• アプリケーションサーバーの導⼊が⼤変• サイズが⼤きい(ディスク・メモリフットプリント)• インストーラーの実⾏が必要
• システムの可搬性がない• 環境にあわせた構成が必要
• ⾃動化ツールとの相性がよくない• アプリケーションの「デプロイ」が必要
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
クラウド時代にもとめられるJava EEアプリケーションサーバーとは
• 容易な導⼊• ⼩さいメモリ・フットプリント• 構成の可搬性• 管理の⾃動化
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
2.アプリケーションのクラウド対応
マイクロサービスアーキテクチャー(MSA)Microservices Architecture
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
既存のアプリケーションをMSA化するには
• 「既存システムを分割」することよりも「アプリケーションの機能を外部から呼べる」ようにすることを重要視する
例:• アプリケーションの機能をAPIで提供する• バックエンドへのアクセスを
JDBC(SQL)でなくRESTでよびだす
API連携 分割>
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
3.バックエンドの対応ハイブリッドクラウドによる
オンプレミスとクラウドの連携• 既存システムのデータ・機能をAPIで提供する• ただしAPI管理セキュリティは重要
Systems of Record
Integration bus
CRMERPTransactions
Systems of Insight
Systems of EngagementSocial, Mobile, IoT
Hybrid Cloud既存環境と
クラウド環境の連携基盤
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
Java EEがクラウド対応するには
• クラウド対応のアプリケーションサーバー
• API連携に対応したアプリケーション
• ハイブリッドクラウドによるバックエンドシステムの公開
これでJava技術者も まだまだ戦えますクラウド時代になっても
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBMの取り組み
• クラウドに対応したJava EEランタイムWebSphere Libertyの提供
• MicroProfileへの取り組み
• IBM J9 VMのOSS化
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
WebSphere Application Serverの⼆つのランタイムバージョン 提供されるWASランタイム
2011年7⽉WAS V8.0
WASJava 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 LibertyJava EE7 完全対応
WAS traditionalJava EE7 完全対応
2012年7⽉WAS V8.5
2013年6⽉WAS V8.5.5
2015年6⽉WAS V8.5.5.6
2016年6⽉WAS V9.0
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
⽤途に応じた⼆つのランタイム
• 過去のバージョンとの互換性を重視したWAS traditional
• クラウド⾃体に対応した新しいランタイムWAS Liberty
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を⾃動⽣成
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
軽量・⾼速なランタイム
<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
q 軽量¦ 数⼗メガバイトのメモリ消費/100メガバイト程度のディスク消費¦ コンテナや仮想環境への集約が容易に
q ⾼速起動・動的変更¦ 数秒以内でサーバーが起動¦ サーバーの構成変更や
アプリケーションの変更も即座に反映
q モジュール構造のランタイム¦ 提供機能をFeatureとして
モジュール化¦ 必要なFeatureだけを選択して
導⼊・起動
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
WAS Libertyで提供されているFeatureWebSphere z/OS
WebSphere ND
WebSphere Liberty Core
WebSphere Base
zosConnect-1.2 zosLocalAdapters-1.0 zosSecurity-1.0 zosTransaction-1.0 zosWlm-1.0
Java EE 6 subset
couchdb-1.0 mongodb-2.0 wsSecurity-1.1
javaee-7.0 batchManagement-1.0
rtcomm-1.0 rtcommGateway-1.0 sipServlet-1.0
apiDiscovery-1.0
mediaServerControl-1.0
wsSecuritySaml-1.1 wsAtomicTransaction-1.2
scalingController-1.0 scalingMember-1.0 dynamicRouting-1.0
collectiveController-1.0 clusterMember-1.0 healthManager-1.0 healthAnalyzer-1.0
webProfile-6.0
distributedMap-1.0
openid-2.0
openidConnectServer-1.0 openidConnectClient-1.0
osgiAppIntegration-1.0
spnego-1.0
collectiveMember-1.0 restConnector-1.0
sessionDatabase-1.0
ldapRegistry-3.0
webCache-1.0 javaMail-1.5
osgiConsole-1.0 json-1.0
timedOperations-1.0 monitor-1.0 oauth-2.0
serverStatus-1.0 wab-1.0 blueprint-1.0
webProfile-7.0
eventLogging-1.0 requestTiming-1.0
adminCenter-1.0 concurrent-1.0
bells-1.0 samlWeb-2.0
scim-1.0
federatedRegistry-1.0 constrainedDelegation-1.0
httpWhiteboard-1.0
osgiBundle-1.0 passwordUtilities-1.0 bluemixUtility-1.0 logstashCollector-1.0
batch-1.0
concurrent-1.0
appClientSupport-1.0 ejbPersistentTimer-1.0
ejbHome-3.2 ejbRemote-3.2 ejb-3.2 mdb-3.2
j2eeManagement-1.1 jacc-1.5 jaspic-1.1 jca-1.7
jms-2.0 wmqJmsClient-2.0 wasJmsClient-2.0
jaxws-2.2 jaxb-2.2 appSecurity-2.0
managedBeans-1.0
beanValidation-1.1
websocket-1.1 websocket-1.0
jaxrsClient-2.0
cdi-1.2 jpa-2.1 el-3.0 javaMail-1.5
servlet-3.1 jsp-2.3 jsf-2.2 ejbLite-3.2
jndi-1.0 jdbc-4.1
jsonp-1.0 jaxrs-2.0
ssl-1.0
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
多様なクラウドとの親和性
, B , B , B , B , B , B
VC C d RWNO C dVC CI MS Lba MC D c E
R A
, B
B
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
無料で試すことができます• WASはローカル環境の開発⽤途であれば
無償でご利⽤いただけます
• WASdevから⼊⼿可能http://developer.ibm.com/wasdev/
• アンケートに「Liberty情報希望」と書いていただければメールで情報をお送りします
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
MicroProfile
• Microservices Architectureに最適化されたEnterprise Javaの仕様策定をめざすプロジェクト
• 現在のMicroProfile• JAX-RS / JSONP / CDI
• サンプルコード・プロジェクトも公開中
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* !
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBM J9 VMのOpen Source化
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
J9 VMとは• IBMが独⾃に実装している
Java Virtual Machine
• J2SE 1.3のころから提供
• J2ME⽤のランタイムを起源としているため軽くて⾼速・モジュール化された実装
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBM SDK for Java(過去)
Open JDKJava Class Library
HotSpot VM
Oracle JDKJava Class Library
HotSpot VM
IBM SDK for JavaJava Class Library
IBM J9
+ IBM Java Class LibraryOSS
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBM SDK for Java(現在)
Open JDKJava Class Library
HotSpot VM
Oracle JDKJava Class Library
HotSpot VM
IBM SDK for JavaJava Class Library
IBM J9
+ IBM Java Class Library
OMR
EclipseOMR
OSS
OSS
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
OMR
OMRって何の略?
• アクロニム/イニシャリズムではない• 固有名詞だそうです
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
OMR
• ⾔語ランタイムを開発するツールキット
• 複数の⾔語実装で必要となる基本機能を提供• メモリアロケータ/ガーベジコレクション• スレッドライブラリ• JITコンパイラ• デバッグなどで使⽤するトレースエンジン
• Eclipse OMRとしてOSS化• OMRを使⽤してRubyの実装を公開中
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
IBM SDK for Java(将来)
Open JDKJava Class Library
HotSpot VM
Oracle JDKJava Class Library
HotSpot VM
IBM SDK for JavaJava Class Library
IBM J9OMR
EclipseOMR
OSS
OSSOpen JDK
Java Class LibraryOpenJ9
OMR
+ IBM Java Class Library
OSS
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
J9 VMは何が嬉しいのか
• パフォーマンス• トレース/問題判別情報• VM間でクラス情報共有
IBM Corporation 2016. All Rights Reserved.
#ccc_g5 #jjug_ccc
まとめ
MAKE JAVA GRATE AGAIN
• IBMはこれからも新しいJavaの環境の提供を続けます
• アプリのアーキテクチャー更新など皆様の協⼒も必要です
• クラウド時代にもJavaの技術者が活躍できます