LoginSignup
2
1

More than 1 year has passed since last update.

JavaマイクロサービスアプリケーションをIBMのサーバーレスにデプロイする

Last updated at Posted at 2021-09-23

こんにちは。職業「戸倉彩」です。
今回は、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に使用されています

使われているテクノロジー

1. Code Engineプロジェクトを作成する

  1. 「IBM Cloudにログイン」にアクセスし、 IBMid (アカウント作成時に登録したメールアドレス)と パスワード を入力してログインする

  2. 「IBM Cloud Code Engine」「プロジェクト」 ページが表示されたら [作成] ボタンをクリックして、プロジェクトを作成する
  3. 「プロジェクトの作成」 ページで必要項目を入力し、[作成] ボタンをクリックする
    • ロケーション: ダラス(us-south)
    • 名前: ユニークなプロジェクト名 ※サンプルではcloud-native-starter-demo とつけました
    • リソース・グループ: Default
  4. 「プロジェクト」ページに作成したプロジェクト名が表示され、[状態]アクティブ になっていれば成功です

2. IBM Cloud Shellを操作してみる

IBM Cloud Shell は、IBM Cloudで提供されているワンクリックで使用できるブラウザーベースのシェル環境です。

  1. IBM Cloud画面右上の IBM Cloudシェル アイコンをクリックする

    MEMO: IBM Cloudシェルのセッションは、1時間操作がない場合に自動終了します

  2. 「IBM Cloud Shell」 画面が開き、xxx@cloudshell:~$ が表示されていることを確認する

  3. ロケーションを [ダラス(us-south)] に変更する

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. ブラウザでサンプルアプリケーションを開く

  1. ブラウザで上記のWeb-Appリンクにアクセスし、user: alicepassword: alice でログインする
  2. ログイン直後は、今回はIBM Cloud Code Engineがアプリケーションにアクセスがあったタイミングで0からスケールを行う設定になっているため、起動に時間を要して 「timeout」 になる可能性があります
  3. しばらくしてブラウザをリロードするとページが表示され、 Articles(記事) が表示されば成功です  

操作手順は以上となります。

おまけ

裏側のコンテナ周りがどうなっているのか知りたい場合には、IBM Cloud Shellでコマンド実行した際の出力結果や、Kubernetesのコマンド(kubectl)でいろいろ確認してみると理解することができます。ただし、マネージドサービスであるためすべての情報を取得できるわけではありません。

podの一覧を表示するコマンド

kubectl get pod

Serviceの一覧を表示するコマンド

kubectl get svc

表示サンプル

参考情報

今回は以上となります。

Have a nice Code Engine day♪
※Twitterで最新情報配信中 @ayatokura

2
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
2
1