はじめに
架空の医療会社のExample HealthのOpenShiftによるJava EEアプリケーションのモダナイゼーションの3回目の投稿です。
これまでの2回の投稿で私たちはExample HealthのOpenShiftによるJava EEアプリケーションのモダナイゼーションに成功しました。
-
OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた。
ビジネスロジック用のOpen Libertyで実行されているJava EEアプリケーションをMiniShiftに移行 -
OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた(2)
患者用UI(ユーザーインターフェイス)のモダナイゼーション
これからは、その後の話になります。OpenShiftに移行した結果、Example Healthは容易に機能拡張できるようになりました。 その後、Example Healthはシステムを拡大して新しいサービスを追加していきます。その1つが健康記録管理者用のPHPアプリケーションのCode Patternsです。
「[ PHP、Source-to-Image ツールキット、OpenShift によるアプリケーションのモダナイズ - Kubernetes ベースのマイクロサービスで健康記録管理者用アプリを変換する]
(https://developer.ibm.com/jp/patterns/app-modernization-php-s2i-openshift/)」
健康記録管理者用のPHPアプリケーションの作成
早速、健康記録管理者用アプリケーションを作り始めましょう。コードパターンの手順はGUI操作ですが、CLI操作でGUIと同じ手順を再現してみましょう。
(前提)ビジネスロジック用のOpen Libertyで実行されているJava EEアプリケーションがMiniShiftで起動していること
手順
1.まず、コードパターンのGitHubのリポジトリ「IBM/php-s2i-openshift」で「Fork」ボタンをクリックして自分のGitHubのリポジトリにフォークします。
2.2回目の記事で作成したhealthプロジェクトに移動します。
$ oc project health
3.ビジネスロジック用のJava EEアプリケーションを接続するホスト名を取得します。
健康記録管理者用の PHP アプリケーションからAPI接続するのに使用します。
$ oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
example-health-api example-health-api-health.192.168.42.218.nip.io example-health-api http None
SERVICESがexample-health-api の HOST/PORTが該当します。
この場合はのHOST/PORTの「example-health-api-health.192.168.42.218.nip.io 」になります。
4.OpenShiftのS2I(Source to Image)を使って健康記録管理者用の PHP アプリケーションをビルド・デプロイします。
$ oc new-app openshift/php:7.1~https://github.com/daihiraoka/php-s2i-openshift.git \
--context-dir="/src" --name="patient-admin" \
-e apiBaseUrl="http://example-health-api-health.192.168.42.218.nip.io"
openshift/php:7.1はベースとなるコンテナイメージ、~(チルダ)で挟んで右側が、ソースコードリポジトリ、
--nameは生成するアプリケーションの名前、--context-dirはソースコードリポジトリのサブディレクトリを指定しています。
-e は 環境変数を定義します。ここではビジネスロジック用のJava EEアプリケーションにAPI接続するための変数apiBaseUrlに、前の手順で取得したJava EEアプリケーションのホスト名を設定します。
実行結果は以下のように出力されます。
--> Found image 5ce27de (5 weeks old) in image stream "openshift/php" under tag "7.1" for "openshift/php:7.1"
Apache 2.4 with PHP 7.1
-----------------------
PHP 7.1 available as container is a base platform for building and running various PHP 7.1 applications and frameworks. PHP is an HTML-embedded scripting language. PHP attempts to make it easy for developers to write dynamically generated web pages. PHP also offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled webpage with PHP is fairly simple. The most common use of PHP coding is probably as a replacement for CGI scripts.
Tags: builder, php, php71, rh-php71
* A source build using source code from https://github.com/daihiraoka/php-s2i-openshift.git will be created
* The resulting image will be pushed to image stream tag "patient-admin:latest"
* Use 'start-build' to trigger a new build
* This image will be deployed in deployment config "patient-admin"
* Ports 8080/tcp, 8443/tcp will be load balanced by service "patient-admin"
* Other containers can access this service through the hostname "patient-admin"
--> Creating resources ...
imagestream.image.openshift.io "patient-admin" created
buildconfig.build.openshift.io "patient-admin" created
deploymentconfig.apps.openshift.io "patient-admin" created
service "patient-admin" created
--> Success
Build scheduled, use 'oc logs -f bc/patient-admin' to track its progress.
Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
'oc expose svc/patient-admin'
Run 'oc status' to view your app.
4.しばらくするとpatient-admin-1-<英数字>のSTATUSがRunningに変わります。
$ oc get pod
NAME READY STATUS RESTARTS AGE
example-health-api-7fcb786fb6-gnlff 1/1 Running 0 2d
patient-admin-1-build 0/1 Completed 0 1m
patient-admin-1-ddjft 1/1 Running 0 41s
5.健康記録管理者用アプリケーションをインターネットに公開するためのRouteを作成します。
$ oc expose svc/patient-admin
route.route.openshift.io/patient-admin exposed
$ oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
example-health-api example-health-api-health.192.168.42.218.nip.io example-health-api http None
patient-admin patient-admin-health.192.168.42.218.nip.io patient-admin 8080-tcp None
6.ブラウザーで健康記録管理者用アプリケーションに接続すると以下のようなページが表示されます。
この管理画面では、Example Health のすべての患者のリストを表示して、以下の患者データの統計内訳を確認できます。
- 年齢
- 性別
- 使用された上位3つの薬
- 糖尿病の有病率
- 喘息の有病率
これで健康記録管理者用アプリケーションとビジネスロジック用のJava EEアプリケーションの結合ができました。
今後の展開
この後も、Example Healthはシステムを拡大して新しいサービスを追加していきます。
順風満帆なExample Healthですが、その後の話は、次の投稿「OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた(4)」に続きます。
この投稿を書いたきっかけ
IBM CloudのOpenShiftのマネージドサービスである「 Red Hat OpenShift on IBM Cloud 」を使った「OpenShiftによるJava EEアプリケーションのモダナイゼーション」の記事がベースになってます。
https://www.atmarkit.co.jp/ait/articles/1911/15/news002.html
その記事で使用している「 Red Hat OpenShift on IBM Cloud 」は有料サービスのため、たくさんの人に記事の手順を試してもらうのは難しいと思います。 そこで、無料で利用できるMiniShiftを使って、気軽にOpenShiftでJava EEアプリケーションのモダナイゼーションを体感してもらえるように、リライトしました。
今回の投稿は、3回目で、記事にはない、その後の展開の1つのお話になります。