Auto Scaling × ECS × EFS × WordPressでスケーリング可能なTech Blogはじめました

インフラ面の増強を容易にできる構成として、「Auto Scaling + ECS + EFS」にWordPressを載せる形を採択しました。Tech Blog開設の背景に加えて、なぜその技術を採択したのかをお伝えします。

こんにちは。aumoでサーバーサイドエンジニアをしている村田です。aumoでは定期的に提供サービス増えていく中、どのようなサービスが存在するのか、またどのような技術スタックをどのような経緯があって採択しているのかを広く発信するためにTech Blogを始めることにしました。

Tech Blogを開設する上での技術選定

まず、新しくアーキテクチャを構築する際には以下の2つを特に重視しています。

  • デファクトスタンダードであるか or デファクトスタンダードになりうるか
    • 対象の技術がエンジニア市場でニーズがあり、エンジニアとしての価値を高めることができるもの
  • 期限と工数の兼ね合いに問題ないか
    • 特に今までに採用したことない技術の場合は学習コストも工数に乗ってくるので注視

今までTech Blogを作りたくても時間を割くことができなかった状況の中、今回のタイミングでエンジニア広報に注力するという判断があり、Tech Blogを構築するための工数を確保することができました。

しかし、工数を割ける期間は1週間程度で、「期限と工数の兼ね合いに問題ないか」という点が特に重要でした。そこで今回の実装担当者の私が過去にWordPressの導入経験があり、確実に1週間以内で実装できてかつ、CMSのデファクトスタンダードであることからWordPressを採択しました。(WordPressについては後ほど触れます)

また、aumoのアプリでは外部サイトと連携して記事をRSSを通じて取込んで表示することをしており、連携したサイトの多くはWordPressで作成されています。連携した外部サイトにRSSの作成方法を聞かれることもあり、aumoのエンジニアとしてもWordPressは知っておいた方が業務的にもメリットがあることもWordPressを採択した理由の一つです。

ちなみにGREEのTech BlogもWordPressで構築されてます。

WordPressについて

全WebサイトのWordPressシェア

2021年5月のデータを見るとWordPressはWebサイト全体、CMS内で見ても圧倒的に他のCMSを引き離してシェアを取っています。そのことからWordPressは世界的に見て、CMSのデファクトスタンダードであることがわかります。

CMS名Webサイトシェア(%)CMSシェア(%)
WordPress41.264.8
Shopify3.55.5
Joomla2.13.3
Squarespace1.62.5
Wix1.62.5
参考: W3Techs

日本国内のWordPressシェア

2021年5月の日本国内でWordPressのCMS内シェアを見ると83.4%と圧倒的に採用されていることがわかります。

CMS名CMSシェア(%)
WordPress83.4
Adobe Dreamweaver2.5
EC-Cube2.2
参考: W3Techs

構成について

インフラは全てAWS上に構築しています。上記Tech Blogの構成図になります。

ポイントとしては、Auto Scalingグループ内で複数のECSクラスター内でWordPressサービスが起動している場合、管理画面からの変更が全てのWordPressサービスに伝搬する設計になっていることです。その中でもポイントとしている以下の2つを説明します。

  • WordPress本体について
  • アップロード画像について

WordPress本体について

WordPress本体のコード類についてはEFSを使用して永続化をしています。Docker imageに含める(ファイルシステムにマウントはしない)構成と合わせて検討した中でEFSを採用しました。そのポイントとしては「スケーリングの容易性 + 更新性の高さ」です。

Docker imageに含める構成については、DB参照情報以外の更新を行う場合、Auto Scaling内のWordPressサービスに更新を伝搬するためにDockerfileの更新及、Docker imageの更新が必要になります。

プラグインを追加する、テーマを更新するなどの作業があると毎回上記作業が必要になり、スケーリングはAuto Scalingを使用しているので容易であるが、更新性が低いといえます。

一方、EFSにWordPress本体のコードを保持し、それをマウントさせる構成であれば、WordPressの管理画面から更新するだけで全てのAuto Scaling内のWordPressサービスに変更を伝搬させることができるため、スケーリング可能で更新性が高いといえます。

アップロード画像について

アップロード画像についてはEFSに含めず、S3に配置することにしました。画像類は容量が増加しやすく、そのためEFSと比較してS3の方が圧倒的に料金を抑えることができる(1/10程度)ので、EFSにアップロードを配置しなかったポイントの一つです。

ちなみにS3へアップロード画像を参照するのにはWP OFFLOAD S3 LITEを使用しています。

今はS3を直接参照させているのですが、そのうちCloudFrontを経由して参照するようにしたいと思っています。

デザインについて

2021年6月以降にGoogle検索の順位を決めるのに「コアウェブバイタル」というUX指標が組み込まれると言われており、そこを意識したデザインにしています。

具体的にはLCP、FIDの指標向上を狙い、ブログではありがちなページ先頭のメイン画像を排除しています。そのことによりファーストビューの描画が軽くなり、LCP、FIDの指標向上につながることを期待しています。

aumoでは現在、記事メディア事業のコアウェブバイタル対応を進めており、Tech Blogでの行いが事業に還元できないかをひっそりと考えていたりしています。

最後に

これから定期的(月1回程度)に更新していくので引き続き見ていただけると喜びます。

ちなみにaumoでは一緒に働いてくれるエンジニアを絶賛募集中です。どんな会社なのかはこちらから。採用情報についてはこちらから見ることができます。