見出し画像

WordPressの構築をモダナイゼーションしました | 仕事術

こんにちは。もりしーです。
最近、知り合いからポートフォリオサイトの構築を依頼されたので、WordPressで構築しました。
今日のテーマは、そんなWordpress構築に関わるアーキテクチャのお話です。

わたしが最後にWordPressでホームページを構築したのは、8年前に知り合いから依頼されたきりでしたので、最近の情勢が分からずでした。

それなりに変化があるかなーと思いきやところがどっこい・・

目に見える部分は進化しているとは感じましたが、ハンズオン的にサクッと構築して運用しようよ〜。みたいなノリだと、未だに信頼性、セキュリティ、運用の卓越性、コスト最適化、パフォーマンス効率に深堀りできないので、せっかく載せたコンテンツも世の中に発信し辛いです。

語弊を招くので補足しますが、大前提としてレンタルサーバ、クラウドサービス(AzureやAWSなど)、WordPressも対策は最低限施してますし、施すアイテムも提供しています。ただ、それを上手く使いこなすのか。はあなた次第ですよ。ということですね。

なので、精神衛生的にも安全、安心、ストレスフリー、コンテンツを良く見せる的なアーキテクチャを構築してステキなWordPress Lifeを送っていただこう考えに致りました。

この記事は「じゃあWordpressを実際に構築するときに何を気をつけたんだい?参考に聞かせてくれよ」って方々向けの記事となります。

ITやWordPress初心者の方でも一読していただき、気になるようでしたらスキ/コメント/フォローいただければ全て受け止めますので、どうぞよろしくお願いします🙇

この記事を書いた人
・コネなし、資格なし、経験なしの青森県民が単身上京し、SESに飛び込む
・12年の間SIer、外資系コンサルファームを渡り歩く
・現在はソリューションアーキテクトとして事業会社に勤務
・最近副業にも手を伸ばそうと日々迷走中
・横文字が苦手、声が小さい

#もりしーと申します

なぜ、WordPressを構築するだけでは弱いのか

こちらをご覧ください。WordPressを構築した時点ではこのような概観になります。
わたしの構築例を絵にしますが、レンタルサーバでもAWSでも大体同じです。

WordPressを構築した時点の概観(Azureに限らず大体こうなる)

おかわりいただけたでしょうか・・・
ポイントは以下3つです。

ざっとホラーストーリー交えて説明させていただきます。

1.悪意を持ってアクセスするやつらが、攻撃し放題

↑赤い線のように、悪意の塊があなたの資産を狙ってます・・・

不正アクセスや妨害操作で  "信頼性の低下"
・"あなた" の 名前になりすまし、記事の改ざん
・Webサイトが暗号化され使用不可になる(ランサムウェア)
・サーバをダウンさせ、アクセス不可の状態になる(DDos攻撃)
・訪問者のギガを使い潰すサイトに作り変えるという地味にコスいことも(マルウェアの類)

盗聴され重要機密情報が流出し "犯罪市場で不正利用がチェーン化する"
・情報をXSS、CSRFなどで抜き取り、犯罪市場に売る
・売られた情報をもとに、攻撃市場で再利用される

知っておきたい39種類のサイバー攻撃|その対策とは?
盗まれた情報の使われ方(被害実態)

2.Webサイトを純粋に楽しみたい訪問者が、楽しめない

↑青い線のように、ひとつの乗り物にみんなが集中したら順番待ちになりますよね・・・
ぼっちの順番待ち、楽しいですか?

Webサイトの表示速度が遅すぎて ”訪問者を失う”
・(GoogleやAmazonの調査によると)表示速度が遅いとユーザが閲覧、問い合わせ、物品購入をする前に離脱する確率が高くなる
・GoogleやEdgeの検索結果にヒットしづらくなる ー> SEOの低下

Webサイトのスペックを上げすぎて ”管理費用などのコストが青天井”
・パフォーマンス効率を測れず、表示速度を上げるためのコストで予算が圧迫する ー> 結果、他の活動に充填できない

Webサイトへの入口がひとつなので ”有事の際にアクセス不可になる”
・サーバダウンしている状態は全てにおいて最悪。訪問者はもちろん、Google先生からも嫌われる

Webサイトが重い理由を解説!原因や対処法を知ってマーケティングを成功させよう

3.災害、人災でWebサイトが、没する(こともある)

あなたの資産が、感情論なしで無慈悲に消えます 

データの損失で ”Webサイトを閉じざるを得ない” ことに直結する
・レンタルサーバやクラウドサービスの障害でデータが消えると、運営が不可能になる

復旧に時間がかかり ”ビジネス損失コストが多く発生する”
・誤ってデータを消してしまう、変えてしまうなどでWebサイトが崩れた場合、直せなくなる
(補足)あなた以外にも、クラッカー/ハッカーはもちろん、訪問者が荒らし行動をした場合も、元に戻すのが不可または苦労します

SPOFとは? わかりやすく10分で解説

結論、どうすべきか

こうなります。全然奇抜でもなんでもないです。拍子抜けかもです。

Well-Architected Frameworkを活用する

わたしは、Well-Architected Frameworkの思想を元に構築し直しました。
この構築したアーキテクチャは、様々な人が目的に合わせて柔軟に組み替えられるだろうと考えてます。

モダナイゼーション後のWordPress概観

(参考)知らない人のためのWell-Architected Frameworkとは

Microsoftの公式ページを参照ください。詳しい説明は割愛しますが、要はアーキテクチャ組み立てるうえで大事な指標や指針があるからそれを具備すると良いことあるよ!という取り組みです。
また、Microsoftだけではなく、AWS、GCPも同じ思想で公式見解があるため、アーキテクト目指している方はご参考ください。

もう一度言います

これが・・・

Before

こう!              ↓

After

ポイントは4つです

1.悪意を持ってアクセスするやつらを遮断し、セキュリティ担保

悪意の塊も流石に涙目(だといいなあ)

アクセスルートを論理的に絞り ”不正アクセスや妨害、盗聴を防止”
・データベースをインターネットから遮断し、WordPressのコンテンツページからリクエストされたものだけ処理する
・WordPressコンテンツ画面へのアクセスはCDNのサーバを経由し、それ以外は受け付けない
・WordPress管理画面のURLを変更して秘匿
・WordPress管理画面にMicrosoft Entra IDに存在するユーザのみがログインできる(SSO連携)
・WordPress管理画面のユーザIDとパスワードを入力する枠を削除してログインルートを遮断 ※結構苦労しました笑

使用するIDを統一し ”運用の卓越性を確保”
・WordPress管理画面のユーザとMicrosoft Entra IDのユーザを統合する

2.Webサイトを純粋に楽しみたい訪問者を空いている列に誘導し、負荷分散

これで順番待ちも解消!空いている列に並ぶことができますね

CDN Serverを用意して ”パフォーマンス効率を向上”
・CDN ServerからWordPressコンテンツ画面へのルートを分散する
・構造化/非構造化データのキャッシュをCDNに保存する

CDN Serverを用意して ”コスト最適化”
・Application LayerをスケールアップせずにCDN Serverをスケールアウトする

アクセスルートを論理的に絞り ”不正アクセスや妨害、盗聴を防止”
・WordPressコンテンツ画面へのアクセスはCDNのサーバを経由し、それ以外は受け付けない

3.資産をレプリケーションし、災害、人災にも耐える

資産は自分だけを信じて守るのがいいですね!

データが損失してもバックアップから復旧し ”コスト最適化&運用の卓越性確保”
・常にプライマリと等価のバックアップを設け、バックアップから即座に復旧を可能にする ー> ビジネス損失が少ない

Webサイトを閉じざるを得ない状況をカバーし ”信頼性を確保”
・人災、災害が発生してもリカバリ/リストアの復旧を可能にする

4.管理運用のベースラインをシームレス化

構成管理という思想を取り入れた運用

ワンストップな ”運用の卓越性確保”
・Azure DevOpsによるBoardsでタスク管理、Reposで開発、本番のバージョン管理、PipelineでCI/CDなどの構成管理を運用することで、タスクと資産とデプロイの営みが全て紐付く
・コスト、アプリケーション、監査のモニタリングを、ひとつのIDで行うことで、委託者へのアカウント払い出しが容易になる

最後に、まとめ

以上です。
このアーキテクチャが最適解ではなく、いろいろなアーキテクチャがあると思いますが、この記事を読んで誰かが幸せになればいいなと思います。
(少なくとも依頼主とわたしは幸せになったのでGoodです)

アーキテクチャは無限大

アーキテクチャセンターを読み込むと、練り込まれたものや奇抜だけど妙に納得感があるもの。などあります。
わたしは、アーキテクチャを自分で考えたあとに、Google先生を使用して様々な有識者の視点から答え合わせをしています。
なので、ご紹介したアーキテクチャもあくまで参考程度にしていただき、ご自身なりに腹落ちしていただけると大変ありがたいです。

(参考)答え合わせにしたサイト

Vaclav Jirovskyさん、Adrian Calinescuさん。ありがとうございました。

(参考)今回使用した技術を抜粋

  • WordPress

  • PHP

  • MySQL

  • Microsoft Azure

    • App Service

    • Front Door

    • DNSゾーン

    • Application Insight

    • Microsoft Entra ID

  • Azure DevOps Service など

これからもたまにIT記事を書きますので、読んでいただけると幸いです。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?