LoginSignup
1
1

More than 3 years have passed since last update.

OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた(3)

Last updated at Posted at 2019-11-22

はじめに

架空の医療会社のExample HealthのOpenShiftによるJava EEアプリケーションのモダナイゼーションの3回目の投稿です。

これまでの2回の投稿で私たちはExample HealthのOpenShiftによるJava EEアプリケーションのモダナイゼーションに成功しました。

これからは、その後の話になります。OpenShiftに移行した結果、Example Healthは容易に機能拡張できるようになりました。 その後、Example Healthはシステムを拡大して新しいサービスを追加していきます。その1つが健康記録管理者用のPHPアプリケーションのCode Patternsです。

PHP、Source-to-Image ツールキット、OpenShift によるアプリケーションのモダナイズ - Kubernetes ベースのマイクロサービスで健康記録管理者用アプリを変換する

健康記録管理者用の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.ブラウザーで健康記録管理者用アプリケーションに接続すると以下のようなページが表示されます。

04-ui-1.png

この管理画面では、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つのお話になります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1