私のブログのシステム構成

IT技術 雑記 教養としてのテクノロジー入門

この記事について

プロフィールにも書いていますが、このサイトはブログサービスや、WordPressなどを使わず、ほぼゼロから開発しています。

先日以下の記事を書きました。

この記事では上記の記事の実例として私のブログのシステム構成を簡単にご説明しようと思います。

詳細な採用技術などはセキュリティ上説明できないものもありますが、伝えても問題ものはなるべくお伝えしたいと思います。

目次

全体構成

全体構成は以下のようになっています。

クリックすると拡大できます

Active/Stanby方式というシステム構成をとっています。

普段はActiveシステムだけをDNSに登録し、Activeシステムだけで運用しています。ただし、Activeシステムに不具合が発生したり、システムにメンテナンスが必要な時は、StandbyシステムをDNSに登録し、逆にActiveシステムはDNSから切り離します。

なおStandbyシステムはこのほか、ステージング環境という役割を持っています。新規機能開発時の試験環境として、先にステージング環境のStandbyシステムで新機能のリリースをします。ここで動作チェックをおこない安全性を確認してからActiveシステムに繁栄します。※実際はそれほど大規模な修正をすることがなく、ここまで丁寧に作業することはほとんどないですが...

ちなみに、インフラサービスはさくらVPSを利用しています。やや専門的な記事ですが、以下の記事に選定に至った経緯があります。もしもご興味がありましたらこちらもご覧ください。

考慮した点

システム構成の構築にあたって考慮した点は以下です。

低コスト運用・ミニマム運用

お金と時間をかければ、もっと多様なサーバで高機能なシステムを作れます。もっとも個人運営システムなのでお金も時間もあまりかけられません。その点で今の構成が最大限の低コスト運用・ミニマム運用でした。

ちょっとでも発展性、融通がきくシステムになるように

究極、ブログ運営だけを目的にするならWordPressも自動で入れてくれるレンタルサーバーの選択肢があります。

しかしながら、WEBシステム技術者として、ゼロから構築したい、学習・実験的なこともしたい、ブログ以外のシステムの開発もしたい、あわよくばシステム増強もという思いもありました。

そのため、よくあるWEBシステムの3層構造構成は維持しようということでこの構成になりました。

最低限の冗長化を意識

正直のところ個人運営なので、トラブルがあっても特別誰かに対して責任を追うわけではありません。ですが、データ消失、24時間365日稼働はできるかぎり実現したいという気持ちで最低限の対策はとっています。

できる限りの24時間365日運用、最低限の即時復旧ができるように

前述のActive/Standby構成がポイントです。自動復旧は実現していませんが、とりあえず不具合が発生した時にStandbyシステムに切り替えてすぐに復旧できるようにしています。なお、さくらVPSの監視機能を利用してもしもシステムがダウンした時はアラート通知が来るようにしています。

データを消さない

Active/Stanbyシステムの間は原則連携はありません。例外として、データベースだけは定期的にActive機のバックアップをStanby機に送るようにしています。一応ブログの記事は一種の資産であり、消えるのは絶対さけたいと考えています。そのためバックアップが確実に行われていることを確認するためにバックアップ処理単体も監視しており、状況が通知として送られるように設定しています。

それぞれのサーバの役割

最後にそれぞれのサーバの役割をご紹介します。

リバースプロキシサーバ

リバースプロキシサーバとは、メインWEBアプリケーションサーバの前に置き、唯一の外部アクセス受け付け口としての機能を果たすサーバです。基本は外部から受け取った通信データをバックエンドのサーバに送るだけですが、以下の機能を持つことで安定したシステム稼働を支えています。

キャッシュ機能

キャッシュをリバースプロキシを持っています。キャッシュ有効期限内のアクセスは、ここで処理をユーザーに返してしまい、バックエンドには中継しません。このようにしてバックエンドサーバの負荷を最小限にします。

ロードバランス

必要に応じてここでロードバランスを行い、サーバのアクセスを振り分けて負荷分散を行っています。

セキュリティ対策としてのバリデーション

不正な通信があった場合、リバースプロキシサーバでアクセスを遮断してしまったり、有害なデータが送られた場合は削除し、安全なデータのみをアプリケーションサーバへ送ったりしています。

アプリケーションサーバ

現実的なブログシステムの中心機能と処理はここに集約されています。

データベースサーバ

データの保管をするサーバです。検索しやすく管理してくれます。また、このサーバが定期的にバックアップをとってStandbyシステムのデータベースに送っています。

終わりに

以上が私のブログのシステム構成でした。

ミニマムながらもある程度冗長性については対策とったつもりです。完璧な構成でこれまで何も問題は起きてません...と言いたいところですが、実は想定していなかったトラブルがあり、一度ピンチに陥ったことはあるのですが、それはまたどこか別の機会に別の記事で執筆できればと思います。

Photo by: Nicole De Khors on burst

 みやうデジタルラボ - にほんブログ村