Cloud Paksではなくなったけれど：WebSphere Hybrid Editionとコンテナ

# CP4AppsからWebSphere Hybrid Editionへ

2020年まで販売されていたCloud Pak for Appplications（CP4Apps）は，Red Hat OpenShift Container Platform（OCP）と，その上で動くWebSphere Application Server（WAS）や開発環境をパッケージした製品でした。またコンテナ外の既存環境で実行されるWASのライセンスや，コンテナ外からコンテナ上のWASへアプリケーションを移行するためのモダナイズ・ツールなどもカバーしていました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60041/94569228-f916-d393-1846-eabef7cfd71e.png)


今年からは，OpenShift上でWASをご利用いただくお客様は，Red Hat社からOCPを，IBMからWASのライセンスを，それぞれ個別に購入いただくように販売方法が変更になりました。そしてWASのライセンスも，CP4Appsと同様な柔軟な適用，コンテナ内外で自由に使っていただくことができるWebSphere Hybrid Editionという新しいライセンスが登場しました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60041/7243c3da-8877-be32-36a1-ada5308814af.png)


このように製品名は変わったのは，海外のお客様を中心に，OCPのサポートはIBM経由ではなくRed Hatから直接受けたいという要望があったり，OCPの価格体系が変更になり，分割して購入したほうが安価になるケースなどが出てきたためです。販売方法が変わっただけで，これまで提供されていた機能はほとんどそのまま提供さて続けています。IBMが開発していたコンテナ上の開発環境であるKabanero/Accelerator for Teamsは，[odo](https://odo.dev/)の機能の一部として取り込まれ，OCPの標準機能として提供されるようになります。また，アプリケーションの移行ツールも，WebSphere Hybrid Editionの製品の一部としてサポートが続きます。

IBMでは，引き続き[WebSphere Liberty](https://www.ibm.com/jp-ja/cloud/websphere-liberty)を，コンテナ上でJavaアプリケーションを実行するためには最適なランタイムであると自信を持っておすすめをしています。そして，WebSphere Hybrid EditionをCloud Pakソリューションの中心コンポーネントの一つとして位置づけています。

# コンテナ環境でのWebSphereのランタイム

WebSphere Application Serverには，[WebSphere traditionalとWebSphere Libertyの二つのランタイム](https://qiita.com/TTakakiyo/items/35c59037a09639437066)が存在します。どちらもコンテナ上での使用は可能ですが，基本的にはWebSphere Libertyをコンテナ上では使用します。

WebSphere Libertyは，コンテナ環境などモダンな環境での使用に最適なJavaランタイムです。軽量で高速に起動するため，コンテナのメリットを最大限に活かすことが出来ます。また，外部ツールとの親和性やDevOpsのやりやすさなどもあり，CD/CI環境と組み合わせてモダンな開発・運用環境をコンテナ上に構築することができます。Jakarta EEやMicroProfileなどの新しいAPIにも業界最速で追随しており，最新の技術を活用したアプリケーションを構築できます。その一方で，[ゼロマイグレーション・アーキテクチャー](https://www.ibm.com/docs/ja/was-liberty/base?topic=overview-liberty-zero-migration-architecture)により，従来のAPIを使用したアプリケーションを，修正することなく，そのまま最新バージョンのLibetyで動かすことも出来ます。

WebSphere traditionalをつかう理由は，従来の運用を継続したい場合や，Libertyでは稼働しない古いAPIを使用したアプリケーションを実行したい場合です。しかし，コンテナ上でのWebSphere traditionalは，従来の管理コンソールなどを使用した管理をおこなうことはできません。コンテナ環境用のwsadminスクリプトを作成して，コンテナイメージをビルドして使用します（詳細は[こちら](https://github.com/WASdev/ci.docker.websphere-traditional/)をごらんください）。また，Deployment Managerを使用した統合管理などもできないため，WebSphere traditionalを使用するメリットのほとんどが失われます。JAX-RPCなど，WebSphere Libertyで稼働しないAPIを使用したプログラムを，どうしてもコンテナで動かす必要がある場合のみ使用するようにしてください。

OpenShiftのコンテナ上でWebSphere Libertyを使用する場合の日本語ドキュメントは，[こちらから参照](https://community.ibm.com/community/user/wasdevops/viewdocument/websphere-liberty-onopenshift-cont-1?CommunityKey=d6c93aa2-6e10-48da-96dc-3831da8ee185)できます。

# コンテナ環境でのWebSphereのライセンス

コンテナ上でWASを使用する際には，仮想化に対応した[IBM Container licenses](https://www.ibm.com/software/passportadvantage/containerlicenses.html)が利用できます。これは，実際にコンテナに割りあてられたCore数を計測し，そのCore数の実行に必要な分だけのライセンスをあらかじめお支払いいただく方式です。コンテナ環境でWAS以外のプログラムが実行されていても，コンテナ環境の全てのノードのCore数ではなく，そのうちWASで使用する分だけの負担で利用できるのです。もちろん，ノードのCore数を超えるWASのコンテナを実行しても，ノードを超えることはありません。

このIBM Container licensesを使用するためには，実行するKubernetes環境ないしはOpenShift環境に，[IBM License Service](https://www.ibm.com/docs/en/cpfs?topic=license-service)を導入する必要があります。OCP環境であれば，ソフトウェアカタログから選択するだけで導入することが出来ます。Kubernetes環境の場合は，License Serviceを手動で導入する必要があります。導入の手順については，[こちらの日本語ドキュメント](https://community.ibm.com/community/user/wasdevops/viewdocument/license-service-on-kubernetes?CommunityKey=d6c93aa2-6e10-48da-96dc-3831da8ee185&tab=librarydocuments)を参照ください。

IBMでは，このIBM License Serviceが稼働することを確認したパブリッククラウド環境を[Eligible Public Cloud](https://www.ibm.com/software/passportadvantage/eligible_public_cloud_BYOSL_policy.html)として公開しています。こちらのリストに含まれている環境であれば，通常どうり購入いただいたライセンスを，クラウドのコンテナ環境にそのまま持ち込んで使用していただくことが出来ます。

# まとめ

お客様が作成した業務アプリケーションを，コンテナ上で実行することには多くのメリットがあります。IBMでは，多くのお客様が業務アプリケーションを実装するのに使用されているJava EEやMicroProfileを，コンテナ上でも活用するのに最適なランタイムとして，Libertyを提供していきます。IBMの他のCloud Paksソリューションと合わせて，ぜひご活用ください。