WAS LibertyでCloud-ReadyなJava EE7アプリ開発

27
WAS Libertyで Cloud-Readyな Java EE7アプリ開発 2015/10/10 回 #渋java Hideyuki Fujikawa

Transcript of WAS LibertyでCloud-ReadyなJava EE7アプリ開発

WAS LibertyでCloud-ReadyなJava EE7アプリ開発

2015/10/10第十三回 #渋谷javaHideyuki Fujikawa

自己紹介

� ⾦融 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

コミュニティ主導

� 配布,情報発信にBlogやGitHubを活⽤� ただし、本体はOSSではない

•ランタイム•フィーチャー

•サンプルコード•プラグインコード

実装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)

Demo

install Runtime

•ダウンロードしたzip(100MB未満!)

をunzipするだけ•Mavenも利⽤可

install WDT

Eclipse-Marketplaceから導入

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

JSF

1. View実装2. ManagedBean実装※ FacesServlet定義はOption

JPA

1. テーブルからEntity 自動生成2. persistence.xml 作成3. Dao実装

JAX-WS

1. Webサービスプロバイダ実装2. WSDLを自動生成

JAX-RS

1. Applicationクラスを実装2. Resourceクラスを実装※web.xml定義はアノテーションで代替可

Deproy to Bluemix

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

事前準備

� Bluemix のサインアップ� CF CLI のインストール� war の作成

etc…

詳しくは…Bluemix ハンズオン pdf 検索

デプロイ

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

DBの情報

DB基本情報照会はWeb-UIで

まとめ

� Cloud実⾏可能なJavaEE7アプリを簡単に開発できる

� (⾼機能なのに)簡単導入, 単純構成, 軽い, 速い, 小さいフットプリント

� DevOps, Microservicesがすぐに実現されるものではないが、この軽さがそれを促進する可能性は大きい

� 検証, 開発⽤として有⼒な選択肢の一つ

Q&A?