WordPressをShifterへ移行した話

はじめに

はじめまして、今年1月からSREチームに加入した千明です。

SREと名乗っているものの、前職ではバックエンドエンジニアが本職だったこともあり、インフラ構築以外にもアプリケーションの改修もしたり、幅広く業務にあたっております。

まだまだSREとしてはひよっこですが、会社に貢献できるように日々努力しているところです。

今回は直近でコーポレートサイトをリニューアルしたこともあり、AWS上で管理していたWordPressをShifterへ移行をした話をしたいと思います。

andpad.co.jp

なぜ移行したのか

主な理由は、WordPressを面倒見るSREの人的コストを削減するためです。

WordPressは本体やプラグイン脆弱性が見つかることがあるため、最新の状態であることが推奨されます。

ですが、WordPressは更新頻度が高く、更新するにも事前検証が欠かせないため、自らが全ての面倒をみると多くの人的コストがかかります。

そうなると、ANDPADの成長にコミットする時間が減ってしまうため、外部サービスへ移行することとしました。

Shifterとは

ShifterはWordPressホスティングサイトの1つで、以下のような特徴があります。

  • WordPressのサイトを静的化したもの(Artifact)をCloudFrontで公開する。
  • Artifactは世代管理されていて、以前のバージョンにロールバックできる。
  • Artifactは公開前にプレビュー環境にて動作確認できる。

www.getshifter.io

ShifterはWordPressを直接公開しないので、WordPress本体やプラグイン脆弱性を心配する必要もないですし、投稿者が更新ミスをしてもプレビュー環境で気づくことができ、間違って公開してもロールバックできるので、SREが面倒を見なくても運用ができる仕組みが揃っています。

どうやって移行したのか

基本的にはAll-in-One WP Migrationプラグインを利用してサイトのバックアップを取って、Shifterへインポートするだけでした。

ja.wordpress.org

ただし、既存サイト側の問題でいくつか改修が必要なケースがありました。

  • 固定ページで動的にページ送りをしている部分が静的化の対象にならず、アーカイブページで作り直した。
  • 投稿アーカイブページを利用するために、functions.phpの中で明示的にページを追加する必要があった。
  • 動的フォームを利用するため、別の外部サービスが必要だった。(弊社ではformrunというサービスを利用しています。)

form.run

以上、移行する際に様々な問題がありましたが、ShifterではShifter-LocalというDockerで動くLocal環境が提供されているので、手軽に事前検証や改修を行うことができました。

github.com

また、どうしても困った時でも問い合わせすると1営業日以内に返信していただけるので、とても助かりました。

移行してどうだったか

まだ移行したばかりでまだ完全に手離れできていませんが、テーマやプラグインの更新作業も投稿者側でできるようになったので、運用が定着すれば、面倒を見ることはなくなりそうです。

更新内容は事前にプレビュー環境で確認できるので、万が一プラグイン側に問題があってもロールバックできるので便利だと思います。

現在取り組んでいること

現在はサイトの品質向上や冗長性を考慮して以下の2点に取り組んでいます。

アクセスログをDatadog Logsで可視化

最近ShifterのアクセスログをS3バケットへ出力する機能が追加されました。

アクセスログをDatadog Logsに投入して可視化することで、サイトの利用状況を分析したいと考えています。

www.getshifter.io

障害時の体制整備

Shifterが何らかの原因でサービス障害が起きてしまっても、ドメインを切り替えてサイトを公開できる体制を整備しています。

ShifterのWebhookを利用して、Artifactを自動で別のホスティングサービスへデプロイして公開する仕組みを検討中です。

おわりに

今回はWordPressの話でしたが、便利な外部サービスを利用することで人的コストを減らせることができました。

ANDPADもまだまだ成長段階で、サービス開発していくために多くの人手が必要なので、SREとして管理の手間が省けてとても助かっています。

ANDPADも建設業界の方々にとって、より便利なサービスにしていきたいですね!

f:id:yuichi-chiaki:20200603132532p:plain