was libertyでcloud-readyなjava ee7アプリ開発
TRANSCRIPT
自己紹介
� ⾦融 SIer� Java EE + Springを使ったアプリ基盤,
Framework構築� IBM M/W(DB2, WAS, BPM, etc�)� 最近はGit + Mavenを使った開発環境
整備
本発表の内容
� 2015年6月 Java EE7対応したWAS Liberty v8.5.5.6が公開。また8月 Bluemixでも利⽤可能になりました
� これらを調査, 稼動検証して得られた知⾒をお話します
� 主にClassic WASユーザー視点として
Disclaimer: � 本資料の内容は個⼈の⾒解であり、所属組織の公式な⾒解ではありま
せん
WAS Libertyとは?
� IBM Java EEサーバーWASの軽量ランタイム� 登場の背景:
� バックエンド, 基幹系システム(SoR)では安定稼動が求められてきた
→WASの重量化(重い, 遅い, 大きいリソース消費量)
� BtoC、ソーシャル, モバイル(SoE)では俊敏性, 新技術への迅速な対応が求められる
→軽量ランタイムのニーズが⾼まる
WAS Libertyとは?
� Libertyの歩みと位置づけの変化� 2012 v8.5 (機能限定だが軽量開発)
• Java EE6 web profile� 2013 v8.5.5 (本番利⽤可能な専⽤ランタイム)
• Java EE6 web profile + α(JAX-WS, JAX-RS, JMS, etc�), Java SE8
• Liberty Core (専⽤ランタイム)
� 2015 v8.5.5.6 (Full profileに先駆けEE7サポート!)• Java EE7 full platform
【⽤語】•WASの区分 : Full profile ⇔ Liberty profile
•Java EEの区分 : full platform ⇔ web profile
WAS Libertyの特徴
� Unzipによる導入 (IIMも可)� ホットデプロイ, 動的構成変更� 構成ファイルはserver.xml 1つのみ� 必要機能だけで構成可能
feature manager (maven-like)� PaaS(Bluemix)で稼動
Maven連携
� ダウンロード→導入→サーバー作成→起動までを1コマンドで簡潔可能
� Immutable Infra, Infra as Codeの実現
Dev-PC MavenRepository
$ mvn
liberty:run-
server
Maven
libetyruntime
Java EE7Apppom.xml
liberty-maven-pluginlibetyRepository
plugins
liberty runtime.zip
featuresfeatures
実装OSSの違い
Apache BvalApache BvalBeanValidation
EclipseLinkApache OpenJPAJPA
JBoss WeldApache OpenWebBeans
CDI
Apache CxFApache WinkJAX-RSApache CxFApache Axis2JAX-WSApache MyFacesApache MyFacesJSF
Java EE7(Liberty 8.5.5.6+)
Java EE6(8.5.5.5-)
•EE6⇔EE7間の移植性/互換性には注意が必要(特にJPA)
WDT
DB/JMS/Securityなどサーバー設定はserver.xml編集して⾏う(not管理コンソール)
WARを直接デプロイ可(EAR不要)
サーバーを追加するとプロジェクトが作られる(Tomcat-like)
Liberty⽤WDT経由で使⽤
起動が速い
一般的なJava EE7アプリ
JSF(MVC)
JPA(ORM)
CDI(DI/AOP/
TX)
JAX-RS(REST)
JAX-WS(SOAP)
BeanValidation(Validation)
RDB
OthrerServer
Browser
Bluemixとは?
� CloudFoundryベースのPaaS� Pluggableな言語ランタイム
(Buildpack)� 豊富なSaaS (IBM, 3rd-party)
� IBM M/Ws• SQLDB(DB2), workflow(BPM),
Integration(IIB), Rules(ODM)� Watson, IoT, mobile�
Operation
Test
Dev-PC
Deploy to Bluemix
DB2Express
Bluemix
SQLDBCloudFoundaryLibety buildpack
EclipseLibety
RuntimeWDT
Java EE7App
Java EE7App
Browser
$ curl
$ cf
デプロイ
state since cpu memory disk
details
#0 running 2015-10-08 11:45:44 PM 1.5% 206.9M of 1G 257.6M of 1G
ログ確認
$ cf push wlp8556jee7Web -p wlp8556jee7Web.war
$ cf logs wlp8556jee7Web --recent
デプロイ
DBの利⽤
$ cf create-service sqldb sqldb_free db2Con001
OK
DB作成
$ cf bind-service wlp8556jee7Web db2Con001
OK
$ cf services name service plan bound apps last operation
db2Con001 sqldb sqldb_free wlp8556jee7Web create succeeded
アプリにBind
まとめ
� Cloud実⾏可能なJavaEE7アプリを簡単に開発できる
� (⾼機能なのに)簡単導入, 単純構成, 軽い, 速い, 小さいフットプリント
� DevOps, Microservicesがすぐに実現されるものではないが、この軽さがそれを促進する可能性は大きい
� 検証, 開発⽤として有⼒な選択肢の一つ