Red Hat OpenShift Platform 4 ハンズオンワークショップ紹介 〜Dev Module1:既存アプリケーションの最適化〜

Red Hatのソリューションアーキテクトの井上たかひろです。

Red Hat では「 Container and Cloud Native Roadshow 」というイベントを四半期単位で開催しています。

Red Hat OpenShift 4のハンズオンワークショップを通して、コンテナを利用したクラウドネイティブなアプリケーションの開発やインフラストラクチャの運用管理に関する基礎知識やプラクティスを学ぶイベントです。

内容は開発者向けトラックと運用管理者向けトラックに分かれており、今回は開発者者向けトラックについてご紹介いたします。

運用管理者向けトラックについては、下記の記事をご参照ください。

Red Hat OpenShift Platform 4 ハンズオンワークショップ紹介 〜Ops基礎編〜 - 赤帽エンジニアブログ

Red Hat OpenShift Platform 4 ハンズオンワークショップ紹介 〜オプション編〜 - 赤帽エンジニアブログ

Red Hat OpenShift Platform 4 ハンズオンワークショップ紹介 〜オプション編〜 - 赤帽エンジニアブログ

開発者者向けトラックのポイント

  • 参加者はブラウザが使える環境のみでOK!!(WebブラウザベースのIDE CodeReady Workspacesで実施)
  • ガイドに従って自分のペースで実施
  • オンライン・ワークショップ(お家からのご参加も可能です)
  • Etherpadなどの共有ツールでインストラクターと質疑応答可能

ラボの環境は以下のようになります。(左側がガイド、右側がCodeReady Workspaces) f:id:tinoue0219:20210618214444p:plain

開発者向けトラックは、以下の4つのモジュールで構成されており、好きなものから始めることができます。

Module1:既存アプリケーションの最適化

Red Hat Application Migration Toolkit を使用して、とあるJ2EEサーバのアプリをJBossに移行し、モノリスからマイクロサービスにします。

使うソフトウェア:Red Hat Application Migration Toolkit, JBoss Enterprise Application Server, Red Hat Runtimes(Spring Boot, Node.js, Quarkus)など

Module2:デバッグ、モニタリング、継続的デリバリー

CodeReady Workspacesを使用したJavaアプリのデバッグやアプリのパフォーマンスモニタリング、Jenkinsを使用したCI/CDパイプラインの作成

使うソフトウェア:Jenkins, Prometheus, Grafanaなど

Module3:サービスメッシュによるアプリの制御とセキュリティ

OpenShift Service Mesh(istio)にアプリをデプロイして可視化したり、A/Bテスト、サーキットブレーキングや分散トレースの実践、Service MeshとSSOを統合します。

使うソフトウェア:Service Mesh(istio), Kiali, Jaeger, Prometheus, Grafana, Red Hat Single -Sign on(Keycloak)など

Module4:イベント駆動型サーバーレス編

アプリをイベント駆動型アーキテクチャに移行します。また、分散キャッシュ(Data Grid)や
サーバーレス(Knative)も使います。

使うソフトウェア:Red Hat AMQ Streams(Apache Kafka ),Red Hat Runtimes(Quarkus, Spring BootNode.js), Red Hat Data Grid, Knative, Tektonなど

Module1:既存アプリケーションの最適化のざっくり紹介

ハンズオンで実施する項目

  • Red Hat Application Migration Toolkit を使用して、他のJ2EEサーバのアプリをJBossに移行します。
  • JBossに移行したアプリをOpenShiftにデプロイします。
  • モノリス(JBossに移行したアプリ)を分解してQuarkusとSpring Bootを使用してマイクロサービスに分割し、Cloud Nativeアプリケーションにします。

Red Hat Application Migration Toolkit を使用して、J2EEサーバのアプリをJBossに移行

Migration Toolkit for Applications (MTA) は、拡張可能でカスタマイズ可能なルールベースのツールで、Java アプリケーションの移行を簡素化します。

MTAはハンズオンで使うCodeReady Workspacesに組み込まれています。 それを使って、他のJ2EEサーバのアプリをMTAの分析します。 操作イメージは、以下になります。

f:id:tinoue0219:20210618204415p:plain:w600

分析が終わると以下のようなレポートが出力されます。ここでは22箇所でJavaのソースファイルや定義ファイルで修正が必要と出ています。

f:id:tinoue0219:20210618204733p:plain:w600

ダッシュボードでの確認や問題箇所の詳細も見れます。

f:id:tinoue0219:20210618204829p:plain:w600

ガイドを見ながら、JBoss(標準のJ2EE)にアプリを修正していきます。
MTAは、適宜レポートを出すことで、移行の進捗具合がわかるのもいいところです。

JBossに移行したアプリをOpenShiftにデプロイ

アプリの修正が終わったら、OpenShift上でデプロイします。
JBossやPostgreSQLのインストールはテンプレートからサクッと出来ます。
下図は、テンプレートを選択している画面になります。

f:id:tinoue0219:20210618205103p:plain:w600

ガイドを見ながら、postgresqlとの接続やアプリのデプロイを行っていきます。
下図は、OpenShift上にデプロイした直後の状態です。デプロイの状態などがOpenShift上で見ながらできるので楽しいです。 f:id:tinoue0219:20210618205158p:plain:w600

アプリをWebブラウザで見るとこんな感じです。
ここまできて、ショッピングアプリをイジっていたのがわかります。 f:id:tinoue0219:20210618205343p:plain:w600

モノリス(JBossに移行したアプリ)を分解してQuarkusとSpring Bootを使用してマイクロサービスに分割

Quarkusを使って、在庫アプリを追加します。
下図の左側がJBossアプリで、右下がQuarkusで作る在庫アプリです。

f:id:tinoue0219:20210618210641p:plain:w600

ガイドを見ながら、DB含めて作っていきます。
何気にMicroProfile Healthを使って、ヘルスチェック機能も入れて、障害を発生させたりもやります。
ヘルスチェックのプローブで一定回数失敗した場合、OpenShift がポッドとコンテナを入れ替えて復旧してくれます。
下図は、障害を発生させた状態です。

f:id:tinoue0219:20210618211331p:plain:w600

次に、Spring Bootを使って、カタログアプリを追加します。
なお、Spring Bootは、Red Hat Runtimesに含まれています。
下図の右上がSpring Bootで作るカタログアプリです。

f:id:tinoue0219:20210618211800p:plain:w600

これまたガイドを見ながら、DB含めて作っていきます。
Quarkus(在庫アプリ)-> Spring Boot(カタログアプリ)間でのオリジン間リソース共有 (CORS) ベースも作ります。
最後はできあがった、アプリを色々叩いてみます。


手順の類はだいぶ端折っているので、短く感じるかもしれませんが、実際にハンズオンを行うとそこそこのボリュームです。
ガイドに従って進めればプロジェクト作成、ビルド&デプロイなどの一連の流れとOpenShiftでのアプリ開発を体験・理解ができると思います。
ワークショップにご興味があればご連絡ください。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。