開発環境基盤の導入における問題点
企業内で開発を行う場合、開発環境構築基盤(PaaS)があると、一定の環境であれば効率よく構築できて非常に便利です。しかしながら、実際には開発チームごとに個別のカスタマイズが必要となるため、運用するには非常に高いコストがかかります。また、構築できるメンバーも限られてしまい作業が属人化してしまいがちです。
最近ではWeb上に構築手順をまとめた記事はたくさんあるのですが、これらを参考にしても、社内Proxyや開発環境特有の構成などが原因で失敗するケースがあります。作業者は、原因調査に時間をかけすぎるのは避けるべきですが、一部完成しないままの状態で構築作業を切り上げ、動作する部分のみで運用を開始することも好ましくありません。本稿では、こうした問題を解決するために「Literate Computing for Reproducible Infrastructure(以下、LC4RI)」を使ったPaaS環境を提供するサービス、「PaaSaaS」について紹介します。
LC4RIとは、Jupyter Notebookを利用して実行・再現な可能手順書の整備と、手順書を用いた作業の証跡の管理を表裏一体で機械化し、人間が読み解ける文芸的コンピューティングの実現を目指す試みです。AnsibleなどのDevOpsツールと組み合わせた、再構築可能なインフラの構築・運用に適用している実績があります。
Jupyter Notebookとは、Pythonを始めとする複数のプログラミング言語をインタラクティブに操作可能なオープンソースのWebアプリケーションです。Ansibleは、同じくオープンソースソフトウェアであり、Pythonで記述された構成管理ツールです。
LC4RIを手順書に沿った処理を進める仕組みとしてだけでなく、手順書自体を生成できる基盤として捉えました。手順書を自動生成する上で、誰が操作しても同じ結果となるような仕組みを作れないかと考えました。
この手法を前述の問題点に適用することで、以下の課題を解決しようと試みました。
- 課題1:チームごとに異なる開発環境一式を提供できるようになること
- 課題2:エラー発生時に調査できるようになること
- 課題3:ミスの少ない手順書を作って、誰でも構築できるようになること
これらの課題を解決するため、チームごとの専用の手順書(Notebook)を自動生成させることを目指しました。LC4RIを使うことで、実行ログを記録しながら操作可能であり、障害発生時に調査・問題の切り分けが可能となること、さらに自然言語と実行コードを備えた手順書を提供できるため、誰が実行しても同じ結果となることが期待されます。つまり、課題2と課題3は解決可能で、属人化も排除できます。
さらに残った課題1を解決するため、任意の手順書を自動生成させる仕組みを新たに作りました。こうして開発環境を提供する仕組みを提供することから、PaaS as a Service(PaaSaaS)と名付けました。