52
1 #ccc_c3 オープンソースになった WebSphere Liberty

Open Liberty: オープンソースになったWebSphere Liberty

Embed Size (px)

Citation preview

Page 1: Open Liberty: オープンソースになったWebSphere Liberty

1

#ccc_c3

オープンソースになったWebSphere Liberty

Page 2: Open Liberty: オープンソースになったWebSphere Liberty

2

#ccc_c3

⾃⼰紹介

⽥中 孝清• 1998年より⽇本IBM

(WebSphere Version 1.0が出た年)

• WebSphereのTechnical Sales(会社⼈⽣ = WebSphereの歴史)

• JJUGの幹事をやっています

• 家族:妻・⼦供⼆⼈, 趣味:登⼭

Page 3: Open Liberty: オープンソースになったWebSphere Liberty

3

#ccc_c3

3

OSSになったWebSphereOpen Liberty:An IBM Open Source Project

Page 4: Open Liberty: オープンソースになったWebSphere Liberty

4

#ccc_c3

WebSphereのイメージ?

•重い•導⼊とか構成とかが⼤変•お値段が⾼い•そもそも使ったことがない

Page 5: Open Liberty: オープンソースになったWebSphere Liberty

5

#ccc_c3

Demo

1 Minuteinstall & deploy

Get started fast

• サーバーの導⼊

• サーバー構成の作成

• サーバーの起動

• アプリケーションの導⼊

の⼀連の作業が,1分で可能

Page 6: Open Liberty: オープンソースになったWebSphere Liberty
Page 7: Open Liberty: オープンソースになったWebSphere Liberty

7

#ccc_c3

無料でダウンロードhttps://openliberty.io

Page 8: Open Liberty: オープンソースになったWebSphere Liberty

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.

Page 9: Open Liberty: オープンソースになったWebSphere Liberty

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

$

Page 10: Open Liberty: オープンソースになったWebSphere Liberty

10

#ccc_c3

Pull Req.もバンバンきてますhttps://github.com/OpenLiberty/open-liberty/pulls

Page 11: Open Liberty: オープンソースになったWebSphere Liberty

11

#ccc_c3

本当にWebSphereがオープンソースになっています

https://developer.ibm.com/wasdev/blog/2017/09/19/liberty-open-source/

Page 12: Open Liberty: オープンソースになったWebSphere Liberty

12

#ccc_c3

しかも Eclipse Public License

• 商⽤利⽤もしやすいEPL 1.0で公開o いわゆる「Permissiveなライセンス」o 派⽣物をOSSにする義務がないo Open Libertyを同梱した製品

Open Libertyを拡張した製品の販売も⾃由

Page 13: Open Liberty: オープンソースになったWebSphere 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

Page 14: Open Liberty: オープンソースになったWebSphere Liberty

14

#ccc_c3

14

LibertyとはIBMの新しいJava EEランタイム

Page 15: Open Liberty: オープンソースになったWebSphere Liberty

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アーキテクチャー• 専⽤インストーラーでの導⼊必須• ⾃⾝の機能で統合管理も負荷分散も• 外部ツールでの構成・管理は不可

Page 16: Open Liberty: オープンソースになったWebSphere Liberty

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

Page 17: Open Liberty: オープンソースになったWebSphere Liberty

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

サーバー・カーネルを新規に作成

既存機能を新カーネルに移植

新機能を次々と開発・実装

すでに多くのお客様の商⽤環境で稼働

Page 18: Open Liberty: オープンソースになったWebSphere Liberty

18

#ccc_c3

WebSphere/Open Libertyの特徴

• 徹底的にモジュール化されており軽量かつ⾼速に動作する

• 構成ファイルが簡潔で可搬性があるため運⽤の⾃動化やツールの使⽤が容易

• 新しい機能が迅速に提供される

Page 19: Open Liberty: オープンソースになったWebSphere 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

Page 20: Open Liberty: オープンソースになったWebSphere Liberty

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

Page 21: Open Liberty: オープンソースになったWebSphere Liberty

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

Page 22: Open Liberty: オープンソースになったWebSphere Liberty

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

Page 23: Open Liberty: オープンソースになったWebSphere Liberty

23

#ccc_c3

頻繁に機能更新があるということはしょっちゅうVersion Up対応するの?

「ゼロマイグレーション・ポリシー」があるのでVersion Up対応は不要です

Page 24: Open Liberty: オープンソースになったWebSphere Liberty

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

Page 25: Open Liberty: オープンソースになったWebSphere Liberty

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>

Page 26: Open Liberty: オープンソースになったWebSphere Liberty

26

#ccc_c3

デフォルトベースの簡潔な記述

• server.xmlという⼀つのファイルで構成可能

• 全ての設定項⽬がデフォルトの値を持ち,デフォルトから変更するものだけを記述する構成ファイルに書かれている内容は全てその環境固有の設定内容です

• 相対パスの利⽤や変数の定義や参照が可能で,環境(OS,導⼊ディレクトリ,仮想環境)に依存しない構成が可能

外部ツールでの更新や履歴管理もOK

Page 27: Open Liberty: オープンソースになったWebSphere Liberty

27

#ccc_c3

どんな設定項⽬があるのかはマニュアルを⾒ないとわからないの?

Knowledge Centerで調べてもいいけど開発者ツールで開くとすぐ分かりますよ

Page 28: Open Liberty: オープンソースになったWebSphere Liberty

28

#ccc_c3

Eclipse⽤のLiberty開発者ツール

• 開発者ツールで構成ファイルをひらくと,構成可能な項⽬やそのデフォルト値が⼀⽬でわかる

<applicationMonitorupdateTrigger="mbean"/>

<applicationMonitorupdateTrigger="mbean" dropinsEnabled="false"/>

デフォルトで⼊っているチェックを外すと

属性が追加

Page 29: Open Liberty: オープンソースになったWebSphere Liberty

29

#ccc_c3

構成の編集に開発者ツールが必要なら本番環境にもEclipseを⼊れないといけないの?

⼿で編集してもいいけどImmutable Infrastructureの

考え⽅を採⽤しましょう

Page 30: Open Liberty: オープンソースになったWebSphere Liberty

30

#ccc_c3

従来のWebSphereの管理は

• 構成情報がコピーできないので・・・

管理コンソール(GUI)

wsadmin(スクリプト) • パラメーター設計書• 運⽤⼿順書• 変更管理台帳 .....

各サーバー環境を直接修正

Page 31: Open Liberty: オープンソースになったWebSphere Liberty

31

#ccc_c3

Libertyの管理は

• マスターの構成ファイルを各環境にコピーすることが可能

設定ファイル

変更・履歴管理

⾃動配布

Jenkins

LibertyCollective

Page 32: Open Liberty: オープンソースになったWebSphere Liberty

32

#ccc_c3

Libertyのパッケージ機能

• WAS Liberty実⾏環境+構成+アプリを単⼀ファイルにパッケージ(使うFeatureだけを選択してパッケージすることも)

• 展開するだけで,同じWAS Liberty環境を構築

テスト・本番環境テスト・本番環境

Java SDK

Liberty Profile

サーバー構成アプリ

①インストール

②サーバー構成

③アプリ開発

テスト・本番環境

Java SDK

Liberty Profile

サーバー構成アプリ

ZIP/JARファイル

④パッケージ ⑤展開

ビルド環境

Page 33: Open Liberty: オープンソースになったWebSphere Liberty

33

#ccc_c3

パッケージでアプリ・設定・Libertyを配布

変更・履歴管理設定

ファイル

アプリケーション

⾃動配布

Jenkins

LibertyCollective

Page 34: Open Liberty: オープンソースになったWebSphere Liberty

34

#ccc_c3

Immutable Infrastructure

• サーバー環境の構成に問題が⾒つかったときo 稼働している実環境を修正するのではなくo マスター構成や構築に使⽤したレシピや

スクリプトを修正して再デプロイ

⼿作業による再現性のない作業(の繰り返し)

コード実⾏による均質な作業と実⾏結果

• ⼤量のドキュメント• 作業⼿順書の整備

• 短時間で確実なアウトプット

• ⾃動化された履歴管理

Page 35: Open Liberty: オープンソースになったWebSphere Liberty

35

#ccc_c3

特徴3:Libertyでは新機能が迅速に提供される

Page 36: Open Liberty: オープンソースになったWebSphere Liberty

36

#ccc_c3

マイクロサービス実装のためのAPIをJava標準として策定

http://microprofile.io/

Page 37: Open Liberty: オープンソースになったWebSphere Liberty

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

Page 38: Open Liberty: オープンソースになったWebSphere Liberty

38

#ccc_c3

Java EE 8

9⽉の時点でBeta版を公開

https://developer.ibm.com/wasdev/blog/2017/09/29/microprofile-metrics-sept-2017-beta/

Page 39: Open Liberty: オープンソースになったWebSphere Liberty

39

#ccc_c3

39

IBMのOSS戦略公開と利⽤

Page 40: Open Liberty: オープンソースになったWebSphere Liberty

40

#ccc_c3

2016年 IBM JavaのOSS化発表

http://www.publickey1.jp/blog/16/ibmjavavmcobolplijavavmjava_9javaone_2016.html

Page 41: Open Liberty: オープンソースになったWebSphere Liberty

41

#ccc_c3

https://adoptopenjdk.net/?variant=openjdk9-openj9

Page 42: Open Liberty: オープンソースになったWebSphere Liberty

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

Page 43: Open Liberty: オープンソースになったWebSphere Liberty

43

#ccc_c3

Istio:マイクロサービスの接続と管理

• トラフィックに対する⾃動的なロードバランス

• 豊富なルーティングルールによる適切な粒度のトラフィックコントロール

• トラフィックの暗号化、サービス同⼠の認証および強⼒な⾝分確認

• 対象全体のポリシー適⽤• 細部にわたる

測定とレポーティングhttps://istio.io/

Page 44: Open Liberty: オープンソースになったWebSphere Liberty

44

#ccc_c3

IBMの取り組み

• オープンスタンダード、オープンイノベーション、オープンソースに対するコミットメントの実践

Page 45: Open Liberty: オープンソースになったWebSphere Liberty

45

#ccc_c3

パブリッククラウド

企業システム

開発⾃動化

IBM Cloud Private

IBMZ Terraform

IBM Cloud PrivateIBM製品とOSSを組み合わせ,オープンスタンダードなハイブリッドクラウドの構築と管理を⾏う環境をIBMのサポートつきで提供

Page 46: Open Liberty: オープンソースになったWebSphere Liberty

46

#ccc_c3

なんでOpen LibertyのロゴはUFOなの?

IBMっぽくないでしょ?LibertyをIBMだけのものに

したくないからです

Page 47: Open Liberty: オープンソースになったWebSphere Liberty

47

#ccc_c3

Eclipseの成功体験

• 2001年にIBMの開発製品をOSSとして公開

• プラグインによる⾃由な拡張が可能

• 多くの開発者による拡張・更新がおこなわれJava開発環境のなかでも⼀定の地位を保持し続けている

• IBMでもEclipseの技術を⽤いた多くの商⽤製品を販売

Page 48: Open Liberty: オープンソースになったWebSphere Liberty

48

#ccc_c3

Open Libertyの開発と拡張

• 外部からのコントリビュートも⼤歓迎ですo ただし,ゼロマイグレーション・ポリシーなどを守るため

現在はIBMによるレビュープロセスがあります

• Featureを⾃作することも簡単ですo Feature開発者向けの

多くのSPI(Service Provider Interface)がありますo WebアプリケーションをFeatureとして組むこともできますo server.xmlや開発者ツールで構成もできます

Page 49: Open Liberty: オープンソースになったWebSphere Liberty

49

#ccc_c3

まとめ

• 重い• 導⼊とか構成とかが⼤変• お値段が⾼い• そもそも使ったことがないぜひ使ってみてください!!!

Page 50: Open Liberty: オープンソースになったWebSphere Liberty

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/

Page 51: Open Liberty: オープンソースになったWebSphere Liberty

51

#ccc_c3

51

Thank You!

Page 52: Open Liberty: オープンソースになったWebSphere Liberty

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