こんにちは。職業「戸倉彩」です。
今回は、IBMのパブリッククラウドのサービスの一つとして提供されている IBM Cloud Code Engine を使用して、サーバーレスプラットフォーム上にJavaマイクロサービスアプリケーションを構築する方法をご紹介します。
IBM Cloud Code Engineとは
IBMが、IBM Cloud上で提供しているフルマネージドのサーバーレスプラットフォームで、アプリケーションをKubernetesベースのインフラストラクチャー上にデプロイし、管理することができるサービスです。Code Engineが、インフラストラクチャーの処理を行ってくれるので、Kubernetesや、Kubernetes環境で簡単にサーバーレスを実現できるKnativeなどについて知識がなくても問題ありません。ユーザーが、アプリケーションをホスティングするための環境構築ではなく、アプリケーションのコードを書くことにとことん集中できるように設計されています。
IBM Cloud Code Engineで採用しているオープンソース・テクノロジーは下記の通りです。
Code Engineのアーキテクチャについてより詳しく学びたい場合には、「Code Engine のアーキテクチャーとワークロードの分離について」サイトをご覧ください。
IBM Cloud Code Engineを利用するために必要なもの
1. Webブラウザ
IBM Cloudの管理用のダッシュボードにアクセスするために必要となります。公式サイト「IBM Cloudの前提条件」では、Chrome、Firefox、Edge、Safariの最新バージョンもしくは1つ前のバージョンの使用を前提条件としています。
2. IBM Cloud 従量課金アカウント (またはサブスクリプション契約)
IBM Cloudアカウントをお持ちでない方は、IBM Cloudカウント作成サイトからアカウント作成を行った後、クレジットカード登録を行って従量課金アカウントにアップグレードを行ってください。
3分程度の解説動画によるアカウント取得方法も公開されています。下記リンクからご参照ください。
・ IBM Cloud のライトアカウントを作成しよう
・ 従量課金アカウントへのアップグレード
サンプルアプリケーションをセットアップする
ここからは、GitHub上で公開されている 「IDおよびアクセス管理(IAM)フレームワークで保護された記事を表示するサンプルアプリケーション」 をIBM Cloud Code Engineの上に構築するまでの流れをご紹介します。
構成イメージ
- JavaScriptとVue.jsのコードをブラウザに提供するフロントエンドのWebアプリケーション(Web-app)があります
- ブラウザで実行されているWebアプリのコードは、Web-apiマイクロサービスのREST APIを呼び出します
- 一方、Web-apiマイクロサービスは、Articles(記事)マイクロサービスのREST APIを呼び出します
- Keycloakは、このマイクロサービスベースのアプリケーションのIAMに使用されています
使われているテクノロジー
- Microservices architecture
- Keycloak
- Jakarta EE
- MicroProfile
- Quarkus
- Vue.js
- NGINX
- git 2.24.1以降
- yarn 1.22.4以降
- Node.js v14.6.0以降
- Apache Maven 3.6.3
1. Code Engineプロジェクトを作成する
-
「IBM Cloudにログイン」にアクセスし、 IBMid (アカウント作成時に登録したメールアドレス)と パスワード を入力してログインする
-
「IBM Cloud Code Engine」 の 「プロジェクト」 ページが表示されたら [作成] ボタンをクリックして、プロジェクトを作成する
- 「プロジェクトの作成」 ページで必要項目を入力し、[作成] ボタンをクリックする
-
「プロジェクト」ページに作成したプロジェクト名が表示され、[状態] が アクティブ になっていれば成功です
2. IBM Cloud Shellを操作してみる
IBM Cloud Shell は、IBM Cloudで提供されているワンクリックで使用できるブラウザーベースのシェル環境です。
3. サンプルアプリケーションをデプロイする
1.下記のコマンドを実行して、GitHub上のプロジェクトをクローンする
git clone https://github.com/thomassuedbroecker/ce-cns.git
cd ce-cns
ROOT_FOLDER=$(pwd)
2.環境変数を設定するコマンドを実行する
この時、
cloud-native-starter-demo
の部分は、3番の手順でご自身が作成したプロジェクト名と置き換えてコマンド実行してください
export MYPROJECT=cloud-native-starter-demo
3.下記のコマンドを実行してbashスクリプトを実行する
ibmcloud target -g Default
cd $ROOT_FOLDER/CE
bash ce-deploy-apps.sh
4.bashスクリプトの実行結果の最後の4行に、Web-App
のリンクが含まれていることを確認する
4. ブラウザでサンプルアプリケーションを開く
- ブラウザで上記のWeb-Appリンクにアクセスし、
user: alice
とpassword: alice
でログインする
- ログイン直後は、今回はIBM Cloud Code Engineがアプリケーションにアクセスがあったタイミングで0からスケールを行う設定になっているため、起動に時間を要して 「timeout」 になる可能性があります
- しばらくしてブラウザをリロードするとページが表示され、 Articles(記事) が表示されば成功です
操作手順は以上となります。
おまけ
裏側のコンテナ周りがどうなっているのか知りたい場合には、IBM Cloud Shellでコマンド実行した際の出力結果や、Kubernetesのコマンド(kubectl)でいろいろ確認してみると理解することができます。ただし、マネージドサービスであるためすべての情報を取得できるわけではありません。
podの一覧を表示するコマンド
kubectl get pod
Serviceの一覧を表示するコマンド
kubectl get svc
参考情報
- IBM Cloud Code Engine 公式サイト
- IBM Cloud Code Engineお役立ち情報 - IBM Cloud News
- IBM Cloud Code Engine - IBM Cloud 資料
- Workshop: Deploy a Java microservices application to IBM Cloud Code Engine - IBM Developer
今回は以上となります。
Have a nice Code Engine day♪
※Twitterで最新情報配信中 @ayatokura