PaaSaaSの概要
図1にPaaSaaSの全体構成図を示します。Jupyter NotebookとAnsibleのDockerコンテナはNIIが提供しているものを利用しており、この上にPaaSaaSを用意しました。
PaaSaaSレイヤにて、利用者がほしい手順書は自動生成されます。でき上がった手順書にはAnsibleによる設定スクリプトが記述されており、これを実行することで同梱しているansible経由で構築対象のサーバに対して構成変更が施されます。
まず、利用者は図2にあるPaaSaaS構築手順書に対して、配備先のホストのIPアドレスやほしい環境を入力します。入力後に[作成]ボタンを押下することで、PaaS環境の構築手順書(Notebook)が生成され、配備先のサーバに保存されます。
あとは、構築手順書に従って操作することで対象のホストにほしい環境が用意されます。手順書はPythonあるいはAnsibleによって記述されているコードブロックを実行するだけなので、コピー&ペーストで実行する手順書よりミスを減らすことができます。
以上の利用手順を図3にまとめました。まず、利用者はPaaSaaS構築手順書に構築対象のサーバやサービス名といった必要な情報を入力し、作業手順書と構築手順書群を生成します。
次に、作業手順書を実行することで、配備対象サーバ上にサービスが起動します。仕組みとしては、Ansibleにより配備対象サーバ上にリモートログインを行っており、docker-composeが実行されています。そのため、PaaSaaSが動作しているホストからIPリーチャブルなマシン上であればどこでも設定が可能です。
そしてサービス起動後、構築手順書群を参照しながら各種サービスの初期設定を行うことで構築完了となります。
PaaSaaSの構成
ここで、PaaSaaSの構成を説明します。配備対象先でのサービスの展開方式についてはDockerによるコンテナを採用しました。これにより環境の構築は短時間に完了し、1台のホストに複数の環境を構築することもできます。また、複数のサービスをまとめて管理できるように、複数のコンテナを使うアプリケーションを定義・実行できるDocker Composeを利用しました。Docker Composeは、定義ファイル(YAML)に従ってコンテナアプリケーションをデプロイしてくれるので、PaaSとして提供するアプリケーションが増えたときに実行する手順書およびメンテナンスを楽にすることが可能となります。今回、PaaSaaSでは構築手順書で入力した内容に従って、Docker Composeファイルを作成し、実行可能な手順書(Notebook)にする処理が作り込んだ部分になります。今回構築したPaaSaaSで構築する環境は単純にアプリケーションを利用可能な状態にすることにとどまっており、社内プロキシやセキュリティは考慮していません。
今後は、社内プロキシの設定情報の編集や、Nginxのようなリバースプロキシとの連携が必要だと考えています。
PaaSaaSの将来性
今回はLC4RIの仕組みを利用し、環境構築手順書を自動生成するアプローチを試みました。まだPoC(概念実証)段階ではありますが、LC4RIによって実現される新たな可能性のひとつではないでしょうか。
今後はPaaSaaSで構築できるサービスの種類を増やすとともに、多くの企業の方に使っていただき、その結果や意見をフィードバックする仕組みがあればいいと考えます。PaaSaaSをオープンな技術として公開することで、エコシステムを形成していきたいです。
トップエスイーについて
「トップエスイー」は、国立情報学研究所で実施している、社会人エンジニア向けのソフトウェア工学に関する教育プログラムです。トップエスイーでは講義や制作課題を通して、最先端の研究成果や現場で得られた知見が蓄積されてきました。その「アウトカム」、つまり成果やそこに至る過程を紹介し、現場のエンジニアの方々に活用いただける記事を連載しています。2017年度より、「ソフトウェア開発実践演習」がトップエスイーコースの受講生全員が履修する科目として加わりました。従来の修了制作は個人でテーマ設定して進めるのが基本でしたが、それだけでなく、講師が課題設定する場合や、グループで取り組むなど、より多彩な履修形態を用意しています。今回の成果は、クラウドを利用する上での可能性を広げる仕組みや、あるいは使い勝手を高める仕組みをベースにした実務への適用と言えるでしょう。
