エンジニアならウェブサーバーのひとつでも自腹で立てて運用すべき理由と、サーバー環境の選び方
なんかスイッチが入ったので書いてみる。
目次
- 1 技術的なレイヤーは掘り下げるべきなので、ソフトウェア・エンジニアだってサーバー運用は経験すべき
- 2 ローカルの仮想環境にインストールとかは意味がない
- 3 強制的に運用しなければいけない状況を作ること
- 4 自腹なのはコストを意識するためと、自由になるため
- 5 初めてならVPSだ
- 6 自宅サーバーはより低レイヤーを経験できるが、高コストで面倒が多い
- 7 初めてだとOSの再インストールは絶対にしたくなる
- 8 専用レンタルサーバーは、無い
- 9 仕事でAWSを使ってるならEC2もアリ
- 10 EC2以外のクラウドのメリットはあまり無い
- 11 OSは仕事で使っているOSにしておこう
- 12 というわけで
- 13 追記:はてブやtwitterで沢山のコメント頂いたので反応してみます
- 14 追記:雑感
技術的なレイヤーは掘り下げるべきなので、ソフトウェア・エンジニアだってサーバー運用は経験すべき
ウェブ系のソフトウェアエンジニアを職業としているのであれば、ウェブサーバーのひとつやふたつは自腹で立てて、実際に運用したほうがいい。
なぜかというと、技術的な仕事にはなんでもあてはまることなんだけど、技術的なレイヤーを掘り下げることには大きな意味がある。他にもやったほうがいいことは多々あるにせよ、レイヤーの掘り下げは特に重要だ。
ウェブ系ソフトウェアエンジニアであれば、仕事で使っているサーバーや言語を支えているOSレイヤーやミドルウェアのレイヤーが、どうセットアップされて、どう管理されているのか、知っているのと知っていないのでは、ソフトウェアの開発効率や、発想の広がりに大きな差が出てくる。また、インフラ担当とのコミュニケーションもしやすくなる。
もちろんプログラミングの経験が乏しいうちはいいけど、ちょっと慣れてきたなーと思ったら、ぜひ考えてみてほしい。ありものをただ使うだけでは、大きな成長は望めないのだ。
というわけで、以下のサーバー環境選びは「ウェブアプリケーション開発に近い部分の運用にたどり着くための最短ルートを求める」ことを前提とする。アプリから遠い部分はなるべく省力化した。(追記)
ローカルの仮想環境にインストールとかは意味がない
サーバーは、インターネットから直接アクセスできて、24時間365日稼働するサーバーにしよう。サーバーとは、運用してこそ意味のあるものだからだ。
なので、「ローカル環境のVirtualBoxにCentOSをインストールしてApacheのWelcomeページを表示してみた。」とかは論外である。ローカル環境のVirtual Machine上では、肝心の運用ができないので、意味がないのだ。プログラミングでいうHello Worldの域も達していない。
もちろん開発環境として使ったり、試験的に何かをインストールするのにはいいし、むしろ使っていくべきなので、ローカル仮想環境自体は活用してよい。最近はvagrantが超はかどる。
強制的に運用しなければいけない状況を作ること
ちゃんと運用するために、立てたサーバーにブログでもWikiでも、インターネットに公開するサービスを何か乗せて、メンテナンスし続けなければいけない状況を作り出すこと。
メンテナンスし続けることで、バックアップ、セキュリティ、ミドルウェアのアップグレード、バージョン管理、サーバーの引っ越しなどなど、サーバーを立てるだけではできなかった「運用」まわりの経験ができる。
さらにドメインとDNSも必要になってくるので、そのあたりの知識も美味しい。ドメインなんて年間1000円以下だし、DNSはたいてい無料でちょっとしたのがついてくる。ぜひとっておこう。
自腹なのはコストを意識するためと、自由になるため
自腹で立てるのは、コストを意識すべきだからだ。
もしかしたら勤め先の会社から「サーバー用意したから好きにいじっていいよー」みたいなサーバーを用意してくれたりするかもしれない。それはそれでありがたいけど、コスト意識が無くなるのでよくないし、自前のブログとか立てるのも、なんとなく微妙な感じになる。
(追記) 管理者が知人ってのも、何かあったときに管理責任を負わせる感じになって嫌だし、プライベートなデータや鍵、証明書類を格納するのも、なんとなく気持ちが悪い。管理者は自分もしくは第三者のほうがいい。
(追記) あと、自由を得るために必要なコストでもある。誰かが用意してくれたサーバーだと、許された範囲外のことをやろうとするときに許可が必要になるし、いつ無くなるかもわからない。あと自分で支払っていると「俺のもの」感があって、愛着も湧くってもんだ。
なので、やるなら自腹に限る。
初めてならVPSだ
さて、自腹でのサーバー運用の必要性がわかったところで、サーバーをどう立ち上げるか。一昔前なら、OSから選べるサーバーを運用するとなると自宅サーバーか専用レンタルサーバーくらいしか選択肢がなかったけど、今は色々ある。ざっと挙げてみよう。
- VPS
- 自宅サーバー
- 専用レンタルサーバー
- Amazon EC2
- その他のクラウド
そして今回必要な要件は以下の通り。
- 24時間365日稼働
- OSの再インストールがしやすい
- 価格が安い
- 1台あればよい
初めて運用するなら、VPSがおすすめだ。この中で最も低コストで、今回の要件に最もマッチしている。コストは月額1000円前後で始められる。
VPSのサービスはさくらのVPSがこなれていてよい。今ならGMOのConoha VPSがVPS同士のプライベートネットワークを組めるので、複数台構成だって可能になるけど、最初は1台だけだし、べつに気にしなくていい。
VPSサービス自体は他にもいろいろある。海外に目を向ければかなり安いものもあるらしい。
ちなみにVPSサービスを選ぶ際は、コントロールパネルからOSの再インストールが手軽にできることを条件にしておこう。理由は後述する。
自宅サーバーはより低レイヤーを経験できるが、高コストで面倒が多い
自宅サーバーも条件さえ整うならありだ。ハードウェアはさらに低レイヤーな部分だからだ。
自宅に置くマシンは基本的になんでもいい。NECやDELLの低騒音な格安サーバーマシンを買ってもいいし、PCを自作したことなければ、自作するのもハードウェアの知識がつくのでお勧めだ。
ただ、インターネットに公開し続けるサーバーを自宅で運用するとなると、電気代だけでVPSの月額費用を軽く超えるし、固定IPもできればほしい。固定IPはプロバイダが限られるし追加料金を取られることが多い。
そして真夏は温度管理が心配で、火災リスクだってある。OSの再インストールもめんどくさい。初期費用もこの中ではかなり高いほうだ。
僕も自宅サーバーでブログやサービスを運用していたことがあるけど、引越しや震災の停電のときは本当にめんどくさいことになったので、公開サービス用に自宅サーバーを使うのはもうありえない感じである。
初めてだとOSの再インストールは絶対にしたくなる
さて、ここでVPSの方で条件にしたOSの再インストールについて説明しよう。
OSの再インストールってそんなに頻繁にやるの?と疑問に思うかもしれないが、初めてのサーバー運用ではOSの再インストールは気軽にできたほうがいい。というか、初めてだと絶対にOSを再インストールしたくなる。むしろすべき状況に陥る。
なぜかというと、初めてのサーバー設定や、ミドルウェアのインストールは、何をどうやったのかわからなくなって戻せなくなるからだ。全てメモしていても、戻せるものもあれば、戻すこと自体が困難になっている状況もありうる。
その点、コントロールパネルからのOSの再インストールに対応したVPSならブラウザからポチポチ再インストールできてお手軽である。
専用レンタルサーバーは、無い
専用レンタルサーバーは、物理的なサーバーを一台まるごと借りるサービスで、物理的なマシンリソースを独占できて、スペックもはっきりしているのがメリットだ。
ただし価格は最も高いし、OSの再インストールは基本的に自分でやれないし、別途費用がかかったりする。本気で安定したサービスを運用したいとかでなければ使うメリットは無い。
よって今回は専用サーバーは除外してよい。
仕事でAWSを使ってるならEC2もアリ
Amazon EC2もコスト的にも使い勝手的にもそれなりによい。ただしVPSと同価格帯に収めようとするとスペックはかなり落ちる。
ちなみにEC2独特の作法はそれなりに複雑で、今回の目的ではデメリットとなるけど、そんな複雑なEC2の経験はメリットでもある。何しろEC2(AWS)は広く使われているから今後の仕事に結びつきやすい。
すでに仕事で使われているサーバーにEC2が含まれているのであれば、それも理由になる。コストあたりのスペックさえ我慢できるのなら、選択肢に入れてよいだろう。
EC2以外のクラウドのメリットはあまり無い
EC2以外のクラウド、たとえばさくらのクラウドやGMOクラウドなどはどうか。今回の目的からいうと、結論として価格的にVPSより高くなるだけだ。AWSほど使われていないので、経験が仕事に結びつきにくかったりもする。
クラウドの利用料は時間や日あたりの単価なのでスポット的に使えば安上がりだけど、今回は運用し続けなければいけないので、長期間だとコスト的に負ける。だいたい、VPSの2,3倍ぐらいの価格感だと思えばよい。
ちなみにEC2と比較した場合は、機能はぐっと少なくなるが、CPUやメモリのスペックだけで比較すると、EC2よりは安い傾向にある。EC2と違ってほぼ完全に自由にスペックをカスタマイズできるのもいい。ただ、実際に載せるサービスがこれからという段階では、カスタマイズの方向性が定まらない。
さらにいうと歴史自体が浅く、不安定なイメージがあるので、まだまだ人柱的な感がある。
というわけで、積極的な選択肢としては微妙である。
OSは仕事で使っているOSにしておこう
仕事で使っているOSを選ぼう。直接役に立つし、わからないことがあったら質問できる人が身近にいることのメリットは計り知れない。
でもFreeBSDは特別な理由が無い限りやめとこうw 最近はあまりないかもしれないけど、2003年ごろ、仕事でFreeBSDを使っていたので、初めて立てたサーバーらしいサーバーにはFreeBSDを選んだけど、後になってCentOSに移行したとき、茨の道を選んでいたことに気づいた。
OSレイヤーはそれぞれ個性があるけど、基本的にやることは同じなので、まずは身近なLinux系OSにしておこう。他のOSに興味を持つのは、慣れてからでもいいと思う。
というわけで
レッツサーバー運用!
追記:はてブやtwitterで沢山のコメント頂いたので反応してみます
- タイトルの「エンジニア」って対象広すぎる気がするんだけど
- はい。最初は「ウェブ系ソフトウェアエンジニア」って入れてみたんですけど、やたら長過ぎるので、あえて削って本文序盤で説明しました。隙が無くて良いタイトルをつけるのは難しいです…。
- 生半可な知識で立てると踏み台にされちゃわない?
- もちろん踏み台にされることは避けるべきですが、仮にそうなったとしても、許容できないリスクじゃないと思います。ちなみに変なトラフィックが出てたらレンタルサーバー事業者やプロバイダから連絡が来ます。ええ、以前にプロキシをうっかり公開しちゃってスパムに使われました。その際はすみませんでした…。
- VPS(レンタルサーバー)とかヌルくね?やっぱ自宅サーバーっしょ
- 世の中マッチョな人ばかりじゃないので、ぬるま湯から始めてもいいと思います。マッチョな方は自作PCで自宅サーバーでどうぞ。
- 自宅サーバーなんて使い古しのPCとかノートPCとかでいいじゃん
- 自宅がよくない理由は他にもいろいろ。スペースの専有とかね。あと、いきなりノートPCでサーバーOSはやめたほうがいいです。NICが有線無線ともに標準で対応していなくてNICの認識に四苦八苦します。
- 無料DNSとかヌルくね?
- DNSサーバーの設定なんて、ソフトウェアエンジニアがやる機会なんてほぼ無いですから。とりあえずコンパネからドメインをIPアドレスに紐付けたり、CNAMEを作ってみた、とかでいいですよ。上位レイヤーだけでも、SPFの設定とかウェブで大事なことも学べますよ。
- さくらのVPSがなぜこなれてるの?
- 格安VPSが最初に流行ったのはさくらのVPSですし、ユーザー数が多いです。実際に僕も何台も使い倒してきましたが、サーバーもコントロールパネルも比較的安定してて、UIもこざっぱりしているので、そう書きました。
- VPSのステマ?
- 勧められたものを何でもステマと思うのはとても慎重な姿勢だなあと思いますけど、金のためにこんな暑っ苦しい長文なんて書けませんて。あっ、もしさくらさん見てたらVPS1年分タダにしてください。
- VPSじゃないとダメなの?
- そんなことないです。でも、「じゃあ結局どれがコスパいいの?」って聞かれたら、VPSって答えます。
- ローカル環境も使うべきじゃね?
- 使っちゃだめとか書いてないですし、むしろ推奨してるのでよく読んで下さい。「運用」を前提としたときに、ローカルじゃモチベーション続きませんよ、という話です。
- FreeBSDの扱いがひどい
- すみません。それにしてもLinuxに移行したときの構築しやすさ、情報の集めやすさは衝撃的だったんで、ぬるま湯から始めたい人がうっかり選んじゃったらかわいそうだなと。
- OSインストールは自前でやってみるべき
- そうですね。「OSインストールしてみる」だけであれば、ローカル仮想環境や物理環境でやってみるのもいいんじゃないでしょうか。
- どう役に立ったの?
- まさに僕がプログラミングしかできなくて、専用サーバーを借りてひととおりやった後に、「これを知らずにウェブアプリケーション開発してた過去の発想の貧弱さ」を恥じましたね。あとはもう、無くてはならない経験になりました。なので書きました。
- 他の経験とどう違うの?
- OSSのソースコードを読むとか、そういうのももちろん良いです。ただ、ウェブサーバーの運用経験は、ウェブ系ソフトウェアエンジニアにとって開発時の実用面への貢献に即効性があり、かつ持続性もあるので、まあなんというかコスパがいいんです。
- セキュリティについてもっと説明したほうがいいんじゃない?
- このエントリでそこまで説明するのは長過ぎますし、「サーバーの選び方」なので。
- CentOSがお勧めなの?
- べつになんでもいいと思います。身近なLinux系OSでいいですよ…って書いてあるんだけどなー。僕の初めてのLinuxは情報量の多いCentOSで始めましたけど、いろいろ試してみて、今は個人サーバーに関してはUbuntuを使ってます。
追記:雑感
- 「ソフトウェアエンジニアが初めてサーバー運用してみる」って話なこと忘れてないですかねぇ。そりゃちゃんとやるなら他にやり方はあります。
- 「マッチョであるべき」みたいな思想はハードルを上げるだけで、やりたいなーと思ってる人を諦めさせるだけだと思うんですよね。ネタかもしれないですけど。
[…] 境の選び方http://www.akiyan.com/blog/archives/2013/08/software-engineers-should-operate-a-web-server.html […]
[…] の選び方 http://www.akiyan.com/blog/archives/2013/08/software-engineers-should-operate-a-web-server.html […]
[…] […]
[…] こんな記事を見つけました。 エンジニアならウェブサーバーのひとつでも自腹で立てて運用すべき理由と、サーバー環境の選び方 […]
[…] […]
[…] エンジニアならウェブサーバーのひとつでも自腹で立てて運用すべき理由と、サーバー環境の選び方 – akiyan.com […]
はじめまして。
記事拝見させて頂きました。
この前お話ししたウェブ屋さんは、サーバ周りがからっきしで、パーミッションとユーザについてさえも知りませんでした。
さすがにびっくりしましたよ・・・本気運用はまた別としても、経験しておくべきことだと思います。
ちなみに私は(しいておすすめするならば)自宅サーバ派です。
理由は、他人様に迷惑かかる設定にしてしまった経験が多々あり、ケーブル引っこ抜けば外と隔絶できるというメリットを享受するためという・・・・・・・・。
たしかにマッチョな感じになりますけど、マッチョに(物理的にも)破壊できるという(笑)。
お目汚しでした。