サーバーレスコンテナ実行環境サービス
『アプリクラウド Rana8』の紹介

【技業LOG】技術者が紹介するNTTPCのテクノロジー

2023.12.11
VPS・IaaS
飯田 大悟

プロジェクトマネージャー
飯田 大悟

高須賀 友里

プロダクトマネージャー
高須賀 友里

宮崎 真琴

インフラエンジニア
宮崎 真琴

取得資格:ITパスポート、LPIC level1、.com Master ADVANCE☆☆、ITIL Foundation

技業LOG

※本記事に掲載されている内容は無料トライアル開始当初のものとなっております。
サービス内容および利用手順はアップデートにより一部変更される可能性がございます。
最新情報は、https://web.arena.ne.jp/service/rana8poc.html からご確認ください。

目次

  • 0.
    コンテナ技術とは?
  • 1.
    サーバーレスコンテナ実行環境サービス『アプリクラウド Rana8』
  • 2.
    『アプリクラウド Rana8』の構成
  • 3.
    『アプリクラウド Rana8』の利用手順
  • 4.
    『アプリクラウド Rana8』で利用可能なプログラム言語
  • 5.
    まとめと『アプリクラウド Rana8』無料トライアルのご案内

導入

ニーズやサービスの変化の激しい現代では、素早い開発が求められます。最近では、クラウド利用の増加やコスト削減の波を受け、アプリケーションのリソース使用効率やポータビリティーの向上、開発俊敏性の強化などを目的に、コンテナ利用も増加傾向にあります。
とはいえ、いきなりコンテナを活用しよう!といわれても、とハードルを高く感じてしまう人もいるかと思います。そこで、コンテナサービスをお手軽にお試しできるサービスを紹介いたします!
本記事で紹介する『アプリクラウド Rana8』を使えば、難しいDockerやらインフラまわりの話は一旦抜きにして、アプリ開発の学習に集中できます。

0. コンテナ技術とは?

コンテナ技術は、ホストOSの上にコンテナエンジンと呼ばれる仮想化ソフトウェアをインストールし、その上にコンテナを構築できるようにしたものです。各コンテナは独立して動作するため、複数のアプリケーションを同じOS上で動かすことができます。またコンテナごとのOSがなく、起動時のOS立ち上げが不要なため、サーバー仮想化技術と比較して、メモリなどのリソース消費量が少なく、起動も高速に行えます。

なにより、コンテナエンジンさえあれば、どこでも同じように起動できることが強みです。テスト環境で動いたものをそのまま商用環境で利用できるため、環境の違いによるトラブルを減らせるほか、開発・運用コストも下げられます。

1. サーバーレスコンテナ実行環境サービス『アプリクラウド Rana8』

Rana8は、コンテナ技術を用いる際の手間を減らし、誰でも簡単にアプリケーション開発ができるようにしたい、というコンセプトで企画された、サーバーレスなコンテナ実行環境サービスです。
サーバーを立てて、OSをいれて、コンテナエンジンをインストールし...、といった手間なく、自端末からコンテナをビルドしアプリケーションをデプロイできます。

1.1.『アプリクラウド Rana8』をおすすめする4つのポイント

①自身の開発マシンから直接デプロイ可能

自分でサーバーやOSなどの環境を1から構築する必要はありません。また、コンテナエンジンも内包しているので、DockerやKubernetesなどの複雑な知識は不要です。
学習コストが抑えられ、コーディングに集中できるので、アプリケーション開発を勉強したい初学者におすすめです。

②Google Cloud Runラッピングでシンプルなツールへ

Rana8はGoogleエンジニアの方と共同開発し、コンテナの仕組みにGoogle Cloud Runを使用しています。誰でも使えるシンプルなツールとなっているため、「GCPを使ってみたいけど、機能がたくさんあってどれを使っていいかわからない」「複雑でハードルが高い」と感じている方におすすめです。

③サーバーレスで効率化、待機時間の課金0円

これまでの開発業務は、まず開発環境を構築し、アプリケーションを開発していました。構築した開発環境は、サーバー管理をしなくてはならず、開発していない間の維持コストもかかります。
Rana8では、リクエストがあったときのみ起動する仕組みにすることで、CPUなどのリソースを節約しております。そのため、リクエスト数に応じた料金体制をとることができ、コストや電力の削減が期待できます。

④GCPが保守運用をフルマネージド

Rana8はGCPを活用しているため、ユーザー側で環境の保守運用をする必要はありません。
また、サーバーへの負荷に合わせて自動的にスペックを増設する、オートスケーリング機能もあり、アプリケーションを安定して運用することができます。
上記のポイントから、次のような方に向いているサービスです。

  • アプリケーション開発を勉強したいが、環境を準備するハードルが高い...
  • コンテナ技術に興味があるが、DockerやKubernetesって難しそう...
  • Google Cloud Platform(GCP)を触ってみたい!
  • 開発環境の構築・運用の手間やコストを減らしたい

2. 『アプリクラウド Rana8』の構成

この章では、Rana8がどんな構成になっているかについてご紹介します。

Rana8は、Google CloudのサーバーレスサービスであるCloud Runをプラットフォームとして利用しています。Rana8のコントロールパネルから、APIでCloud Runを操作し、初期コンテナを生成できます。Kubernetesがコンテナを実行するコンテナランタイムソフトウェアを管理し、さらにKnativeによりサーバーレスを実現します。

アプリをデプロイするときは、開発環境にGoogleが提供するCloud SDK(開発のためのソフトウェアパッケージ)をダウンロードし、gcloudコマンドを使ってデプロイを実行します。従来のコンテナ技術では、Dockerfileといったコンテナイメージファイルが必要でしたが、Cloud Run内のBuildpacksという技術によって、ソースコードから自然と推奨されたコンテナイメージが生成される仕組みになっています。

  • Google Cloud Runとは?
    サーバーレスでのアプリケーションを実行するソフトウェアであるKnativeをベースとした、マネージドなコンテナ実行サービスです。従来の開発環境は、Dockerといったコンテナ実行ツールで環境を作り、さらにKubernetesなどのオーケストレーターで管理する必要がありましたが、Cloud Runではサーバー管理を必要としない、サーバーを意識しないで使えるフルマネージドのサービスを実現しています。

将来的には、GoogleのAnthosを導入して、NTTPCの自社サーバー設備上でRana8を動かすことを目標としています。他にもGitHubとの連携など、開発者フレンドリーな機能追加も検討中です。

3. 『アプリクラウド Rana8』の
利用手順

続いては、Rana8を利用してアプリを簡単にデプロイするための手順を紹介します。

3.1.事前準備

まず、アプリのデプロイまでの事前準備として、Rana8のコントロールパネルから、下記の処理を実施しておきます。

  • (1)
    ユーザー登録・ログイン
  • (2)
    サービスアカウントキーのダウンロード
  • (3)
    初期コンテナの作成
  • (4)
    gcloud CLIのインストール(すでにインストール済の方は不要です)

(1)ユーザー登録・ログイン

Rana8サービストップページ上部からユーザー登録フォームにアクセスします。

メールアドレスとパスワードを入力しユーザー登録を行ってください。
ユーザー登録完了後、ログイン画面にて、先ほど設定したメールアドレスとパスワードを入力してログインしてください。

(2)サービスアカウントキーのダウンロード

ログインに成功すると、Rana8コントロールパネルが開きます。
「サービスアカウントキー」をダウンロードし、開発環境に保存してください。

(3)初期コンテナの作成

「サービス作成」をクリックします。

「サービス作成画面」が開きます。下記の必要事項を入力してください。

必要事項 説明
サービスID サービスIDを設定してください。
  • ここで指定したサービスIDはgcloudコマンドを入力する際に使用します。
ディスクリプション 作成するサービスの説明を記載してください。
コンテナサイズ 必要なコンテナのサイズを設定してください。
  • 無料トライアル期間中は0.5CPU-1Giメモリに固定となります。
CPU割当て 「常時」、「要求時のみ」の2種類から選択してください。
  • 無料トライアル期間中は、「要求時のみ」に固定となります。
コンテナ数 必要なコンテナ数を設定してください。
  • 無料トライアル期間中は、「最小0~最大2」に固定となります。

すべての項目の入力が完了したら、「サービス作成」をクリックします。
画面右側に下の図の赤枠部分のメッセージが表示されたら、初期コンテナの作成は完了となります。
右下の<閉じる>をクリックしてコントロールパネルに戻り、「サービス一覧」にコンテナが追加されていることを確認します。

(4)gcloud CLIをインストール(すでにインストール済の方は不要です)

以降の作業ではgcloudコマンドを利用する必要があります。gcloudコマンドを利用するためにはgcloud CLI(Command Line Interface)のインストールが必要です。
gcloud CLIは下記のURLよりインストールすることができます。

  • 各自の開発環境のOSに合わせてインストールしてください。
https://cloud.google.com/sdk/docs/install?hl=ja

3.2.アプリのデプロイ

ここまでで下準備は完了です! いよいよここからデプロイに入っていきます!!
アプリのデプロイは、以下の手順で実行します。

  • (1)
    アプリの作成
  • (2)
    ターミナルの立ち上げ
  • (3)
    サービスアカウントキーを使ってログイン
  • (4)
    コンテナへアプリをデプロイ
  • (5)
    アプリ公開先へアクセス

(1)アプリの作成

  • 既にアプリを作成済の方は不要です。

本手順では、HelloWorldアプリの作成方法を紹介します。
お使いの統合開発環境でデプロイ用のフォルダを作成し、そのフォルダの中に
・main.py
・requirements.txt
上記2点のファイルを格納します。

作成したmain.pyには

import os

from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def hello_world():
name = os.environ.get("NAME", "World")
return f"Hello {name}!"
 
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=int(os.environ.get('PORT', 8080)))

requirements.txtには

Flask==2.1.0
gunicorn==20.1.0  
Werkzeug==2.3.7

と記載し、それぞれ保存します。※コードのバージョンは2023年11月現在の環境となります。

(2)ターミナルの立ち上げ

Windowsの場合
アプリからGoogle Cloud SDK Shellを起動します。

Macの場合
ターミナルを起動します。

(3)「サービスアカウントキー」を使ってログイン

「サービスアカウントキー」を保存したディレクトリにて、下記のコマンドを実行してください。

$ gcloud auth activate-service-account --key-file=XXXXXXX@rana8poc.iam.gserviceaccount.com.json
  • Key-file=以降は「サービスアカウントキー」のファイル名を入力してください。

(4)コンテナへアプリをデプロイする

デプロイするアプリが入っているディレクトリに移動します。

$ cd ディレクトリ名
  • まだディレクトリを作成できていない場合は
$ mkdir ディレクトリ名

でディレクトリを作成しその中にデプロイするアプリを格納してください。

上記で作成したディレクトリにおいて、以下のコマンドを実行し、ディレクトリ内のソースコードをコンテナにデプロイします。

$ gcloud run deploy XXXXXXX <サービスID+乱数6桁> --project rana8-poc --region asia-northeast1 --platform managed --source . 

Buildpacksによって、作成したアプリのソースコードが自動的にインストールされ、自動でコンテナイメージが生成されます。

以下の順番で処理が自動で実行されます。コンテナイメージ作成が長引く場合、数分間かかります。
処理1 クラウドストレージへのソースアップロード、
処理2 BuidPacksによるコンテナイメージ作成
処理3 Artifact registoryでのリビジョン管理、プログラムの検疫(不正なプログラムの検出)
処理4 Ingressプロキシとコンテナの接続、サービスのデプロイ

ターミナルにDone.と表示されればデプロイ完了です。

(5)アプリ公開先URLへアクセス

アプリが正常にデプロイされたことを確認します。rana8コントロールパネルの「アプリ公開先URI」から確認することができます。

4. 『アプリクラウド Rana8』で利用可能なプログラム言語

Rana8を使った簡単なアプリのデプロイ方法、いかがだったでしょうか?「自分でもできそう!」「使ってみようかな」と思っていただけたら幸いです。
今回の手順ではプログラム言語にPythonを使用してhelloworldアプリのデプロイを行いましたが、もちろん他の言語でもRana8を使用することは可能です。以下にプログラム言語ごとの対応表を記載していますので、参考にしてみてください。

言語 Cloud Run対応 Buildpacks対応
(Dockerfile等、コンテナをビルドするためのファイルが不要)
ソースコード以外に必要な
ファイル/ツール例
Python requirements.txt
PHP composer.json,
composer.lock
Go go.mod, go.sum
Ruby Gemfile,
Gemfile.lock
Node.js package.json,
package-lock.json or
yarn.lock
Java pom.xml (for Maven),
build.gradle (for Gradle)
Rust ×
Swift ×

5. まとめと『アプリクラウド Rana8』無料トライアルのご案内

本記事では、コンテナ技術の説明から、現在企画中の新サービスRana8のおすすめポイントおよび構成、利用方法について説明しました。
Rana8は、コンテナ技術を活用するハードルを下げ、開発するアプリそのもののクオリティ向上に集中することができるサービスです。
本来多くの学習コストが必要なアプリのデプロイという作業を、簡単にひとっ飛びできるRana8をぜひ利用してみませんか?
現在無料トライアルを実施中です。無料でサービスのご利用が可能となっておりますので、ぜひ次のURLからお試しください。

Rana8 無料トライアル:https://web.arena.ne.jp/service/rana8poc.html
無料トライアルは2023年11月14日から実施中です。

技業LOG

この記事に関連するサービスは
こちら

WebARENA®

社内システムから事業基盤まで。
可用性と拡張性に優れたデータセンターサービス

おすすめ記事

    お気軽にご相談ください