
オープンソース製品環境の高速構築と運用のためのマネージドサービス:Elestio
docker-composeで環境構築は楽になったが
オープンソース製品の環境を用意するとき、一昔前はその構築に時間がかかるものであった。DBを入れてWebサーバを入れてアプリケーションサーバを入れて、そして設定項目も多くあり、学習も大変だった。が、docker登場以来、対象製品のdocker-compose.yamlを入手すれば、ほぼ一発で環境は立ち上がるようになった。しかし、運用を行おうとすると、バージョンアップ対応や、バックアップを行う必要が生じるし、コンテナのデータを永続的に残すためには最低限dockerの知識は必要になる。それ以前に、dockerそのものをインストールしたり、クラウド環境でセキュアなインスタンスを用意するのは、非インフラエンジニアにとっては敷居が高い。
そこで、インフラのことなど考えずにアプリケーションだけ使いたい、というときに役に立つのが、ご紹介するアイルランド発のサービス「Elestio」である。
Elestioとはなにか?
インスタンスの確保と、オープンソースのアプリケーション環境を数分で構築でき、その後の運用もいい塩梅にやってくれるサービスである。以下のような機能がある。
パブリッククラウドベンダー上でのインスタンス作成
指定アプリケーションをdockerで立ち上げる
セキュリティ設定
バックアップ設定
各種メトリックスのモニタリングと表示
利用者の監査機能
自動手動バージョンアップ
リソース不足時のアラート
本番環境として運用するなら必要となるであろうことを一発で用意してくれるのは想像以上に楽なのである。環境を整えてアプリケーションを試して、どんなものかさわってみて、場合によってはそれをすぐに消す、ということが非常に短いサイクルで行える。
2024年5月14日の時点で311個の製品がラインナップされている。この量は圧倒的ではないだろうか。今まで試せなかった製品が数分で試せるのである。カタログに無い製品は、リクエストすると将来のロードマップで検討してくれるらしいので、遠慮なくリクエストしていきたい。

アカウント取得手順
1.最初にアカウントを作る。Elestioのサイトにアクセスして、右上のFree Trial(無料体験)ボタンをクリック。

2.次に、アカウント情報を入れる前のオプション選択お約束画面。自分はEmailを選択したが、これはお好みで。

3.メールアドレス、パスワード、それから名前を入れて「Continue with Email(メールで続ける)」をクリック。パスワードの条件説明が少々いかつい感じがするが、ブラウザが生成してくれるパスワードでいいんではないでしょうか。

4.「受け付けました」メールがくるので、メール内の「Verify Email(メールの確認)」をクリック。

5.そうすると、これから審査開始します、のメールがくる。つまり、すぐに使えるわけではない、ということである。人がやっているらしい。何を審査するのかよくわからないが、事情はいろいろあるのだろう。数分で終わることもあるようだが、自分の場合は数時間かかった。アイルランドと日本の時差の関係だろう。たぶん。

6.使えるようになりましたメールがくれば完了。「Continue Deployment(デプロイを続ける)」をクリックしてログインを完了すれば、Elestioの管理画面に入れる。テスト用の初期デポジットは、3日限定で$20分。

本来なら説明を省略してもいい部分ではあったが、アカウント取得に人手審査が入るという珍しいフローだったので、詳細に記述しておいた。実際、審査すると言われたら、そして時間がかかるとなると、不安になるのが人情だ。気楽に気長に待っていただきたい。
製品のデプロイ(Difyを例にとって)
アカウントが取得できたら、次は製品のデプロイである。どの製品を選んでもいいのだが、最近話題の、LLMを使ったアプリケーションをローコードで開発できる「Dify」環境を立ち上げてみよう。
Difyは、dockerの環境があればローカル(手元のマシン)環境ですぐに立ち上げることができる(HowTo記事も多い)。しかし、ローカルだと原則自分で使って満足するだけなので、インターネット(The internet)上に立ち上げて公開してみたい、というのが人情だろう。もちろん、ローカルネットワーク内で立ち上げて、リバースプロキシーで公開するという手もあるが、それは面倒くさい(ngrokというサービスを使うという手もあるが)。最近は、Synology等のNASでもdockerが使えるので、Synology社提供のリバースプロキシーサービスを使えば公開はできる。さらに、パブリッククラウドでインスタンスを立ち上げて、docker環境を作るというストロングスタイルもある。しかしこのどれもが、「Difyを使ってみたい」という原初的な欲望を満足させるには少し敷居が高いし、やはり手順が面倒なように思われるのだ。また、本番運用を行うとなると考えないといけないことは多い。であるから、「ちょっと使ってできれば公開してみたい」と「本番運用もそれなりにやれたら嬉しい」という煩悩を同時に満たしてくれるElestioの出番なのである。
1.まずElestioのダッシュボードに入ろう。ログイン直後だと、「Create Service(サービス作成)」の画面になると思う。もし、そうなっていないなら、左の「Services(利用中サービス一覧)」メニューを選んでから、右上の「Create a new service」を選んでほしい。

2.【Select services】つくりたいサービスを検索する。今回はDifyなので、「Dify」と入れれば勝手に検索される。Difyが表示されたら、何も考えずに「Select(選択)」をクリック。製品というかサービスの選択はこれで終わりである。

3.【Select provider, region & service plan】クラウドベンダーの選択になる。2024年5月14日現在の選択肢は以下のとおり。正直、LightsailとLinode以外は今まで聞いたことがなかった。
Hetzner Cloud
Digital Ocean
Amazon Lightsail
Linode Cloud
Vultr Cloud
Scaleway Cloud
東京リージョンが選択できるのは、Amazon Lightsail、Linode、Vultrだけなので、ここから選ぶのが良いだろう。ベンダーとリージョンによって値段は異なるので、東京にこだわらなければ、実際どこでもいいように思う。
ここで、Elestioを使うにあたって理解しにくい、「払うお金は何に使われるのか」という部分を解説すると…
ユーザがElestioに払う費用 = Elestioがクラウドベンダーに払う仕入れ費用 + Elestioの利益と販管費
ということになる。つまり、ユーザは各クラウドベンダーと直接やりとりする必要はない、ということだ。費用はコミコミと理解すればいい。
なお、AWSと自由に選べるVPSは別扱いと考えてほしい。これは、すでに所有しているAWSアカウントを使ったり、事前にVMを立ててそこにElestioで頑張ってもらうという方法なのである。その際に払う費用は、クラウドベンダー費用とは別で、Elestio管理サービス利用料だけということ。
というわけで、Linodeの東京リージョンを選ぼう。ちなみに、製品のバージョンも選択できる(立ち上げ後に自由に変更できるのでデフォルトで良いだろう)。

4.各ベンダーが提供するインスタンスのタイプの選択となる。普段AWSでインスタンスを立ち上げるとき、選択肢が多すぎてよくわからなくなるのだが、Elestioでは各製品ごとに最低限必要なタイプを限定してくれている(はず)なので、原則メモリサイズを選ぶだけということになる。Difyの場合、1Gも選べたがこれだとさすがにきつそうだ(実際試したが、ダメだった)。4G推奨なので4Gと行きたいところだが、財布と相談して2Gで妥協。必要ならタイプ修正も後でできるのは、一般のクラウドと同じ。
ベンダーとリージョンを選んで、インスタンスタイプを選ぶと、右下に1時間あたりの単価と1ヶ月の単価が出てくる。今回だと月$26である。個人だとちょっとお高いです、という感じである。
一番右下の「Next」をクリックして、次のサポート選択画面に移動する。

5.【Select Support & advanced setting】サポートの選択、サービス名と管理者アカウントを決める画面である。デフォルトのままでかまわないので、「Create Service(サービス作成)」を押せば、環境作成が開始される。


6.数分待てば以下のようなメールが届くので、そうすればすぐに利用開始可能。あとは、Difyそのものの使い方となるが、今回はElestioの説明なので、以下は割愛。

Elestioで他にどんなことができるかは、YouTubeのElestioチャネルを参照してほしい。登場しているWassim Samad氏は、たぶん日本に住んでいるのだと思う。その他の機能については、また記事を書きたいと計画している。
以上。