MustAttack SNSシステム運用の振り返りと新しい基盤のアイディア

今日はウォーゲーマ―のソーシャルネットワークサービス MustAttack SNS (以降 MA) についてシステム運用の立場から標題の内容をお話できればと思います。

※ 本記事は War-Gamers Advent Calendar 2018 参加記事です。

はじめに

まず、システム運用に参加するきっかけをお話し、現在のMAのシステム概要を説明します。どのくらいの利用者によって使用されているのか概観します。タスクフォースチームが行った三つのシステム構成変更作業を振り返り、最後に新しい基盤のアイディアについて頭出しをしてみました。

きっかけ

そもそもなぜ私がMAサービス提供基盤の運用の一端を担うようになったのか。

確か2013年年始の頃だったと思いますが、MAの挙動が不安定になったことがありました。

その際、サーバー管理委員会というコミュニティを作成しタスクフォースチームを編成してトラブルシューティングが行われました。そのメンバになったことがきっかけでした。

f:id:iriyak:20181216172036p:plain

トラブルシューティングそのものは二か月程度で完了しチームも解散する予定でした。

しかし、課題恒久対処にはハードウェア、ソフトウェア構成を最新化する必要が生じ、ではそのシステム移行もその延長で行いますか、とタスクフォースチームのタスクスコープを見直しチームを存続し現在に至っています。

Pegassacityさん, HAさん, いりやっくの三名がアクティブなメンバーとして運用実務を行っています。

システム構成

現在のシステム構成について説明します。

IaaS構成

サービス提供基盤は、使えるネットの提供する IaaS を使用しています。

初期構築時に本IaaSベンダの仮想サーバが使用されました。同じベンダだとデータ移行や契約移行など検討がしやすいと思われたので、現在も使えるネットを使用しています。

ハードウェア構成

Cloud VPS 2G Linuxを契約し、以下の仮想サーバを使用しています。

  • CPU 2コア (Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz)
  • Memory 2GB
  • Disk (HDD) 100GB (そのうち34GBを使用)

ソフトウェア構成

OS, ソフトウェア構成は以下の通りです。MAはOpenPNE 2ソフトウェアをカスタマイズして構築されています。

ソフトウェアはシングルサーバ上で動作していますが3-tier Web Architectureに準じています。

リソースの維持コスト

以下の維持コストが発生しています。

  • Cloud VPS 2G Linux 契約
  • ドメイン登録契約 (mustattack.com, mustattack.net)
  • 日次データバックアップ先サーバ契約
  • いりやっく自宅機器およびインターネット回線契約
  • タスクフォースメンバの人件費

システム運用

日々のシステム運用は、メールベースでの意図しない通知有無の確認とデータベースダンプの日次バックアップです。

日次バックアップは、mysqldumpコマンドによるダンプ (※) を対象とし、自宅macminiとインターネット上の仮想サーバの二拠点に対して以下のようなスケジュールで転送しています。ダンプのサイズは現時点で約 8.5GB、シーケンスの Step 01 は 20-25分程度、Step 02 は 12-15分程度で処理・転送を完了しています。自宅macminiは数世代を保持しています。

f:id:iriyak:20181216172307j:plain

OpenPNEはシステム上の任意のデータを(ファイルではなく)データベース内に格納するようになっていて、その全ダンプを出力をすればゼロから再構成できるようになっています。前述 8.5GB は 2008/3 からの全投函データが記録されています。

どのくらいの利用者に使用されているか

次に、MAがどのくらいの利用者に使用されているのか基礎データをご紹介します。

ユーザアカウント数

まず2008/3から2018/12/16までのユーザアカウント数1,527 名の世代分布は以下の通りです。

f:id:iriyak:20181216172439p:plain

新規登録アカウント数

2008/3から2018/12/16までの新規登録アカウント数の分布(月)は以下の通りです。直近2年では一か月あたり平均5名を記録していました。

f:id:iriyak:20181216172125p:plain

ページビュー数

2008/3から2018/12/16までのページビュー数の分布(月)は以下の通りです。直近2年では一か月あたり平均95,000ページビュー数を記録していました。

f:id:iriyak:20181216172150p:plain

システム構成変更

タスクフォースチームが主導して行ったシステム構成変更は三つありました。

2015/11/14 第一回目仮想サーバ移行

移行の背景

2013/1頃にシステム運用に関連する障害が何度か報告されました。脆弱性をついた攻撃を受け、システムの内部状態が信頼できない状態になることもありました。

移行の目的
  • ディスク容量の確保
  • システムの脆弱性への対応容易性の向上
  • OpenPNE 2 既知不具合の解消
移行のスコープ
  • 新しい Virtual Private Server の作成
  • ブロンズ VPS 4G CentOS 6 (Memory: 512MB, Disk: 20GB)契約
  • 環境構築 (CentOS 5 から CentOS 6 ベースへ)
  • OpenPNE 2 世代のターミナルリリース (ver.2.14.7.3) へのアップグレード
  • MustAttack SNS 既存データ移行

2017/1/31 HTTPS全面移行

移行の背景

任意のデータ通信は HTTP で行われており、FORM ベースのログイン ID, PW なども暗号化されず流れていました。盗聴のリスクに対してシステム的な手当てがなされていませんでした。

移行の目的
  • 通信路の暗号化
移行のスコープ

2018/9/8 第二回目仮想サーバ移行

移行の背景

当初の目的は TLS ハンドシェイクにおける TLSv1.0, 1.1 のサポートを終了することでした。しかしながら現行仮想サーバ上のApache 2.2.15がそのTLSバージョンを抑止指示するための機能拡張をしていないことが判明。Apache 2.4.6は指示可能。また仮想サーバのストレージ容量も枯渇していないもののあまり猶予はない状況でした。

移行の目的
  • 暗号化された通信路の頑健度強化 (TLS v1.0 及び TLSv1.1 のサポートを終了。第三者による通信の盗聴や改ざんのリスクのさらなる低減)
  • ディスク容量の確保
  • システムの脆弱性への対応容易性のさらなる向上
移行のスコープ

(サービス提供基盤)

  • CentOS 6 仮想サーバをサービスアウト (centos-release-6-9.el6.12.3)
  • CentOS 7 仮想サーバを新設しインサービス (centos-release-7-5.1804.4.el7)
  • 仮想サーバのリソース増強 (Memory 512MB から 2GB、Disk 20GB から 100GB)
  • Apache httpd を 2.2.15 から 2.4.6 へアップグレード
  • PHP を 5.3.3 から 5.4.6 へアップグレード
  • MySQL を 5.1 から MariaDB 5.5.60 へアップグレード
  • PostFix を 2.8.4 から 2.10.1へアップグレード
  • OpenSSL を 1.0.1e-fips から 1.0.2k-fips へアップグレード
  • OpenPNE 2 ターミナルリリース (ver.2.14.7.3) の Apache 2.4.6, PHP 5.4.6, MariaDB 5.5.60 対応のための移植
  • MustAttack SNS 既存データ移行

(TLS)

  • プロトコル: TLSv1.2 のみサポート (SSLv2, SSLv3, TLSv1.0, TLSv.1.1 をストップ)
  • Chiper Suites: AES256+EECDH:AES256+EDH:AES128+EECDH:AES128+EDH のみ許可

新しい基盤のアイディア

三回のシステム構成変更をへて当面の運用上の課題に対処するための土台作りはできたように思います。

ただ、未来もこの基盤を使い続けるのは筋の良い選択だろうか。システムの運用に携わった立場からそのようなことを考えています。

OpenPNE のようなプラットフォームが昨今の状況から多様なユースケースのニーズに応えられなくなっているように個人的に感じていたからです。

ここでは、システム運用から脱線して、以下のようなユースケース要求を実現する新しいサービス提供基盤を今設計するならばどんな風なものになるか、アイディアの頭出しをしてみました。

個人の発信

  • 日記
  • メッセージ
  • レビュー

近しい人達との集まり (Local/Closed User Group)

  • コミュニティーの作成
  • 掲示板の運用
  • イベントスケジュールの運用

文書、データの格納

これらのユースケース要求に対して、以下のようなサービス提供基盤がすでに利用可能です。すでに積極的に活用されている方もいらっしゃいます。

私は、OpenPNE 3のようなオールインワンのような形態はあまり好みではありません。

ユースケースに合わせて適宜道具を使い分けする(あるいは取り換える)といった緩い連携をしながらシステムと向き合うのがいいかもしれないな、と感じています。

もちろん、サービス提供を突然終了する場合も現実に発生していますので、特定のシステムに強依存することによるリスクには注意をしながら。そして現行のOpenPNE 2ベースの基盤は凍結し一定期間リードオンリーで公開後に役目を終わらせる。

コミュニケーション

ゲームを実況

ゲームをプレイ

オンラインストレージサービス

ドキュメンテーション

最後に

以上、MA のシステム運用の立場から普段あまり話題にのぼることのないお話をしました。

楽しんでいただけたら幸いです。