プログラマーがレンタルサーバーを使いこなすには

この記事ではプログラマー歴10年である私が、AWSやGCPなどのPaaSやIaaSでの開発ではなく、あえてレンタルサーバーを使ってサービス運用する利点や使いこなす方法についてまとめていきます。

前提条件として:レンタルサーバーとは

question mark on chalk board
Photo by Pixabay on Pexels.com

別名ホスティングサーバー、共用サーバーとも言われます。

ホスティングサーバとは、複数のユーザーがメモリやCPUなどリソースを共有して利用するサーバのことで、WebサイトやWebアプリケーションをインターネットで一般公開するために使われる。

https://ja.wikipedia.org/wiki/ホスティングサーバ

「レンタル」という言葉だけを取り上げると自前で運用するサーバー環境以外になってしまいますが、歴史的な経緯もあり

レンタルサーバー = 複数のユーザーと一緒に使うサーバー環境

のことを指します。

一般的な使い道

レンタルサーバーの使い道としては

  • webサイトの公開
    • htmlファイルの配信環境
    • WordPressのホスティング
    • ECサイトの公開
  • メールサーバー
  • ファイルサーバー

などがありますが、WordPressが特に人気です。

プログラマー目線では蔑まれている?

food wood man people
Photo by MART PRODUCTION on Pexels.com

プログラマーに人気があるサーバー環境としては

  • Amazon Web Services(AWS)
  • Google Cloud Platform(GCP)
  • Microsoft Azure(Azure)

などのクラウドサービスが自由度やスケーラビリティの面で優位点があり、業務内容に直結している麺が多いため業務/個人でも使っているプログラマーは多くいるのは事実です。

他にもスケーラビリティの面では劣りますが上記クラウドサービスの仮想マシン環境だけを切り出したような仮想クラウドサーバー、VPS環境を使っているプログラマーも多くいます。

プログラマー目線としては自由度が高く、使用できるアプリケーションが自分で管理できるサーバー環境が好まれる傾向があり、レンタルサーバーのような制限が多いサーバー環境は嫌煙されている事が多くあると感じています。

レンタルサーバーの利点/活用法

light bulb and keys on table
Photo by Aphiwat chuangchoem on Pexels.com

1.メンテナンスコストが低い

あくまで私が考える大きな利点としては

  • 管理してくれる

ところが大きいと感じています。

webサイトを公開する上で必要になるものとしては

  • アプリケーションを稼働するOS環境(例: Linux)
  • webサーバーソフトウェアの常時稼働(例: apche2)
  • プログラムを実行してwebサーバーソフトウェアに実行結果を渡す(例: mod_php、php-cgi)
  • 実行されるプログラム(例: PHP、Ruby)
  • 実現するアプリケーションで必要になる別途ソフトウェア(例: MySQL、SMTP、Redis、ImageMagick)

などがありますが、全てのソフトウェアは導入したら終わりではなく、セキュリティアップデートが必要になります。

現段階でセキュリティが堅牢な物であっても、今まで見つかっていなかったバグが発見されるため全てのソフトウェアは定期的なアップデートが必要になります。

1つのアプリケーションを稼働するために様々なソフトウェアが必要になるのですが、レンタルサーバーは使えるソフトウェアに制限はあるものの、

  • 実行されるプログラム(例: PHP、Ruby)

のみ、アップデートを行えば良いため、メンテナンスコストを削減する事ができて、本来かけるべき部分に時間を使えるので堅牢なサービス運用が実現できると感じています。

1つだけのアプリケーションを運用しているだけであればメンテナンスも十分可能かもしれませんが、多くのチャレンジと多くの検証をして、なるべく多くのサイトを運用していきたいし多くの機能を実現したいのであれば、レンタルサーバーを選択するのは良い選択になると思っています。

2.複数サイトの運営が手軽

メンテナンスコストが低いということは1つのサイトにかかる手間が少なくなります。そのため複数サイトの運営が手軽になります。

私はレンタルサーバーで運用することを選んだため、10数サイトを運用していても手間がそれほどかからず、まだまだサイト数を増やせるのが魅力的です。

VPSなど1サイトに1サーバー使う運用では金額面でも大きな差が出る事になります。デメリットとしては高負荷サービスではこのような運用は出来ないため、PV数がまだ増えていない成長中のサイトなどが対象になります。

そんな複数サイトが運用できるレンタルサーバーを

  • 使えるものは可能な限り使いこなしたい

というケチな考えも少なからずあります←(他のサーバー環境に比べて安すぎるこれを使い尽くしたい!)

3.高負荷を想定していないサービス運用

レンタルサーバーの中で人気がとても高いXSERVERの場合のサーバー仕様はこちらです

転送量無制限です。※ネットワークやサーバーに対して過大な負荷が掛かる場合には、制限を行う場合があります。

リソース保証
スタンダード…CPU 仮想6コア / メモリ 8GB

https://www.xserver.ne.jp/manual/man_server_spec.php
2022年12月現在

「レンタルサーバーはとにかく重い」という印象が根強くありますが、昨今のレンタルサーバー業者さんの頑張りのおかげか「表示速度が遅くて使い物にならない」ということはなくなりつつあります。

レンタルサーバーの最低価格として月300円で借りれるものもありますが、最低価格だと不安な速度になることがありますが、標準価格の1000円程度のプランを契約すれば問題ない速度になります。(上記XSERVERのスタンダードは1000円程度のプランです)

XSERVERが転送量無制限になったのは2022年頃(?)ですが、2018年頃のブログ記事で同時アクセス数1000でも耐えていたという情報があるので、ひょっとすると今現在では1000以上はアクセスできるのかもしれません。

普段から使っている自分の肌感覚としては月数十万PVのサイト2~3個でも問題なく運用できているので、これ以上の高負荷サイトでなければ運用できます。

フルスタック開発ではAWSなどクラウドサービスを前提とすることで超高負荷になった場合にも自由にスケールできるというメリットがありますが、運用料金が高額になるため、条件が合うのであれば選択肢の一つとしてレンタルサーバーを使用するのもアリかと考えています。

(2021年に20万で買ったMBPで実行していたバッチ処理がXSERVERで実行した場合に速度が2倍近く速くなりました。ネットワーク環境なども影響していたかと思いますが、なかなか侮れないです。)

プログラマー目線での使いこなし方

主に

  • 開発環境に使用
  • 不足機能はマイクロサービスを使用

といった使い方が挙げられます。

1.開発環境に使用

レンタルサーバーはSSHを使えるものが多くあるため、サーバー内でパッケージ導入してしまえば大抵のアプリケーションは動作します。

例えばMacではお馴染みのHomeBrewがレンタルサーバーに導入できるため、好きなアプリケーションを導入するのは非常に簡単です。

あくまで、レンタルサーバーの利点としての

  • 管理してくれる

所を最大限活用していきたいので、自分自身で導入したパッケージは公開環境では使用しないのが無難なため、開発環境用途やバッチ処理のみで使用するをお勧めします。

コードエディタツールであるVSCodeを使っている人であれば以下の記事も参考になるかもしれません

開発環境としての使いこなしとしては、クライアント側で実行されるJavaScriptをビルドする用途で使用したり、Pythonを導入して機械学習の勉強に使うのもありかもしれません。

あくまでレンタルサーバーは共有環境になるため、公開環境で使用するために常時プロセスを立ち上げるのはお勧めできません。

2.不足機能はマイクロサービスを使用

レンタルサーバーの弱点としては自由にパッケージを使用出来ない問題がありますが、AWSやGCPのようなマイクロサービス環境が充実しているため、特定のマイクロサービスのみ使用する使い方が出来ます。

たとえば

  • メール/プッシュ通知の大量処理だけSQSでキューを貯める
  • 数百万件レベルの大量検索はelasticsearchを使用
  • PythonコードをLambdaで実行した結果をDBに格納して管理者が閲覧するだけのサービスを運用

など、VPSなどでサーバー丸ごとを契約して管理し続けるよりも、ピンポイントでマイクロサーバーを使用しつつ、webブラウザで確認する基本的な部分はレンタルサーバーで配信するという使い方をすることが出来ます。

レンタルサーバーを使うプログラマー、最後に

以上、レンタルサーバーを使いこなすプログラマーの心意気でした。このような考えの管理人が記事を更新していきます。興味がある方は是非今後の投稿をご覧になっていってください。