WEB開発参考例、WordPressとWEBサービスを一元管理

WEBサイト開発の参考例、playbox編の画像 技術コラム
cattle
cattle

playboxのサイト構造を例に、wordpressと他サービスを組み合わせ一元管理する方法をご紹介致します。皆さんが自身のオリジナルサイトを作る際、少しでも参考なれば嬉しいです。

・複数サービスを組み合わせたWEBサイトの構築方法
・大量アクセスに耐えられる構造(ロードバランサを用いた設計)
・継続的な開発、メンテナンス性の高め方

環境構造の設計図

・全てGCP (Google Cloud Platform) 上で構築しています。

playbox環境構造図

サービスの切り替え

ロードバランサの時点で、URLに応じてバックエンドサービスを切り替えています。

SSL (https対応)

SSL証明書はロードバランサで管理し、各種サービスとはhttp通信を行っています。
(クライアント → ロードバランサはhttps、ロードバランサ → インスタンスはhttp)

このような構造であれば、インスタンスごとにSSL証明書を複数管理せずに済みます。

イレギュラー対応

リアルタイム抽選は、WebSocket (socket.io) を利用しています。オートスケール対応の為、外部に別途Redisサーバーを設ける必要がありました。

※ Redisにはセキュリティホールが見つかっており、近頃ハッカーの攻撃が凄まじい事になっています。関連ポートは、一瞬たりとも外部公開しない様にご注意下さい。

具体的な運用方法

運用しながら開発を続ける流れ

本番環境、ステージング環境、テスト環境(ローカル)を用意しています。

ローカル環境でロジックを構築し、ステージング環境で動作確認、問題無ければ本番環境を更新という流れで開発を行っています。不要な時は、ステージング環境インスタンスの稼働をストップさせる事で、ランニングコストを節約するようにしています。

プロジェクトのバージョン管理

全てGitでバージョン管理しています。(wordpressを含めて各種サービスごとにリポジトリを分けています。)

※ バージョン更新作業に関しては、オートスケールによる同期ずれ、更新作業の手間を考慮する必要がありました。この解決策として、Cloud APIを利用して、各インスタンスグループ内の全インスタンスの内部IPを取得し、外部からシェルスクリプト(git pull)を実行させています。

イレギュラー対応

wordpressは、アップロードした画像、記事情報は外部で管理出来ているのでスケーリングの際に問題になりません。しかし、プラグインの管理は各インスタンスごとの管理になってしまっているので、追加/削除など修正した際は必ず同期する必要があります。

ご質問、ご相談はこちら

ページ下部のコメント欄、twitter、またはお問い合わせから、お気軽にご連絡下さい。

コメント