実践的インフラ監視&運用 - 4000万人以上のユーザーに快適なサービスを提供するピクシブの裏側
大規模サービスを安定運用するコツってなに?実運用に基づく知見をピクシブ株式会社のインフラエンジニア、末吉さんと小出さんに聞きました。
- ピクシブのサービスを支えるサーバーは大部分がオンプレミス
- 監視はNagiosとMuninでシンプルに
- 多数のリリースを支える独自のデプロイ手法
- 運用上のスペックは開発者との綿密なやりとりで決める
- 開発者と“温度感”を共有したい
システム運用は、生き物です。
人気が出ればリクエスト数は急上昇。経年劣化でサーバーが壊れることもある一方で、次々と新しいサービスも展開しなければなりません。規模が大きくなると、システムを障害なく運用することは至難のワザです。
大規模サービスを安定運用するコツは何か──その秘訣を探るべく、ピクシブ株式会社のインフラチームで活躍する2人に疑問をぶつけてみました。ユーザー数が4,000万人を超えた「pixiv」を、運用・監視する現場のノウハウとは。

- 末吉剛(すえよし・ごう/
- ピクシブ株式会社インフラ部所属。2018年7月入社。アプリからインフラまで、サーバーサイドを幅広く手がける。rubicure、Itamae、chatwork-rubyなど、多数のOSSを公開している。
- 小出周之(こいで・ちかし/
- ピクシブ株式会社インフラ部所属。2018年8月入社。サーバー構築・運用、システム改善など、オンプレミス環境メインで、さまざまなインフラ運用を手がける。
ピクシブのサービスを支えるサーバーは大部分がオンプレミス
──ピクシブ社と言えば、pixivをはじめBOOTHやVRoidなどさまざまな人気サービスを展開しておられます。まずは、これらのサービスを支える「インフラの全体的な構成」を簡単に教えていただけますか。
小出 フロントサーバー(ロードバランサー)、AP(アプリケーション)サーバー、DBサーバーというベーシックな3層構造が基本です。
ユーザーからのリクエストは、まず、DNSラウンドロビンで、それぞれのフロントサーバーに分散され、Nginxロードバランサーで受けます。ロードバランサーには、配下のAPサーバー群がアップストリームとして定義してあり、それぞれのAPサーバーに負荷分散しています。APサーバーは、基本的に1サーバー1機能になっており、台数としては AP > フロントサーバーで構成されています。
DBサーバーはマスタースレーブ構成で、前段にLVSを配置して負荷分散しています。DBサーバーは全サーバーの中で最も台数が多く、役割に応じて細かく系統を分けて構築しています。また、DBとは別にセッション情報の管理として、KVSのRedisサーバーを使っています。
末吉 画像のキャッシュには、ピクシブとさくらインターネットさんで共同開発しているImageFluxという画像変換サービスのオンプレミス版を利用しています。これが、いわゆるプライベートCDNとして機能しています。
──サービスが大きいですから、サーバーの台数も多くなりそうですよね。運用はクラウドですか?
小出 サーバーは全部で300台ほどありますが、その9割がオンプレミスです。サービス環境ではコンテナや仮想化技術を使っておらず、まさに物理的なサーバーとして構成しています。クラウドはPawooなどの一部サービスや、短期的なイベント系など、突発的に負荷が高まるサービスや新規サービス立ち上げ時に利用しています。
──9割がオンプレミスなんですね! 運用は大変ではありませんか?
小出 大変ですね(笑)。ディスクやサーバーが故障するリスクもありますし……。もちろん故障リスクを前提にして横に並べているので、同一の系統内で数台は壊れても問題ない設計にしてあります。
なお、データセンターとはマネージド契約をしているので、故障時の対応はデータセンターに任せておける体制があります。僕らが直接ディスクを交換することはありませんし、サーバーのキッティングについても、依頼事項をまとめて申請すればデータセンター側で対応してもらえます。
末吉 そこから先は、僕らの作業です。と言っても、Ansibleを使って自動化しているので、一発でサーバーを構築できます。システムの構成変更が生じたときも、AnsibleのPlaybookを修正して適用するという流れになります。OSやミドルウェアのアップデートも同様です。

──データベースのバックアップは、どのようにされていますか?
小出 DBサーバーは、マスタースレーブによるレプリケーション構成をとっており、そのうちの1台を、ユーザーのリクエストを受け付けないスレーブサーバーとしています。このサーバーのデータを定期的にハードディスクに書き出すことでバックアップとしています。バックアップには、創業以来10年分のデータがぎっしり詰まっています。
──いままでデータベースが壊れたことはありますか?
小出 幸い、自分が入社してからはデータが壊れたことはありません。DBサーバーが落ちたということもありませんが、重いクエリが発行され詰まるということがまれにあります。しかし、仮に特定サーバーで詰まったりDBが落ちたとしても、障害が発生しているDBをLVSから切り離す独自スクリプトが動いているので、ユーザーに影響が出ることはありません。
──相当なアクセスがあると思うのですが、どれくらいの規模なのでしょう。
小出 あまり詳しくは言えませんが、DBサーバーの場合、平均すると大体秒間6万クエリで、ピーク時は秒間10万クエリ以上まで増えます。これはDBサーバー1系統分なので、システム全体で言えば、もっともっと大きな値になります。
──やはりすごい数字ですね……。安定して動かすのも大変そうです。
末吉 システムは安定していますが、Twitterなど外部でバズったりした場合ユーザーリクエストが急増しアラートが上がってくる、という全く予想がつかない局面もやはりあります。そういった場合でも迅速に対処し、そのフィードバックを随時行うことで日々運用を改善しています。
監視はNagiosとMuninでシンプルに
続きをお読みいただけます(無料)。

- すべての過去記事を読める
- 過去のウェビナー動画を
視聴できる - 企業やエージェントから
スカウトが届く