ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

Labels:  AWS, WordPress, イベント/登壇 投稿者:adachin

[AWSでWordPressのスケールアウト]PHPカンファレンス仙台2019に参戦してきた!

SRE/採用広報のあだちんです!!

というわけで!!

PHPカンファレンス仙台2019にて、弊社SREチームリーダー金澤さんが登壇するので、初!仙台に行ってきました!!その様子と登壇内容を簡単に解説&ブログしていきます。

SESSION

https://phpcon-sendai.net/2019/

弊社ランサーズではWordpressをAWSで運用しています。1台のインスタンスにいくつものメディアが可動しているのですが、スケールアウトのノウハウやHTTPS化、セキュリティ対策など合わせてご紹介できればと思います!

ちなみにエンジニアブログでもご紹介されているのでぜひ参考にしてみてください。

https://bit.ly/2K3Z0r4

1/25 13:00~

まずは恒例のエントランスでの写真撮影から!
お昼は会社近くの磯丸水産でランチ!!安いのでおすすめです!
(って新幹線で駅弁食べないのかい!!)🚅

https://tabelog.com/tokyo/A1303/A130301/13208791/

1/25 14:25~

隣でざわさんはひたすらスライドを修正しまくっていましたが、
私もこのブログを書いていました。(はやっ)
平日ということもあり、車内はガラガラ 。非常にのどかです。🗻
そして、

採用広報にずんだもちのお土産を要求される👀
ちなみに自分は食べたことがない😋

1/25 16:04~

仙台到着!!雪がぱらつき、なんとも風情がある街!
そして我々は前前夜祭へ向かいます。

からの!!!前夜祭!!

オミカレCTOそーだいさんに遭遇!!!
地元仙台出身のエンジニアさんも集まり、金澤さんと同い年の方もいたのは偶然すぎる!
2次会は行かず、金澤さん実家へ泊まりに行きました(どんだけ仲いいのよ!)

そーだいさんのリアクションがあまりにも面白すぎて思わずリツイート。
後ろの「食べたらやみつきだ」が似合う。

1/26 08:00~

朝から大雪!!凍結!!危うく転ぶところだった。。

朝ごはんはオシャンティーカフェで最後のスライド確認!

現地に到着!!

1/26 10:25~
「AWSでWordPressのスケールアウト」

では、簡単に解説していこうと思います!!

ランサーズのWordpressサーバの構成はPHP7.2、PHP-FPM、Nginx、Aurora MySQL5.7、GIthub、自前のdeployシステムでリリースしております。今回は自前でプラグインを作成している、大量アクセスで捌けない!などスケールアウトによる運用が今回ターゲットとなります。

スケールアウトの課題としては、DBが2つ以上のサーバに分離してしまう、ファイルのアップロードができない、管理画面からプラグインをアップロードできない、wp-cronがサーバの数だけ実行されてしまう、アクセスログが分散されてしまう恐れがあります。

ここで、スケールアウトの準備をしましょう。まずはVPCを構築し、Public Subnetを切ります。そしてEIPを付与します。

そしてRoute53でALBのエンドポイントとAレコードAliasで設定をします。

先程のPublic SubnetにALBを配置し、Private Subnetを設定します。そしてWordpressサーバをPublic Subnetに移動します。ALBのメリットとしてはACMによる無料でSSLの証明書が取得可能。セキュリティ向上、HTTP2、SSL Terminationをサポートします。

DBはまずPrivate Subnetを作成していきましょう。RDSのメリットとしてはリードレプリカの追加が簡単で、スケールアウトが楽なところ。自動バックアップやポイントリカバリ機能もあります。Auroraのメリットはリードレプリカが15台まで作成可能で、レプリカ遅延が低く、Readerエンドポイントも提供されています。なので、リードレプリカ追加時の負荷分散が楽なところと、haproxyなどインストールしなくても済みます。デメリットとしてはInnoDBのみサポートしており、MyISAMしか対応していないプラグインもあるので注意してほしいところです。

アップロードディレクトリの分離はS3バケットを用意し、wp-contents/uploads以下のファイルを格納します。プラグインはWP offload Media Liteを使って画像をS3にアップロードします。

プラグイン導入後、SQLでINSERT文をwp_postmetaテーブルにデータを追加していきます。必要に応じてURLの修正をしなければならないので、mysqldumpでエキスポートして修正するのが楽でしょう。

ログの集約はtd-agentでS3に集約していますが、今後CloudWatch Logsの方が学習コストが低いので導入しやすいと思われます。

管理画面専用サーバを構築することで、/wp-admin、/wp-login.phpをIP制限したり、cron実行、deploy処理を行えます。

プラグイン追加とアップデートは上記のようにgit pullをansibleで実行しています。

冗長構成するのであれば2つ以上のAZにAppとDBを分散すれば、AZレベルの障害でも対応できるようになります。

以上!

@for__3 さんツイートありがとうございます!!!

待ちに待ったランチ!!

仙台と言えば「牛タン!」
我々は善次郎さんでたらふくいただきました。
にしても小林さんのビールジョッキ大はデカイ。そして飲みきった!!

まとめ

実際に仙台のエンジニアさんと交流できたのは熱かったです!!
そして強いエンジニアさんとも人脈掴めたのはいい経験でした。
個人的に仙台へはまた行きたいと思います。
他の登壇者については私個人のブログで紹介したいと思います!!
↓書きました。

[2019/01/26]PHPカンファレンス仙台2019に行ってきた!

😋

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

ランサーズ開発ランチ(Lunchers #7) ~Kyash社でのプロダクト開発プロセス~

はじめに はじめまして、開発部の吉本です。 今回の開発ランチ(Lunchers)では、Kyashでプロダクトオーナー兼プロダクトマネージャーをしている重松さんにゲストに来て頂いて、 Kyash社でのプロダクトの意思決定フローと開発プロセスについて2部構成でお話 …

社員さすらいワーク制度でテレワークと週末小旅行を楽しむ〜岡山県編〜

ランサーズ社の福利厚生制度に「社員さすらいワーク」という制度があります。 https://www.lancers.co.jp/news/pr/12740/ 企業の働き方改革や複業を取り入れたい企業の支援をする「オープン・タレント推進」の取り組みの第二弾として、 …

PHPカンファレンス福岡 2017に登壇しました

インフラエンジニアの金澤です。 2017/06/10(土)に、PHPカンファレンス福岡に登壇させていただきました。 今回、30分枠とLT枠(5分)の2枠を採択していただきました。 登壇内容 CakePHP 1.3 + PHP 5.3 → CakePHP 3 + …