ツールをWeb化するためのサーバー探し!!
学術論文では、バイオインフォマティクスなどの解析ツールはPythonやRなどで作成され、そのソースコードがそのまま公開されることが多いです。このとき、自分がPythonなどを扱えるなら問題ないのですが、これまでプログラミング言語に触れたことが無い人にとっては、これらのツールを使うハードルが高すぎます。
一般的に、普段実験に携わっている人が、新たにプログラミングを習得して得られるメリットはそれほど多くありません。一方で、それらの解析ツール自体は自身の研究に必要であることが多いです。したがって、プログラミングを新たに習得することなく、Pythonなどで実装されたツールが利用できることが理想といえます。
そのための解決策の一つとして、「ツールのWeb化」があります。Webサービスは画面操作で実行できるため、プログラミングを知らない人でも扱うことができます。例えば、PythonでできたツールをDjangoなどのWebフレームワーク内で実行するようにすれば、ツールを実行するためのラッパーを簡単に作れそうです。
しかし、そのためにはWeb化したツールを置くためのWebサーバーが必要となります。そこで、Webサーバーの構築に使えそうなレンタルサーバーサービスの候補をいくつか調べてきました。本記事では、3つのレンタルサーバーサービスを紹介し、どれが今回の用途に適していそうかを検討します。
Webサーバーの要件
Web化ツールを公開するにあたって、必須要件は以下の通りです。
- 複数のサービスを公開できる
- 24時間稼働できる
- なるべく安い費用で建てられる
これらに加えて、必須ではないができれば欲しい要件は以下の通りです。
- GPUが使える(ディープラーニング用)
- Djangoが使える
- MySQLかPostgreSQLが使える
これらの要件をもとに、3つのレンタルサーバーサービスを比較します。
エックスサーバー
レンタルサーバーの中でも特に有名なものが、このエックスサーバーです。国内シェアがNo.1のようで、サーバーの性能を売りにしています。
エックスサーバーのメリットは、以下の通りです。
- サーバー利用料が定額なので、破産の心配が少ない
- 36か月契約にすれば月額が安くなる(月900円)
- マルチドメイン数が無制限なので、1つのサーバーでも複数のサービスが提供できる
- 国内企業が提供しているのでサポートが受けやすい(気がする)
ちなみに、サーバーの性能は今回紹介する3サービスの中で最もよかったです(CPU 48コア、メモリ 512GB)。ただし、恐らく共用サーバーなので、ユーザー一人が使える分はよく分かりません。
また、MySQLが無制限で使えるらしいので、簡単なデータベースなら追加費用無しで実装できそうです。
続いて、デメリットは以下の通りです。
- データ転送量制限があり、超えたらアクセスできなくなる
- root権限が使えないため、ツールによっては実装できないかも
- サーバーが落ちたら全サービスが落ちる(滅多にないとは思いますが...)
良くも悪くも共用サーバーなので、一人のユーザーにかけられている制限がかなり大きいようです。また、エンジニア界隈ではあまり利用されていないのか、Qiitaでの検索結果も他サービスと比較してかなり少な目でした。なので、そのぶん困ったときの調査で苦労することになるかもしれません。
Heroku
続いて、アプリ開発のプラットフォームであるHerokuです。Herokuのメリットは以下の通りです。
- 無料版が存在する
- Dyno追加によるスケールアウトが簡単にできる
Herokuといえば、なんといっても「無料版」の存在が大きいです。無料でWebサービスを公開したい場合、必ず選択肢に入ってくるのがHeroku無料版です。こちら、起動時間が月1000時間を超えるとサービス停止してしまうのですが、公開するサービスが一つだけなら31日×24時間=744時間と、1000時間を超えることが無いため、無料で十分という人もいるでしょう。
一方で、以下のようなデメリットが存在します。
- 無料版ではSSL通信ができない
- 有料版を使う場合、料金が割高になるかも
- PostgreSQL使用料が結構高い(安いプランでは同時接続数が少ない)
- 毎日1回以上の再起動があり、その時にサーバー内ファイルも消える
- 東京にサーバーが無いので日本向けだと通信に時間がかかる
まず、ログイン機能を実装する場合はSSLが無いと不安だと思います。SSL通信を実装したい場合は、有料版で契約する必要があります。
そして、その有料版が結構高価であるというデメリットがあります。Herokuでは、Webサーバーとデータベースは契約プランが別なので、両方とも使う場合はどちらも契約しなければなりません。ただ、データベースの方は同時接続数を増やすために契約プランのグレードを高くするということになりえますので、それに加えてWebサーバーの方でも課金するのはつらいかもしれません。
ちなみに、無料版では30分以上アクセスが無ければWebサーバーが停止してしまい、アクセス時に再起動する間待たなければならないというデメリットがありますが、これはUptimeRobotを使えば常時起動させ続けることができるので、特に問題とはしません。
AWS Lightsail
AWS Lightsailは、AWSの中でもWebサービスのリリースに特化したオールインワンのVPSサービスです。Webサービスに必要なインフラセットを、とても安価で提供してくれます。
AWS Lightsailのメリットは以下の通りです。
AWSのサービスの一つなので、EC2やRDSなどの他サービスと連携するのが比較的簡単(ただし、色々と面倒ではあるらしいが)というのがメリットだと思います。また、単純に安価なので、今回の目的にも合致しています。
そして、Lightsailのデメリットは以下の通りです。
データベースを使う場合は月額が20ドルくらいになるため、エックスサーバーの2倍程度の料金になり安いというメリットが消えます。また、データ転送量が制限を超えた場合、エックスサーバーではサーバーが停止するのに対し、Lightsailではサーバーが停止せず課金が開始されます。課金が始まる前にLightsailを停止できるかどうかは分かっていません。
では、どれを使うか
まず、料金が最も安いのは「Heroku無料版」です。今回はツールをWeb化するだけであり、当面の間はデータベースやログイン機能の実装は想定していないので、Heroku無料版でも十分に目的が達成できるかもしれません。
ただし、複数のサービスを公開することになった場合に困ることになりそうです。前述の通り、Heroku無料版のサーバーは1000時間までしか稼働できないため、サービスが2つ以上になると全てを24時間稼働させるのは難しくなります。したがって、Heroku無料版で公開できるサービスは1つまででしょう。
一方、エックスサーバーは契約プランが単純であり、実装までにかかる時間が少ないというメリットがありますが、Lightsailと比較してそれほど安くはないですし、共用サーバーゆえに性能が予測できず、なによりroot権限が使えないというデメリットがあるので、今回の用途には不向きです。
したがって、新しいサービスを公開するときはまずHeroku無料版で試し、サービス運用の目処が立ったらLightsailやEC2に移行するのが最も良いと思われます。アクセス数の監視結果から適切なAWSサービスを選択するのが、AWSの勉強にもなりますし、他エンジニアの情報提供も多いので調査面で苦労することは少ないかもしれません。
また、ツールによっては高メモリや高性能CPUが必要なものがあります。それらをWeb化する際には、高リソースEC2でREST APIを構築し、LightsailではAPIにリクエストを送るだけ、という運用もAWSなら可能です。そういう意味でも、エックスサーバーよりLightsailの方が今回の用途に合っているといえるでしょう。
まとめ
今回は、エックスサーバー、Heroku、AWS Lightsailの3サービスを紹介し、これらを特定の用途に対して適用可能かどうかを検討しました。
もし、自分が作成したツールをWeb化する予定がある人は、本記事をレンタルサーバー選びの参考にしていただけると幸いです。
以上です。