さくらVPSの無料お試し期間中にキャンセルした理由。パケットフィルタの制約がきびしい!?
こんにちは!
週末プログラミングが高じて、実用的な新しいサービスを開始しようと画策しているものの、人の手も借りず、お金もかけず、全部自前でやろうとして限界を感じ始めている、しずかなかずしです。
たのしくプログラミング生活してますか??
私が小中学生のころは、プログラミングなどという作業は、理科系科目好きの技術マニアな学生が取り組むものという認識でした。それが今や、理系も文系も関係なく、ビジネスをしていく社会人になくてはならない知識・スキルに変わってきています。
根っから理系の私からすると、プログラミングが市民権を得て、うれしいやら、特別感が薄くなって、悲しいやら。すこし、複雑な思いを胸に過ごす、今日この頃です。
仕事ではすっかりコーディングしなくなった私にとって、現在、プログラミングは完全に趣味の世界。趣味は趣味として、名もない週末プログラマー。最近のトレンド技術を習得し、便利になったフリーの開発ツール達に日々感動を覚えながら、新たなサービスを立ち上げようと目論んでいる、と言ったところです。
実は私には、かつては週末プログラミングでWindowsのシェアウェア(死語?)を作っていた古い歴史もあります。業界では有名な窓の杜に取り上げられた実績もあるほどです。
そして2020年現在、週末プログラミングで取り組んでいるのは、ここ1年ほどコツコツと作っているNodejs/Javascriptの新しいサービスです。サービス自体の内容はそのうちこのブログ、「しずかなかずし」でも紹介していこうと思っていますので、お楽しみに。
という訳で、前置きが長くなりました。本日は、このサービスをローンチするにあたり、レンタルのVPS(Virtual Private Server)をどうやって選定しているか、という話題でお届けます。
Webサービスを立ち上げるには
週末プログラマーが趣味でサービスを立ち上げるには、現在様々なクラウド・サービスが利用可能です。サービスの分類ごとに、ユーザーができることを見ていきます。
レンタルサーバーという選択肢
いわゆる「レンタルサーバー」と呼ばれるサービスがあります。
有名どころでは、エックスサーバや、さくらサーバー、ロリポップサーバーなどのように、使用目的をある程度限定して提供しているサービスがあります。レンタルサーバーというよりは「レンタルWebサーバー」です。Webサーバーが予めセットアップされているため、例えば、ブログのCMSであるWordPressのような、既成のWebアプリケーションをインストールするのに便利です。低価格でこのような機能を含めて提供しているので、気軽にブログを始めたいユーザには馴染みやすいサービスと言えます。
このようなレンタルサーバーでは、ユーザの使い始めの時点でApacheなどのWebサーバーが既にセットアップされています。従って、WordPress以外でもApache上で動作するPHPやPerlなどのスクリプト言語で作られているアプリケーションを使うのであれば、手軽に利用を開始する事ができます。
ちなみに、「しずかなかずし」もエックスサーバー上のWordPressで運用しています。それ加えて週末プログラマーとしては、ブログ以外のレンタルサーバーの使い道をいくつかトライ。その説明記事も書いています↓ので合わせてご覧ください。
PaaS(Platform as service)という選択肢
昨今、一昔前には考えられないほど、個人がWebアプリ・Webサービスを開始するための選択肢が増えました。
そしてなにより、Webアプリケーションの立ち上げは、信じられないほど手軽で手間なく簡単です。感動します。そういったトレンドを作ったのは、Amazon のクラウドサービスを筆頭にしたPaaS(Platform as a service)と言われるような分野のサービスと言えるでしょう。
いくつか有名どころをピックアップしてみましょう。
等など…星の数ほどあります。
これらのサービスは、レンタルサーバーとは、何が違うのでしょう?
前述のように、私のプログラムはNodejs上で動作します。Nodejsで作るアプリケーションは、ApacheなどのWebサーバで作るWebアプリとは、すこし考え方が異なります。
Apache+WordPressの場合、WebサーバーはApacheですが、実行されるアプリケーションはPHPです。PHPという「実行エンジン」をApacheから呼び出すことでアプリケーションロジックの実現をしています。
一方、Nodejsのアプリの場合は、アプリケーション自体がWebサーバーの機能を包含しています。というよりは、アプリケーションのロジックの一部として、Webサーバーの機能も含んだ形で実装してしまうイメージです。ApacheならConfigurationファイルと呼ばれるような設定ファイルをいじるところが、Nodejsならその設定そのものを自分で実装する、といった感じでしょうか。
そんなの手間がかかるじゃないか、と思われるかもしれません。
しかし、それだけ自由度があがります。単なるWebサーバーではなく、HTTP以外のプロトコルで通信するような○○サーバーがNodejs一つで色々作れてしまうのです。
PaaSと呼ばれるサービスはNodejsのように、Apache以外のWebサーバー(Webアプリケーションサーバー)も簡単に使えるようにしています。プログラムをサーバに設置(デプロイ)するための専用ツールが予め用意され、非常に手軽にさまざまな開発言語で作られたアプリのサポートしているのが特徴です。
しかし、一方で、所詮は「Webサービス」を公開することが前提なので、HTTP/HTTPSのアプリケーションをデプロイするのが基本です。使用するTCPのポート番号もHTTP/HTTPS用に固定されてしまっています。下記で説明するような、待ち受けポートや通信プロトコルの自由度がない、というのが私にとっては問題なのです。
VPSという選択肢~なぜVPSなのか
さて、私が作っているWebアプリはNodejsでできています。そしてちょっと特殊なことをしたいので、以下のようなサービス要件が必要になってきます。
- 使用するプロトコルは、HTTP/HTTPSだけじゃない
- 複数のNodejsインスタンスを同時に走らせることができる
- Nodejsが待ち受けるポートはインスタンスごとに異なる
- Nodejsが待ち受けポートは、たくさん必要
4が一番条件として厳しいと考えています。通常Webサービスを開始しようとすると、使う側のプログラムはWebブラウザであることが普通です。Webブラウザはデフォルトでは、非暗号化のHTTPがポート80番、暗号化されたSSLの通信を行うHTTPSがポート443番、を使うものと決まっています。ですので、クラウドサーバー提供側もそれらのポートと、管理用にFTPやSSHといったいくつかのポート番号しか使わせてくれないのです。
ちなみに、ポート番号ってなに?という方は、以下の記事も合わせてご覧ください。
もっとも、この要件があるため、自分のサービスはスケールしにくいのは間違いありません。そこは追々解決策を考えていくとしかないと今のところ考えています。
そして、この要件が満たせそうなレンタルこそ、Virtual のサーバーをまるっと割り当ててくれて、何でもカスタマイズできる、VPS(Virtual Private Server)のはず、と考えました。VPSはサーバーマシンで動作するOSがセットアップされているだけ。それ以外のものは利用者が自分で用意します。用意されたOSの上でどんなプログラムをセットアップするかは利用者の自由だということになります。VPSの契約をすれば、プログラマーとしては、自由に「なんでもできる」はずなのです。
その代わり、どんな使い方をするかをVPSのサービス提供側は把握しませんので、利用者にはそれだけ知識が必要になってくる、というわけです。
試したのは「さくらVPS」
さくらのVPSというVPSサービスがあります。
こちらのサービスのメリットは、有名どころであるという事実に加え、2週間の無料お試し期間があるというところです。そして価格もお手頃価格。私の特殊用途の要件を満たすかどうか、無料期間に試してみることができます。
ということで、早速申し込みました。
複数ポートで待受する設定
さくらVPSの管理画面には、ちゃんとポート設定する画面があります。
しかし…名前が怪しい…
「パケットフィルタ」画面。
“フィルタ"とはいかにも、使えなくすることを匂わす名前です。私のような、より多くのポートを自由に使いたいという目的の機能ではないのかな…?
と思ったら、案の定。パケットフィルタは、ほぼ閉まっているポートの「一部を開く設定」でした。
下の方には、「カスタム接続許可ポート設定」があります。
しかし、この設定、実は5個しか指定できません。ポート番号の範囲指定もできないので、本当にカスタムに使えるのは、5個のポートなのです。え!?
結論:私の用途には使えない
私の作っているプログラムはもっと多くのポートを開放したいのです。そいう用途には残念ながら「さくらのVPS」は使えませんでした。
ということで、今夜私は、サーバー探しの旅に出まっす…