Red Hatのソリューションアーキテクトの井上たかひろです。
「Module1:既存アプリケーションの最適化」に続いて「Module2:デバッグ、モニタリング、継続的デリバリー」についてざっくり紹介いたします。
Module2では、OpenShift上でCodeReady Workspacesを使用したJavaアプリのデバッグやアプリのパフォーマンスモニタリング、 Jenkinsを使用したCI/CDパイプラインの作成を行います。
使うソフトウェア:JBoss, Jenkins, Prometheus, Grafanaなど
Module2:デバッグ、モニタリング、継続的デリバリー
ハンズオンで実施する項目
- Jenkinsを使用してCI/CDパイプラインを作成し、マイクロサービスアプリケーションへのアップデートのデプロイを自動化
- CodeReady Workspacesを使用したJavaアプリのデバッグ(ライブコーディング)
- Jaegarm, Prometheus, Grafanaなどを使用してアプリケーションのパフォーマンスを計測し、モニタリング
Jenkinsを使用してCI/CDパイプラインを作成し、マイクロサービスアプリケーションへのアップデートのデプロイを自動化
OpenShift上で開発環境と本番環境のプロジェクトを作成し、OpenShiftのパイプラインビルドを使って、開発環境から本番環境にデプロイします。
下図が構成になります。開発環境がcoolstore-devで、本番環境がcoolstore-podになります。
ガイドを見ながら、CodeReady Workspacesのターミナルウィンドウから「oc project coolstore-dev」等を叩いたりしながら、開発環境と本番環境を作っていきます。
開発環境は以下のようになります。
次に、Jenkinsを入れます。これはカタログからおじさんを選べば入ります。
ここから、Jenkins自動化エンジンで実行するための Jenkins pipelineを作っていきます。
OpenShiftではJenkins pipelines をプラットフォームに統合することでCI/CD Pipelinesの構築を簡素化してます。
また、OpenShift 4からはKubernetes向けのCI/CDの進化形である Tekton Pipelines も導入されています(Module4で実施します)
パイプラインを使って、開発環境イメージを本番環境へデプロイしてみます。
2分ぐらいで終わります。下図のようにパイプラインの進行状況を見ることができます。
アプリケーションがデプロイされて実行できることも確認できます。
次に、パイプラインへ承認ステップを追加してみます。(yamlを編集しています)
ガイドを見ながら、Webアプリをちょこっと修正して、もう一度パイプラインを実行します。
黄色でパイプランが承認待ちになっているのがわかります。
上記の「Input Required 」のリンクを押すとJenkisの画面に移動します。
ログインすると、承認画面になり、承認すると本番環境へのデプロイが開始されます。
このような流れでOpenShift上でCI/CDを体験できます。
JenkinsやTektonのパイプランがOpenShiftに統合されているので構築が容易です。
CodeReady Workspacesを使用したJavaアプリのデバッグ(ライブコーディング)
開発モードのQuarkusでは、バックグラウンドコンパイルで「ライブコーディング」ができます。
Javaファイルやリソースファイルを変更して更新すると、変更が自動で反映されます。(pom.xmlなども)
この機能を使うことで、デバックしながら修正をかけたりすることで、開発効率が向上します。
これは、体験して頂くのが一番いいかなと思います。
ここでは、CodeReady Workspacesのデバック画面をご紹介します。
ブラウザ上のIDEでも、デスクトップアプリと遜色がありません。
CodeReady Workspacesは、ブラウザベースの利用なので、開発者メンバへの配布が容易です。
ある程度の規模のプロジェクトでは、開発環境の準備、プロジェクトの共有設定などの手間がかかり、さらには環境差異でハマることもあるかと思います。
CodeReady Workspacesでは、そのような問題の解決策についても活用できます。
Jaegarm, Prometheus, Grafanaなどを使用してアプリケーションのパフォーマンスを計測し、モニタリング
クラウドネイティブ・アプリケーションもしくはマイクロサービスが増えてくると、アプリの数が増えるので、モニタリングが複雑になりがちです。
ここでは、JaegarやPrometheusなどを使って、アプリケーションの監視を実践します。
なお、Module3では、Service Meshを使っての可視化や監視を実践します。
ガイドを見ながら、Jaegarのデプロイ、Quarkusアプリにトレース拡張の設定などをやっていきます。
アプリを実行した際のトレースを見ていきます。
アプリが1つなので、効果があまり感じられないかも知れないですが、アプリが増えてくると、応答性能のボトルネックなどの把握が容易になります。
ガイドを見ながら、PrometheusとGrafanaのデプロイ、Quarkusアプリに quarkus-micrometer(メトリクス)の設定などをやっていきます。
Prometheusで何回アプリが実行されたかを表示しています。
Grafanaで何回アプリが実行されたかとJavaVMのメモリを表示するダッシュボードになります。
このような流れでアプリケーションのパフォーマンスを計測し、モニタリングを体験できます。
Module3では、Service Meshでサイドカーを使うことで、アプリに手を入れずにモニタリングを実現します。
手順の類はだいぶ端折っているので、短く感じるかもしれませんが、実際にハンズオンを行うとそこそこのボリュームです。
ガイドに従って進めればプロジェクト作成、ビルド&デプロイなどの一連の流れとOpenShiftでのアプリ開発やマイクロサービスのモニタリングの体験・理解ができると思います。
ワークショップにご興味があればご連絡ください。