Weitere ähnliche Inhalte
Ähnlich wie 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 (20)
Mehr von Takakiyo Tanaka (12)
Kürzlich hochgeladen (11)
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
- 1. © 2014 IBM Corporation
#natsumiA4
クラウドとCIツールで変わる
エンタープライズJava開発
2014年 7月 31日
日本アイ・ビー・エム株式会社
ソフトウェア事業本部 WebSphere 事業部
- 2. © 2014 IBM Corporation
#natsumiA4
ビジネスのスピードに伴い,変化するワークロード
2
クラウドベース
のサービス
システム・オブ・エンゲージメント
(つながり中心のシステム)
システム・オブ・レコード
(記録中心のシステム)
CRM HR
DB ERP
対話中心のシステム
モノのインターネット
ワークロードの変化により,
システムデリバリーへの要件も変化
ü より頻繁なリリース
(数ヶ月おき à 数日おき)
ü より頻繁な統合
(数週間 à 継続的)
ü フィードバック・ループ
(定期的 à 顧客との継続的な対話)
高まるDevOpsへのニーズ
- 3. © 2014 IBM Corporation
#natsumiA4
Java EE環境の開発から運用までの流れ
3
開発 構成管理理 ビルド 統合テスト環境 ステージング環境 本番環境
開発
運用
マニュアル作業
環境の複雑性 運⽤用担当者の
作業負荷
- 4. © 2014 IBM Corporation
#natsumiA4
よくある開発→運用環境の課題
4
基幹システムの構築中で,
開発環境に対するリリースの頻度度が⾮非常に多い。
担当者が残業/徹夜で対応することもある。
運⽤用チームにお願いしても
開発・テスト環境構築の時間が⻑⾧長く,
開発チーム側で“待ち時間”が⽣生じて開発⽣生産性が上がらない。
リリース・プロセスが複雑で,⼤大量量にスクリプトを⼿手作りし,
メンテナンスコスト増加や属⼈人化が起こっている。
本番環境含めて5環境を有しており,設定ミスが多い。
また,環境毎にスクリプトを作成し,
マニュアル(⼿手作業)で実⾏行行している。
- 5. © 2014 IBM Corporation
#natsumiA4
対処方法は明らか
→ ツールによる自動化の導入
5
- 6. © 2014 IBM Corporation
#natsumiA4
自動化ツール 使ってますか?
§ Apache Ant
§ Maven
§ Jenkins
§ IBM UrbanCode Deploy
6
- 7. © 2014 IBM Corporation
#natsumiA4
ベンダー系のJava EEサーバーとDevOpsツール
必ずしも相性がいいとはいえなかった
§ 製品の導入
– 大きな導入イメージ
– 専用のインストーラーがファイルの展開以外にも多くの導入後処理を実行
• OSの構成情報を編集
• サーバーのアドレス・ホスト名等の環境情報のとりこみ
等
§ 製品の管理
– GUIや専用ツールによる構成
– 専用の管理コマンドによるサーバーの起動・停止,アプリのデプロイ
§ 製品の動作
– 起動にかかる時間・停止操作にかかる時間
– 使用するリソースの多さ
7
- 8. © 2014 IBM Corporation
#natsumiA4
8 WebSphere Software
Java EEサーバーと自動化ツール
ツールにとって
理想的な
Java EEサーバー
従来の
Java EEサーバー
少ないフットプリント
ファイルの展開による導入
フラットファイルによる構成
短い起動時間
大きな導入イメージ
独自のインストーラー
GUI・専用ツールによる構成
長い起動時間
- 9. © 2014 IBM Corporation
#natsumiA4
開発用途として多用されるOSS
§ これらの条件を満たすOSSアプリケーションサーバーとして
TomcatやJettyが多用されているが・・・
§ 機能がServlet/JSPに限定
– その他の機能を使用するためには
多数の追加コンポーネントが必要
§ 可用性機能の不足
– トランザクション・マネージャーの品質等
§ 高い負荷のかかる環境での
パフォーマンス不足
§ JDK/JREのサポートが別途必要
9
- 10. © 2014 IBM Corporation
#natsumiA4
10
WASの新しいランタイム:Libertyプロファイル
WAS V8.5.5 Liberty & WDT
Web Profile準拠
Java EE 6のWeb Profile標準に
準拠したアプリを完全サポート
JAX-WS, JAX-RS, JMSもサポート
Unzipによる導入とデプロイ
パッケージをした
サーバー + アプリ + 構成情報を
Unzipでデプロイ可能
簡単な構成と動的変更
最低限必要な構成ファイルは
server.xmlひとつだけ
デフォルトベースで簡単構成
構成変更は再起動なしに反映
軽量ランタイム
メモリー使用量が小さい: 60MB程度~
ディスク使用量も100MB以下
起動が速い
起動時間: 5秒程度
統合ツール(WDT)
高機能なEclipse用の連携ツールを無償で提供
Eclipseから簡単に使用可能
自動化ツールとの連携
多くのOSSツールに
無償でプラグインを提供
- 11. © 2014 IBM Corporation
#natsumiA4
11
Libertyプロファイルの特長
WAS V8.5.5 Liberty & WDT
Web Profile準拠
Java EE 6のWeb Profile標準に
準拠したアプリを完全サポート
JAX-WS, JAX-RS, JMSもサポート
Unzipによる導入とデプロイ
パッケージをした
サーバー + アプリ + 構成情報を
Unzipでデプロイ可能
簡単な構成と動的変更
最低限必要な構成ファイルは
server.xmlひとつだけ
デフォルトベースで簡単構成
構成変更は再起動なしに反映
軽量ランタイム
メモリー使用量が小さい: 60MB程度~
ディスク使用量も100MB以下
起動が速い
起動時間: 5秒程度
統合ツール(WDT)
高機能なEclipse用の連携ツールを無償で提供
Eclipseから簡単に使用可能
自動化ツールとの連携
多くのOSSツールに
無償でプラグインを提供
- 12. © 2014 IBM Corporation
#natsumiA4
12
軽量ランタイム ・ 高速起動
§ 数秒で起動
§ わずかなJavaヒープサイズで稼働
• TradeLite でも60M バイト程度
§ 50Mバイト程度のダウンロードファイル
– 展開した状態でも100Mバイト程度の実行環境
Raspberry Piのような
資源が限られた環境ですら稼働
クラウド環境での
高密度集約に最適な実行環境
- 13. © 2014 IBM Corporation
#natsumiA4
13
Libertyプロファイルの特長
WAS V8.5.5 Liberty & WDT
Web Profile準拠
Java EE 6のWeb Profile標準に
準拠したアプリを完全サポート
JAX-WS, JAX-RS, JMSもサポート
自動化ツールとの連携
多くのOSSツールに
無償でプラグインを提供
Unzipによる導入とデプロイ
パッケージをした
サーバー + アプリ + 構成情報を
Unzipでデプロイ可能
簡単な構成と動的変更
最低限必要な構成ファイルは
server.xmlひとつだけ
デフォルトベースで簡単構成
構成変更は再起動なしに反映
軽量ランタイム
メモリー使用量が小さい: 60MB程度~
ディスク使用量も100MB以下
起動が速い
起動時間: 5秒程度
統合ツール(WDT)
高機能なEclipse用の連携ツールを無償で提供
Eclipseから簡単に使用可能
- 14. © 2014 IBM Corporation
#natsumiA4
14
Java EE 6 Web Profile準拠+α
Web Services Technologies
JSR 311: JAX-RS: The Java API
for RESTful Web Services 1.1
JSR 224: Java API for XML-Based
Web Services (JAX-WS) 2.2
JSR 222: Java Architecture
for XML Binding (JAXB) 2.2
JSR 109: Implementing Enterprise Web Services 1.3
JSR 181: Web Services Metadata
for the Java Platform
JSR 101: Java APIs for XML based RPC 1.1
JSR 67: Java APIs for XML Messaging 1.3
JSR 93: Java API for
XML Registries 1.0 (JAXR) 1.0
Management and Security Technologies
JSR 196: Java Authentication Service Provider
Interface for Containers 1.0
JSR 115: Java Authorization
Contract for Containers 1.3
JSR 88: Java EE Application Deployment 1.2
JSR 77: J2EE Management 1.1
Web Profile
Web Application Technologies
JSR 315: Java Servlet 3.0
JSR 314: JavaServer Faces (JSF) 2.0
JSR 245: JavaServer Pages 2.2
and Expression Language (EL) 1.2
JSR 52: A Standard Tag Library for JavaServer Pages 1.2
JSR-45: Debugging Support for Other Languages 1.0
Enterprise Application Technologies
JSR 299: Contexts and Dependency Injection
for the Java EE Platform 1.0
JSR 330: Dependency Injection for Java
JSR 318: Enterprise JavaBeans 3.1 (EJB Lite)
JSR 317: Java Persistence API 2.0
JSR 250: Common Annotations for the Java Platform 1.1
JSR 907: Java Transaction API (JTA) 1.1
JSR 303: Bean Validation 1.0
JSR 914: Java Message Service (JMS) API 1.1
JSR 318: Enterprise JavaBeans 3.1
JSR 322: Java EE Connector Architecture 1.6
JSR 919: JavaMail 1.4
Java EE full Profile
Libertyプロファイル
Libertyプロファイル
Libertyプロファイル
Libertyプロファイル
Libertyプロファイル
- 15. © 2014 IBM Corporation
#natsumiA4
15
必要な機能(Feature)だけを組み合わせて利用
Java EEなどの標準仕様に定義されたAPIや
サーバーが提供する多くの機能のうち
Servlet JSP JSF SSL
JAX-RS JSON JPA
JAX-WS JAX-B JDBC JTA
JMS CDI JNDI
EJB lite EJB MDB Blueprint WAB
ユーザーが必要な機能だけを
自由に組み合わせることができる
- 16. © 2014 IBM Corporation
#natsumiA4
API・サーバー機能をFeatureとして定義
16
• 必要なものだけを構成
– 設定されたものだけがメモリにロード・初期化される
→ 最小限の起動時間・メモリー使用
ServletJSPJDBCSSL
JAX-RS
sessionDatabase
<featureManager>
<feature>jsp-‐2.2</feature>
<feature>jdbc-‐4.0</feature>
<feature>jaxrs-‐1.1</feature>
<feature>sessionDatabase-‐1.0</feature>
<feature>ssl-‐1.0</feature>
</featureManager>
構成ファイル server.xml
依存関係も
自動的に解決
JSON
- 17. © 2014 IBM Corporation
#natsumiA4
新しいFeatureを,順次Liberty Repositoryで提供
§ Liberty Repositoryで新しいFeatureを入手可能
– Java EE 7を構成する
仕様も順次公開予定
– GUI管理画面や
z/OS Connectなど
§ 新バージョンのFeatureは
「置き換え」ではなく「追加」
– 例)
servlet-3.1を追加しても
servlet-3.0は
引き続き使用可能
– マイグレーション不要
17
https://developer.ibm.com/wasdev/downloads/
- 18. © 2014 IBM Corporation
#natsumiA4
18
Libertyプロファイルの特長
WAS V8.5.5 Liberty & WDT
Web Profile準拠
Java EE 6のWeb Profile標準に
準拠したアプリを完全サポート
JAX-WS, JAX-RS, JMSもサポート
プラットフォーム拡充
開発用として
Mac OS Xを追加サポート
Unzipによる導入とデプロイ
パッケージをした
サーバー + アプリ + 構成情報を
Unzipでデプロイ可能
簡単な構成と動的変更
最低限必要な構成ファイルは
server.xmlひとつだけ
デフォルトベースで簡単構成
構成変更は再起動なしに反映
軽量ランタイム
メモリー使用量が小さい: 60MB程度~
ディスク使用量も100MB以下
起動が速い
起動時間: 5秒程度
開発ツールや運用ツールとの統合
高機能なEclipse用の連携ツールを無償で提供
各種ツールとの連携機能も提供
- 19. © 2014 IBM Corporation
#natsumiA4
19
Eclipse向けに統合ツール
Liberty Profile Developer Toolsを無償提供
WebSphere Application Server
Developer Tools
Eclipse (Luna / Kepler)
Web Tools Platform
WAS V8.5.5
Libertyプロファイル
for Developer
連携
• Libertyプロファイル 実行環境の自動ダウンロード
• サーバー構成の作成・GUIによる編集
• テストサーバーへのアプリケーションの自動デプロイ
• アプリケーションのデバッグ・ステップ実行
• サーバー構成・アプリケーションのパッケージング
Java EEアプリケーションの開発・テスト環境を無償で構築
- 20. © 2014 IBM Corporation
#natsumiA4
20
Eclipse Marketplaceから簡単導入
• メニューの「ヘルプ」→「Marketplace」から
「websphere liberty」で検索してインストールするだけ
- 21. © 2014 IBM Corporation
#natsumiA4
21
Libertyプロファイルの特長
WAS V8.5.5 Liberty & WDT
Web Profile準拠
Java EE 6のWeb Profile標準に
準拠したアプリを完全サポート
JAX-WS, JAX-RS, JMSもサポート
Unzipによる導入とデプロイ
パッケージをした
サーバー + アプリ + 構成情報を
Unzipでデプロイ可能
簡単な構成と動的変更
最低限必要な構成ファイルは
server.xmlひとつだけ
デフォルトベースで簡単構成
構成変更は再起動なしに反映
軽量ランタイム
メモリー使用量が小さい: 60MB程度~
ディスク使用量も100MB以下
起動が速い
起動時間: 5秒程度
統合ツール(WDT)
高機能なEclipse用の連携ツールを無償で提供
Eclipseから簡単に使用可能
自動化ツールとの連携
多くのOSSツールに
無償でプラグインを提供
- 22. © 2014 IBM Corporation
#natsumiA4
シンプルで柔軟な構成
§ 基本はserver.xmlという単一のファイル
§ 全ての構成項目がデフォルトの値をもつ
– デフォルトから変更する場合にのみ記述
– 簡潔な構成ファイル
22
<server
description="new
server">
<!-‐-‐
Enable
features
-‐-‐>
<featureManager>
<feature>jsp-‐2.2</feature>
</featureManager>
</server>
Libertyプロファイルの最小構成ファイルの例
<?xml
version="1.0"
encoding="UTF-‐8"?>
<security:Security
xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:orb.securityprotocol="http://www.ibm.com/websphere/appserver/schemas/5.0/
orb.securityprotocol.xmi"
xmlns:security="http://www.ibm.com/websphere/appserver/schemas/5.0/
security.xmi"
xmi:id="Security_1"
useLocalSecurityServer="true"
useDomainQualifiedUserNames="false"
enabled="true"
cacheTimeout="600"
issuePermissionWarning="true"
activeProtocol="BOTH"
enforceJava2Security="false"
enforceFineGrainedJCASecurity="false"
appEnabled="false"
dynamicallyUpdateSSLConfig="true"
allowBasicAuth="true"
activeAuthMechanism="LTPA_1"
activeUserRegistry="WIMUserRegistry_1"
defaultSSLSettings="SSLConfig_1">
<authMechanisms
xmi:type="security:KRB5"
xmi:id="KRB5_1"
OID="oid:1.2.840.113554.1.2.2"
authContextImplClass="com.ibm.ISecurityLocalObjectTokenBaseImpl.Krb5WSSecurityContextImpl"
authConfig="system.KRB5"
simpleAuthConfig="system.KRB5"
authValidationConfig="system.KRB5"
krb5Realm=""
krb5Config=""
krb5Keytab=""
krb5Spn="WAS/${HOST}"
trimUserName="true"
enabledGssCredDelegate="true"/>
<authMechanisms
xmi:type="security:LTPA"
xmi:id="LTPA_1"
OID="oid:1.3.18.0.2.30.2"
authContextImplClass="com.ibm.ISecurityLocalObjectTokenBaseImpl.WSSecurityContextLTPAImpl"
authConfig="system.LTPA"
simpleAuthConfig="system.LTPA"
authValidationConfig="system.LTPA"
timeout="120"
keySetGroup="KeySetGroup_1">
<trustAssociation
xmi:id="TrustAssociation_1"
enabled="false">
<interceptors
xmi:id="TAInterceptor_1"
interceptorClassName="com.ibm.ws.security.web.TAMTrustAssociationInterceptorPlus"/>
<interceptors
xmi:id="TAInterceptor_2"
interceptorClassName="com.ibm.ws.security.spnego.TrustAssociationInterceptorImpl"/>
</trustAssociation>
<singleSignon
xmi:id="SingleSignon_1"
requiresSSL="false"
domainName=""
enabled="true"/>
</authMechanisms>
<authMechanisms
xmi:type="security:SPNEGO"
xmi:id="SPNEGO_1"
OID="oid:1.3.6.1.5.5.2"
authContextImplClass="com.ibm.ws.security.spnego.TrustAssociationInterceptorImpl"
allowAppAuthMethodFallback="false"/>
<?xml
version="1.0"
encoding="UTF-‐8"?>
<security:Security
xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:orb.securityprotocol="http://www.ibm.com/websphere/appserver/schemas/5.0/
orb.securityprotocol.xmi"
xmlns:security="http://www.ibm.com/websphere/appserver/schemas/5.0/
security.xmi"
xmi:id="Security_1"
useLocalSecurityServer="true"
useDomainQualifiedUserNames="false"
enabled="true"
cacheTimeout="600"
issuePermissionWarning="true"
activeProtocol="BOTH"
enforceJava2Security="false"
enforceFineGrainedJCASecurity="false"
appEnabled="false"
dynamicallyUpdateSSLConfig="true"
allowBasicAuth="true"
activeAuthMechanism="LTPA_1"
activeUserRegistry="WIMUserRegistry_1"
defaultSSLSettings="SSLConfig_1">
<authMechanisms
xmi:type="security:KRB5"
xmi:id="KRB5_1"
OID="oid:1.2.840.113554.1.2.2"
authContextImplClass="com.ibm.ISecurityLocalObjectTokenBaseImpl.Krb5WSSecurityContextImpl"
authConfig="system.KRB5"
simpleAuthConfig="system.KRB5"
authValidationConfig="system.KRB5"
krb5Realm=""
krb5Config=""
krb5Keytab=""
krb5Spn="WAS/${HOST}"
trimUserName="true"
enabledGssCredDelegate="true"/>
<authMechanisms
xmi:type="security:LTPA"
xmi:id="LTPA_1"
OID="oid:1.3.18.0.2.30.2"
authContextImplClass="com.ibm.ISecurityLocalObjectTokenBaseImpl.WSSecurityContextLTPAImpl"
authConfig="system.LTPA"
simpleAuthConfig="system.LTPA"
authValidationConfig="system.LTPA"
timeout="120"
keySetGroup="KeySetGroup_1">
<trustAssociation
xmi:id="TrustAssociation_1"
enabled="false">
<interceptors
xmi:id="TAInterceptor_1"
interceptorClassName="com.ibm.ws.security.web.TAMTrustAssociationInterceptorPlus"/>
<interceptors
xmi:id="TAInterceptor_2"
interceptorClassName="com.ibm.ws.security.spnego.TrustAssociationInterceptorImpl"/>
</trustAssociation>
<singleSignon
xmi:id="SingleSignon_1"
requiresSSL="false"
domainName=""
enabled="true"/>
</authMechanisms>
<authMechanisms
xmi:type="security:SPNEGO"
xmi:id="SPNEGO_1"
OID="oid:1.3.6.1.5.5.2"
authContextImplClass="com.ibm.ws.security.spnego.TrustAssociationInterceptorImpl"
allowAppAuthMethodFallback="false"/>
<?xml
version="1.0"
encoding="UTF-‐8"?>
<security:Security
xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:orb.securityprotocol="http://www.ibm.com/websphere/appserver/schemas/5.0/
orb.securityprotocol.xmi"
xmlns:security="http://www.ibm.com/websphere/appserver/schemas/5.0/
security.xmi"
xmi:id="Security_1"
useLocalSecurityServer="true"
useDomainQualifiedUserNames="false"
enabled="true"
cacheTimeout="600"
issuePermissionWarning="true"
activeProtocol="BOTH"
enforceJava2Security="false"
enforceFineGrainedJCASecurity="false"
appEnabled="false"
dynamicallyUpdateSSLConfig="true"
allowBasicAuth="true"
activeAuthMechanism="LTPA_1"
activeUserRegistry="WIMUserRegistry_1"
defaultSSLSettings="SSLConfig_1">
<authMechanisms
xmi:type="security:KRB5"
xmi:id="KRB5_1"
OID="oid:1.2.840.113554.1.2.2"
authContextImplClass="com.ibm.ISecurityLocalObjectTokenBaseImpl.Krb5WSSecurityContextImpl"
authConfig="system.KRB5"
simpleAuthConfig="system.KRB5"
authValidationConfig="system.KRB5"
krb5Realm=""
krb5Config=""
krb5Keytab=""
krb5Spn="WAS/${HOST}"
trimUserName="true"
enabledGssCredDelegate="true"/>
<authMechanisms
xmi:type="security:LTPA"
xmi:id="LTPA_1"
OID="oid:1.3.18.0.2.30.2"
authContextImplClass="com.ibm.ISecurityLocalObjectTokenBaseImpl.WSSecurityContextLTPAImpl"
authConfig="system.LTPA"
simpleAuthConfig="system.LTPA"
authValidationConfig="system.LTPA"
timeout="120"
keySetGroup="KeySetGroup_1">
<trustAssociation
xmi:id="TrustAssociation_1"
enabled="false">
<interceptors
xmi:id="TAInterceptor_1"
interceptorClassName="com.ibm.ws.security.web.TAMTrustAssociationInterceptorPlus"/>
<interceptors
xmi:id="TAInterceptor_2"
interceptorClassName="com.ibm.ws.security.spnego.TrustAssociationInterceptorImpl"/>
</trustAssociation>
<singleSignon
xmi:id="SingleSignon_1"
requiresSSL="false"
domainName=""
enabled="true"/>
</authMechanisms>
<authMechanisms
xmi:type="security:SPNEGO"
xmi:id="SPNEGO_1"
OID="oid:1.3.6.1.5.5.2"
authContextImplClass="com.ibm.ws.security.spnego.TrustAssociationInterceptorImpl"
allowAppAuthMethodFallback="false"/>
従来のWASの構成ファイルの例
バージョン
管理システムでの
履歴管理も
容易
- 23. © 2014 IBM Corporation
#natsumiA4
管理ツールによる構成ファイルの編集
§ Eclipse上のDeveloper Toolsでは
GUIでserver.xmlを編集する機能も提供
§ 省略されている
デフォルト値も
GUI上では
項目と値を表示
23
- 24. © 2014 IBM Corporation
#natsumiA4
24
Libertyプロファイルの特長
WAS V8.5.5 Liberty & WDT
Web Profile準拠
Java EE 6のWeb Profile標準に
準拠したアプリを完全サポート
JAX-WS, JAX-RS, JMSもサポート
Unzipによる導入とデプロイ
パッケージをした
サーバー + アプリ + 構成情報を
Unzipでデプロイ可能
簡単な構成と動的変更
最低限必要な構成ファイルは
server.xmlひとつだけ
デフォルトベースで簡単構成
構成変更は再起動なしに反映
軽量ランタイム
メモリー使用量が小さい: 60MB程度~
ディスク使用量も100MB以下
起動が速い
起動時間: 5秒程度
統合ツール(WDT)
高機能なEclipse用の連携ツールを無償で提供
Eclipseから簡単に使用可能
自動化ツールとの連携
多くのOSSツールに
無償でプラグインを提供
- 25. © 2014 IBM Corporation
#natsumiA4
サーバー環境のパッケージ化
25
• 開発環境のLibertyプロファイル+構成ファイル+アプリケーションを
丸ごとZipファイルとしてパッケージすることが可能
– Zipを展開するだけで本番環境に導入
– Libertyプロファイルの実行環境や
構成情報なども開発環境で変更管理
• 使用するFeatureだけをパッケージすることにより
さらに小さな導入イメージを作成可能
– Servlet/JSP/JDBCのみを使用する
アプリケーションをパッケージすると
20数Mバイトの導入イメージも
- 26. © 2014 IBM Corporation
#natsumiA4
パッケージ作成による複数環境の導入
§ 開発環境でテストしたアプリケーションだけでなく
製品の構成・Fixpackレベルまでふくめて
そのまま本番環境へ移行することが可能
– 複数環境を確実に同期
– アプリケーションの更新と製品の更新を同じレベルで管理
26
開発環境
Java SDK
Liberty Profile
サーバー構成
アプリ
①インストール
ディスク
②サーバー構成
③アプリ開発
テスト・本番環境
Java SDK
Liberty Profile
サーバー構成
アプリ
ディスク
ZIPファイル
④パッケージ ⑤展開
- 27. © 2014 IBM Corporation
#natsumiA4
パッケージを利用したJava EE環境のDevOps
§ 開発者がアプリケーションだけでなく,
サーバーの構成・リソースも作成
§ サーバー構成なども含めて
バージョン管理システムに登録
§ ビルドツールがアプリ+サーバー構成を
チェックアウトして環境を作成・テスト
§ テストが完了した成果物を
実行環境ごとZIPして本番環境にデプロイ
27
- 28. © 2014 IBM Corporation
#natsumiA4
28
WASの新しいランタイム:Libertyプロファイル
WAS V8.5.5 Liberty & WDT
Web Profile準拠
Java EE 6のWeb Profile標準に
準拠したアプリを完全サポート
JAX-WS, JAX-RS, JMSもサポート
Unzipによる導入とデプロイ
パッケージをした
サーバー + アプリ + 構成情報を
Unzipでデプロイ可能
簡単な構成と動的変更
最低限必要な構成ファイルは
server.xmlひとつだけ
デフォルトベースで簡単構成
構成変更は再起動なしに反映
軽量ランタイム
メモリー使用量が小さい: 60MB程度~
ディスク使用量も100MB以下
起動が速い
起動時間: 5秒程度
統合ツール(WDT)
高機能なEclipse用の連携ツールを無償で提供
Eclipseから簡単に使用可能
自動化ツールとの連携
多くのOSSツールに
無償でプラグインを提供
- 29. © 2014 IBM Corporation
#natsumiA4
各種ツールとの連携
各種CI・Buildツールとの
連携機能をGitHubで公開
29
h"ps://github.com/wasdev
- 30. © 2014 IBM Corporation
#natsumiA4
Apache Maven
§ Java用プロジェクト管理ツール
– 統一したビルドプロセスの提供
– 依存関係の管理
– 必要なファイルの自動ダウンロード
• Mavenセントラルリポジトリ
• 各種の公開リポジトリ
• プロジェクトのリポジトリ
• ローカルリポジトリ
– プラグインによる柔軟な拡張が可能
• テストの実行や成果物の配布なども
30
- 31. © 2014 IBM Corporation
#natsumiA4
MavenからのLibertyプロファイルの利用
§ pom.xmlにRepositoryとPluginを登録
31
<project>
...
<pluginRepositories>
<!-- Configure WASdev repository -->
<pluginRepository>
<id>WASdev</id>
<name>WASdev Repository</name>
<url>http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/maven/repository/</url>
<layout>default</layout>
<snapshots><enabled>false</enabled></snapshots>
<releases><enabled>true</enabled></releases>
</pluginRepository>
</pluginRepositories>
...
<build>
<plugins>
<!-- Enable liberty-maven-plugin -->
<plugin>
<groupId>com.ibm.websphere.wlp.maven.plugins</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>1.0</version>
<!-- Specify configuration, executions for liberty-maven-plugin -->
...
</plugin>
</plugins>
</build>
...
</project>
IBMがレポジトリを提供
- 32. © 2014 IBM Corporation
#natsumiA4
Mavenで利用できるLibertyプロファイルのGoal
§ liberty:create-server
– サーバーを作成
§ liberty:start-server
– サーバーを始動
§ liberty:stop-server
– サーバーを停止
§ liberty:deploy
– アプリケーションをサーバーにデプロイ
§ liberty:undeploy
– サーバーからアプリケーションを削除
§ liberty:install-apps
– サーバーのdropinsディレクトリにアプリケーションをコピー
§ liberty:package-server
– サーバーをパッケージ
32
- 33. © 2014 IBM Corporation
#natsumiA4
Mavenのビルド・ライフサイクルへの組み込み
33
validate
compile
test-compile
test
package
pre-integration-test
integration-test
post-integration-test
verify
install
deploy
$ cd my-project
$ mvn packate
...
$ cd my-project
$ mvn install
...
<plugin>
<groupId>com.ibm.websphere.wlp.maven.plugins</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<executions>
<execution>
<phase>pre-integration-test</phase>
<goals>
<goal>create-server</goal>
</goals>
...
</execution>
</executions>
</plugin>
<goals>
<goal>start-server</goal>
</goals>
<goals>
<goal>install-apps</goal>
</goals>
<phase>post-integration-test</phase>
<goals>
<goal>stop-server</goal>
</goals>
サーバーの作成
サーバーの起動
アプリケーションのインストール
サーバーの停止
- 34. © 2014 IBM Corporation
#natsumiA4
Jenkins: Continuous Integration Server
§ Javaで書かれたオープンソース継続的インテグレーションツール
– 継続的な、ソフトウェアプロジェクトのビルドとテスト
– ユーザーからの操作や
ファイル監視などをトリガーに処理を実行
– 複数サーバーで
分散ビルド・テストを実行
§ プラグインによる拡張で
さまざまな操作を自動化
– WASのプラグインも提供
34
- 35. © 2014 IBM Corporation
#natsumiA4
Jenkinsによるアプリケーション管理の自動化
§ バージョン管理システム(VCS)や
ビルドツールとの連携が容易
– プラグインを使用すると
管理画面で設定するだけで
処理を自動化できる
– コーディングやスクリプトが不要に
§ 処理の完了をJenkinsがモニター
– ビルドが終わったら配布,
テストが完了したら通知など
一連の処理を自動化できる
35
1. 処理のキック
2. コードの
Checkout
3. ビルド
パッケージ
テスト環境
VCS
本番環境
4. 配布
5. テスト
6. 結果の通知
7. 本番へのデプロイ
- 36. © 2014 IBM Corporation
#natsumiA4
プロジェクトでOSSを使用するのが難しい場合
§ もちろんIBM製品によるDevOpsの実現も可能です
36
DevOps Foundation (Jazz)
Open Lifecycle and Service Management Integration Platform
DevOps ライフサイクル
運用/本番
開発/テスト
お客様
事業部門
継続的なイノベーション、フィードバック、改善
SmarterCloud Application
Performance Management
SmarterCloud Orchestrator
IBM Pure Application System
Openstack
Rational Focal Point
Rational
Requirements
Composer
Rational Team Concert
Rational Quality Manager
Rational Test Workbench
Rational Test Virtualization
Server
- 37. © 2014 IBM Corporation
#natsumiA4
urban{code} プログラミング不要な容易なプロセス定義
37
事前定義された部品
(インストール、アンインストール、
ロールバックなど)
ドラッグ&ドロップによるビジュアルな定義
(順番1) Javaアプリケー
ションのインストール
(順番2) Webアプリケーションの
インストール
(順番2) DBデータの追加
- 38. © 2014 IBM Corporation
#natsumiA4
Bluemix: IBMの次世代クラウドプラットフォーム
§ PaaS環境
– ランタイムや
アプリケーションから
利用可能な
サービスを事前定義
– データベースをはじめ
認証・分散キャッシュ
ビジネスプロセス等を
利用することができる
§ Cloud Foundryベース
– OSSのPaaSツール
– ビルドパックにより
アプリ実行環境を
可搬性を持って実装
38
Liberty
Profile
IBM Bluemix PaaS
- 39. © 2014 IBM Corporation
#natsumiA4
BluemixのJavaランタイムはLibertyプロファイル
§ Eclipse/Libertyプロファイル上で開発しているJava EEコードを
そのままBlumix上で実行・テストすることが可能
§ Cloud Foundryのツールを使用すれば,
開発したアプリケーションをBlumixやVMware上の仮想環境へ
自動でデプロイ
39
cf push app.war
IBM Bluemix
独自に構築した
Cloud Foundry
- 40. © 2014 IBM Corporation
#natsumiA4
まとめ
§ IBMのJava EE実行環境であるWebSphere Application Serverは
新しいランタイムとしてLibertyプロファイルを提供
§ Libertyプロファイルは軽量・シンプルなランタイムで
多くのツールに対してプラグインが提供されているため
クラウド対応やDevOpsの実現に最適
§ 各種OSSやベンダー製品が充実してきた今は
開発・テストと運用の自動化に再チャレンジする最適のタイミング
40
- 41. © 2014 IBM Corporation
#natsumiA4
参考資料
§ WAS V8.5.5 最新情報ワークショップ資料
– http://www.ibm.com/developerworks/jp/websphere/library/was/was855liberty_ws/
Libertyプロファイルについて日本語で一番詳細な情報
§ Redbooks: Configuring and Deploying Open Source
with WebSphere Application Server Liberty Profile
– http://www.redbooks.ibm.com/abstracts/sg248194.html
各種OSSとLibertyプロファイルの連携方法
まもなく日本語化されたものがでます。
§ Codezine: 軽量・高速・安価で、安定性と信頼性も兼ね備えた
WebSphere Application Serverの「Liberty Core」を使ってみた
– http://codezine.jp/article/detail/7697
とりあえずLibertyプロファイルを試してみたい方に最適の記事
§ Codezine: Jenkinsで実現するJava EEアプリケーションの自動ビルドと自動デプロイ
– http://codezine.jp/article/detail/7929
JenkinsとLibertyプロファイルの連携について
§ IBM developerWorks 日本語版: WebSphere Application Server
– http://www.ibm.com/developerworks/jp/websphere/category/was/
日本語によるWASの各種技術情報はこちらから
41