Upload
takakiyo-tanaka
View
424
Download
6
Embed Size (px)
Citation preview
1
#ccc_c3
オープンソースになったWebSphere Liberty
2
#ccc_c3
⾃⼰紹介
⽥中 孝清• 1998年より⽇本IBM
(WebSphere Version 1.0が出た年)
• WebSphereのTechnical Sales(会社⼈⽣ = WebSphereの歴史)
• JJUGの幹事をやっています
• 家族:妻・⼦供⼆⼈, 趣味:登⼭
3
#ccc_c3
3
OSSになったWebSphereOpen Liberty:An IBM Open Source Project
4
#ccc_c3
WebSphereのイメージ?
•重い•導⼊とか構成とかが⼤変•お値段が⾼い•そもそも使ったことがない
5
#ccc_c3
Demo
1 Minuteinstall & deploy
Get started fast
• サーバーの導⼊
• サーバー構成の作成
• サーバーの起動
• アプリケーションの導⼊
の⼀連の作業が,1分で可能
7
#ccc_c3
無料でダウンロードhttps://openliberty.io
8
#ccc_c3
ソースコードもCloneできますhttps://github.com/OpenLiberty/open-liberty
$ git clone https://github.com/OpenLiberty/open-libertyCloning into 'open-liberty'...remote: Counting objects: 58072, done.remote: Compressing objects: 100% (4/4), done.remote: Total 58072 (delta 0), reused 1 (delta 0), pack-reused 58068Receiving objects: 100% (58072/58072), 63.65 MiB | 531.00 KiB/s, done.Resolving deltas: 100% (25951/25951), done.Checking out files: 100% (33424/33424), done.
9
#ccc_c3
もちろんビルドもできます$ cd open-liberty/dev$ ./gradlew cnf:initialize
(中略)
$ ./gradlew assemble
(中略)
com.ibm.websphere.org.osgi.service.component, jsse, com.ibm.websphere.org.osgi.service.cm, jmock-2.5.1, management-agent, plugin, jfr, com.ibm.ws.logging.core, com.ibm.wsspi.thirdparty.equinox, charsets, com.ibm.ws.runtime.update, commons-compress-1.10]
> Task :wlp.lib.extract_fat:autoFVTThis FAT tests the following features: [servlet-3.0]
BUILD SUCCESSFUL in 21m 22s3350 actionable tasks: 3348 executed, 2 up-to-date
$
10
#ccc_c3
Pull Req.もバンバンきてますhttps://github.com/OpenLiberty/open-liberty/pulls
11
#ccc_c3
本当にWebSphereがオープンソースになっています
https://developer.ibm.com/wasdev/blog/2017/09/19/liberty-open-source/
12
#ccc_c3
しかも Eclipse Public License
• 商⽤利⽤もしやすいEPL 1.0で公開o いわゆる「Permissiveなライセンス」o 派⽣物をOSSにする義務がないo Open Libertyを同梱した製品
Open Libertyを拡張した製品の販売も⾃由
13
#ccc_c3
製品版とOSS版• Open Libertyo OSS版 / コミュニティ・ベースのサポートo Java EE / MicroProfile などのコア機能は製品と同じものを提供
• WebSphere Libertyo 製品版 / IBMによるサポートo Open Libertyに加えて
• Swaggerや,MongoDB・CouchDB等の追加API• OpenID/OAuthなどのセキュリティ機能• 耐障害性機能・問題判別機能• GUI管理画⾯・Java Batch管理画⾯など
o Liberty Repositoryへのアクセス(個別Featureやサンプルの導⼊)
LibertyND
LibertyBase
LibertyCore
MicroProfile
FullProfileJavaEE7
WebProfileJavaEE7
14
#ccc_c3
14
LibertyとはIBMの新しいJava EEランタイム
15
#ccc_c3
20年ちかく続いてきたWebSphereの歴史
19992000
20012002
2008
1998
2003
WAS V2.0WAS V3.0
WAS V3.5WAS V4.0
WAS V5.0
WAS V5.1
WAS V6.1
20042005
WAS V6.0 2006
WAS V6.1Feature Pack
2007
J2EE 1.2
J2EE 1.3
J2EE 1.4
WAS V72009
2010WAS V7 FP
WAS V8.0
Java EE 6
2011
WAS V8.5WAS V8.5.5
2012
WAS V1.1WAS V1.0
Java EE 5
20132014
20152016WAS V8.5.5.6
WAS V9
Java EE 7
10年以上前の基本設計• モノリシックなSWアーキテクチャー• 専⽤インストーラーでの導⼊必須• ⾃⾝の機能で統合管理も負荷分散も• 外部ツールでの構成・管理は不可
16
#ccc_c3WebSphere Application Server(WAS)の⼆つのランタイム
バージョン 提供される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 完全対応
WebSphere 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
17
#ccc_c3WebSphere Application Server(WAS)の⼆つのランタイム
バージョン 提供される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 完全対応
WebSphere 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
サーバー・カーネルを新規に作成
既存機能を新カーネルに移植
新機能を次々と開発・実装
すでに多くのお客様の商⽤環境で稼働
18
#ccc_c3
WebSphere/Open Libertyの特徴
• 徹底的にモジュール化されており軽量かつ⾼速に動作する
• 構成ファイルが簡潔で可搬性があるため運⽤の⾃動化やツールの使⽤が容易
• 新しい機能が迅速に提供される
19
#ccc_c3
特徴1:Libertyは徹底的にモジュール化されている
Servlet JSP JSF SSL
JAX-RS JSON JPA
JAX-WS JAX-B JDBC JTA
JMS CDI JNDI
EJB lite EJB MDB AutoScale MongoDB
20
#ccc_c3
構成された機能だけが有効に• 機能は「Feature」という
独⽴したモジュールで提供
• 構成したFeatureだけがメモリに読まれて初期化
• 使うFeatureだけのJARがディスク上にあればOK(製品版はLibertyカーネルだけ⼊れて
個別のFeature単位の導⼊も可能)
<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
21
#ccc_c3Libertyで利⽤できるFeature
WebSphere z/OS
WebSphere ND
WebSphere Liberty Core
WebSphere Base
zosConnect-1.2
zosLocalAdapters-1.0zosSecurity-1.0 zosTransaction-1.0 zosWlm-1.0
Java EE 6 subset
couchdb-1.0mongodb-2.0
wsSecurity-1.1
javaee-7.0
batchManagement-1.0rtcomm-1.0 rtcommGateway-1.0
sipServlet-1.0
apiDiscovery-1.0
mediaServerControl-1.0
wsSecuritySaml-1.1 wsAtomicTransaction-1.2
scalingController-1.0scalingMember-1.0 dynamicRouting-1.0
collectiveController-1.0 clusterMember-1.0healthManager-1.0healthAnalyzer-1.0
webProfile-6.0
distributedMap-1.0
openid-2.0
openidConnectServer-1.0openidConnectClient-1.0
osgiAppIntegration-1.0
spnego-1.0
collectiveMember-1.0restConnector-1.0
sessionDatabase-1.0
ldapRegistry-3.0
webCache-1.0javaMail-1.5
osgiConsole-1.0json-1.0
timedOperations-1.0monitor-1.0oauth-2.0
serverStatus-1.0wab-1.0
blueprint-1.0
webProfile-7.0
eventLogging-1.0requestTiming-1.0
adminCenter-1.0concurrent-1.0
bells-1.0samlWeb-2.0
scim-1.0
federatedRegistry-1.0constrainedDelegation-1.0
httpWhiteboard-1.0
osgiBundle-1.0passwordUtilities-1.0
bluemixUtility-1.0logstashCollector-1.0
batch-1.0
concurrent-1.0
appClientSupport-1.0ejbPersistentTimer-1.0
ejbHome-3.2ejbRemote-3.2
ejb-3.2mdb-3.2
j2eeManagement-1.1jacc-1.5jaspic-1.1
jca-1.7
jms-2.0 wmqJmsClient-2.0wasJmsClient-2.0
jaxws-2.2jaxb-2.2appSecurity-2.0
managedBeans-1.0
beanValidation-1.1
websocket-1.1websocket-1.0
jaxrsClient-2.0
cdi-1.2jpa-2.1el-3.0
javaMail-1.5
servlet-3.1jsp-2.3jsf-2.2 ejbLite-3.2
jndi-1.0jdbc-4.1
jsonp-1.0jaxrs-2.0
ssl-1.0
microProfile-1.2
OpenLibertyで提供されているFeature
22
#ccc_c3
継続的デリバリー
• 製品版のWebSphere Libertyは,四半期ごとに新機能を提供
wsSecuritySaml rtcommGateway
8.5.5.8 8.5.5.9 16.0.0.2 16.0.0.3 16.0.0.4 17.0.0.1
WebSphere Application Server V9.0
WebSphere Application Server V8.5.5
・・・ 8.5.5.7
apiDiscoverysamlWeb rtcommbluemixUtility
logstashCollector wsAtomicTransaction
scim
23
#ccc_c3
頻繁に機能更新があるということはしょっちゅうVersion Up対応するの?
「ゼロマイグレーション・ポリシー」があるのでVersion Up対応は不要です
24
#ccc_c3
ゼロマイグレーション・ポリシー
q新しい仕様のバージョンに対応するフィーチャーが追加されても,従来のフィーチャーも継続して提供¦例)現在はServlet 3.1 Featureが提供されていますが,
Servlet 3.0 Featureも引き続き利⽤できます
qアプリケーションで新仕様が必要なければ従来のフィーチャーをそのまま利⽤可能
qデフォルトが変わるなど,構成変更が必要な修正は加えない
新バージョン
新バージョン
⼀般的なアプリケーションサーバー WebSphere Liberty
servlet-3.0
servlet-3.1
servlet-3.0 servlet-3.1
25
#ccc_c3
特徴2:Libertyの構成ファイルは可搬性がある
<server description="new server"><featureManager>
<feature>jsp-2.3</feature><feature>jndi-1.0</feature><feature>jdbc-4.1</feature><feature>localConnector-1.0</feature>
</featureManager>
<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint" />
<webApplication id="SupportTools" location="SupportTools.war" name="SupportTools" /><applicationManager autoExpand="true" /><include location="${shared.config.dir}/persistense.xml" optional="true" />
<library id="db2driver"><fileset dir="${shared.resource.dir}/db2driver" includes="*.jar"></fileset>
</library><dataSource id="employDS" jndiName="jdbc/employDS">
<jdbcDriver libraryRef="db2driver" /><properties.db2.jcc serverName="db2server.example.com" />
</dataSource></server>
26
#ccc_c3
デフォルトベースの簡潔な記述
• server.xmlという⼀つのファイルで構成可能
• 全ての設定項⽬がデフォルトの値を持ち,デフォルトから変更するものだけを記述する構成ファイルに書かれている内容は全てその環境固有の設定内容です
• 相対パスの利⽤や変数の定義や参照が可能で,環境(OS,導⼊ディレクトリ,仮想環境)に依存しない構成が可能
外部ツールでの更新や履歴管理もOK
27
#ccc_c3
どんな設定項⽬があるのかはマニュアルを⾒ないとわからないの?
Knowledge Centerで調べてもいいけど開発者ツールで開くとすぐ分かりますよ
28
#ccc_c3
Eclipse⽤のLiberty開発者ツール
• 開発者ツールで構成ファイルをひらくと,構成可能な項⽬やそのデフォルト値が⼀⽬でわかる
<applicationMonitorupdateTrigger="mbean"/>
<applicationMonitorupdateTrigger="mbean" dropinsEnabled="false"/>
デフォルトで⼊っているチェックを外すと
属性が追加
29
#ccc_c3
構成の編集に開発者ツールが必要なら本番環境にもEclipseを⼊れないといけないの?
⼿で編集してもいいけどImmutable Infrastructureの
考え⽅を採⽤しましょう
30
#ccc_c3
従来のWebSphereの管理は
• 構成情報がコピーできないので・・・
管理コンソール(GUI)
wsadmin(スクリプト) • パラメーター設計書• 運⽤⼿順書• 変更管理台帳 .....
各サーバー環境を直接修正
31
#ccc_c3
Libertyの管理は
• マスターの構成ファイルを各環境にコピーすることが可能
設定ファイル
変更・履歴管理
⾃動配布
Jenkins
LibertyCollective
32
#ccc_c3
Libertyのパッケージ機能
• WAS Liberty実⾏環境+構成+アプリを単⼀ファイルにパッケージ(使うFeatureだけを選択してパッケージすることも)
• 展開するだけで,同じWAS Liberty環境を構築
テスト・本番環境テスト・本番環境
Java SDK
Liberty Profile
サーバー構成アプリ
①インストール
②サーバー構成
③アプリ開発
テスト・本番環境
Java SDK
Liberty Profile
サーバー構成アプリ
ZIP/JARファイル
④パッケージ ⑤展開
ビルド環境
33
#ccc_c3
パッケージでアプリ・設定・Libertyを配布
変更・履歴管理設定
ファイル
アプリケーション
⾃動配布
Jenkins
LibertyCollective
34
#ccc_c3
Immutable Infrastructure
• サーバー環境の構成に問題が⾒つかったときo 稼働している実環境を修正するのではなくo マスター構成や構築に使⽤したレシピや
スクリプトを修正して再デプロイ
⼿作業による再現性のない作業(の繰り返し)
コード実⾏による均質な作業と実⾏結果
• ⼤量のドキュメント• 作業⼿順書の整備
• 短時間で確実なアウトプット
• ⾃動化された履歴管理
35
#ccc_c3
特徴3:Libertyでは新機能が迅速に提供される
36
#ccc_c3
マイクロサービス実装のためのAPIをJava標準として策定
http://microprofile.io/
37
#ccc_c3
MicroProfileプロジェクト
コミュニティによるエンタープライズJava Microserviceの標準化Fault Tolerance Config Healthcheck Metrics Tracing予期しない障害に対処するための
堅牢な動作を実現
ポータビリティを向上させる
構成の外部化
サービスの稼働確認とSLAの達成
実⾏中のサービス間の相互作⽤を管
理
複雑な分散システムでの
問題解決
2017年3QWebSphere Liberty 17.0.0.3MicroProfile 1.1対応
2017年4QWebSphere Liberty 17.0.0.4MicroProfile 1.2対応予定
MicroProfile1.0
JAX-RSCDI
JSON-PEclipseMicroProfile
MovetoFoundation MicroProfile1.1 MicroProfile1.2ConfigAPI
FaultToleranceOpenIDConnect/JWTHealthcheck/healthMonitoring/metrics Communitydrivenpriorities
38
#ccc_c3
Java EE 8
9⽉の時点でBeta版を公開
https://developer.ibm.com/wasdev/blog/2017/09/29/microprofile-metrics-sept-2017-beta/
39
#ccc_c3
39
IBMのOSS戦略公開と利⽤
40
#ccc_c3
2016年 IBM JavaのOSS化発表
http://www.publickey1.jp/blog/16/ibmjavavmcobolplijavavmjava_9javaone_2016.html
41
#ccc_c3
https://adoptopenjdk.net/?variant=openjdk9-openj9
42
#ccc_c3
Open JDKJava Class Library
HotSpot VM
Oracle JDKJava Class Library
HotSpot VM
IBM SDK for JavaJava Class Library
IBM J9
OMR
EclipseOMR
OSS
OSS
Open JDKJava Class Library
OpenJ9
OMR
+ IBM Java Class Library
OSS
Java 9以降のIBM Java
43
#ccc_c3
Istio:マイクロサービスの接続と管理
• トラフィックに対する⾃動的なロードバランス
• 豊富なルーティングルールによる適切な粒度のトラフィックコントロール
• トラフィックの暗号化、サービス同⼠の認証および強⼒な⾝分確認
• 対象全体のポリシー適⽤• 細部にわたる
測定とレポーティングhttps://istio.io/
44
#ccc_c3
IBMの取り組み
• オープンスタンダード、オープンイノベーション、オープンソースに対するコミットメントの実践
45
#ccc_c3
パブリッククラウド
企業システム
開発⾃動化
IBM Cloud Private
IBMZ Terraform
IBM Cloud PrivateIBM製品とOSSを組み合わせ,オープンスタンダードなハイブリッドクラウドの構築と管理を⾏う環境をIBMのサポートつきで提供
46
#ccc_c3
なんでOpen LibertyのロゴはUFOなの?
IBMっぽくないでしょ?LibertyをIBMだけのものに
したくないからです
47
#ccc_c3
Eclipseの成功体験
• 2001年にIBMの開発製品をOSSとして公開
• プラグインによる⾃由な拡張が可能
• 多くの開発者による拡張・更新がおこなわれJava開発環境のなかでも⼀定の地位を保持し続けている
• IBMでもEclipseの技術を⽤いた多くの商⽤製品を販売
48
#ccc_c3
Open Libertyの開発と拡張
• 外部からのコントリビュートも⼤歓迎ですo ただし,ゼロマイグレーション・ポリシーなどを守るため
現在はIBMによるレビュープロセスがあります
• Featureを⾃作することも簡単ですo Feature開発者向けの
多くのSPI(Service Provider Interface)がありますo WebアプリケーションをFeatureとして組むこともできますo server.xmlや開発者ツールで構成もできます
49
#ccc_c3
まとめ
• 重い• 導⼊とか構成とかが⼤変• お値段が⾼い• そもそも使ったことがないぜひ使ってみてください!!!
50
#ccc_c3
リンク集
• Open Liberty Projecthttps://openliberty.io/
• Open Liberty Groups(ML)https://groups.io/g/openliberty
• Stack Overflow Open Liberty taghttps://stackoverflow.com/questions/tagged/open-liberty
• WebSphere Liberty ⽇本語技術⽂章https://www.ibm.com/developerworks/jp/websphere/category/liberty/
51
#ccc_c3
51
Thank You!
52
#ccc_c3
Open Libertyで提供されているFeature
MicroProfile WebProfile 7 Java EE7 JavaEE8(WIP) non-API
cdi-1.2 servlet-3.0 jaxws-2.2 servlet-4.0 restConnector-2.0
jsonp-1.0 beanValidation-1.1 jms-2.0 jaxrs-2.1 passwordUtilities-1.0
jaxrs-2.0 cdi-1.2 jca-1.7 jsonb-1.0 federatedRepository-1.0
mpConfig-1.0 jpa-2.1 jaspic-1.1 jsonp-1.1 ldapRegistry-3.0
mpFaultTolerance-1.0 el-3.0 jacc-1.5 javaMail-1.6 monitor-1.0
mpHealth-1.0 jaxrs-2.0 concurrent-1.0 jsf-2.3 bells-1.0
mpMetrics-1.0 managedBeans-1.0 ejb-3.2 appSecurity-2.0
mpJwt-1.0 websocket-1.1 batch-1.0 transportSecurity-1.0
jsonp-1.0 j2eeManagement-1.1
servlet-3.1 javaMail-1.5
jsp-2.3
jsf-2.2
ejbLite-3.2