Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[MTDDC Meetup Tokyo 2016] 大規模メディアサイトで使う Movable Type

Makoto Tajima
November 12, 2016

[MTDDC Meetup Tokyo 2016] 大規模メディアサイトで使う Movable Type

Makoto Tajima

November 12, 2016
Tweet

Other Decks in Technology

Transcript

  1. やるべきこと  CMS選定  インフラ設計  CMS設計  データ移行 

    プラグイン開発 (弊社が)今回やったこと 制作会社 サーバ屋さん CDN屋さん 弊社 チーム構成
  2. 今回の話  CMS選定  インフラ設計  CMS設計  データ移行 

    プラグイン開発 絞りました MT for AWSになりました AWS+CDNになりました 血のにじむ話ですし(汗) このあたりは 別の機会あれば
  3. ウェブサイト・ブログの分割  増え続けるコンテンツの問題 Sportiva サッカー 野球 ゴルフ ウェブサイト ブログ コンテンツ追加

    コンテンツ追加 コンテンツ追加 • 新規記事 • 新規カテゴリ • 新規記事 • 新規カテゴリ • 新規記事 • 新規カテゴリ
  4. ウェブサイト・ブログの分割  増え続けるコンテンツへの対応 Sportiva サッカー ウェブサイト ウェブサイト 2014年 2015年 2016年

    ブログ • ジャンルごとにウェブサイトを作成 • 年毎にブログを作成 • 毎年カテゴリを整理 • 毎年JSON形式でもアーカイブを出力
  5. ウェブサイト・ブログの分割  増え続けるコンテンツへの対応 Sportiva サッカー ウェブサイト ウェブサイト 2014年 2015年 2016年

    ブログ • ジャンルごとにウェブサイトを作成 • 年毎にブログを作成 • 毎年カテゴリを整理 • 毎年JSON形式でもアーカイブを出力
  6. JSONの活用  アーカイブをJSONで出力 コラム JSON サッカー JSON 親ウェブサイト 子ウェブサイト 2014年

    JSON 2015年 JSON 2016年 JSON ブログ • 記事更新にあわせてJSONを出力 • 子ウェブサイトではブログのJSONを まとめたJSONを出力 • 親ウェブサイトでは子ウェブサイトの JSONをまとめたJSONを出力
  7. JSONの活用  JSONのメリット コラム JSON サッカー JSON 親ウェブサイト 子ウェブサイト 2014年

    JSON 2015年 JSON 2016年 JSON ブログ DB DB • DB上で記事を破棄してJSONを残す • JSONがあれば変わらずアーカイブ作 成可能 • 静的サイトジェネレータのうまみ
  8. JSONの活用  JSONのメリット コラム JSON サッカー JSON 親ウェブサイト 子ウェブサイト 2014年

    JSON 2015年 JSON 2016年 JSON ブログ DB DB • DB上で記事を破棄してJSONを残す • JSONがあれば変わらずアーカイブ作 成可能 • 静的サイトジェネレータのうまみ DBの肥大化を防ぐ ファイル
  9. 今回の話  CMS選定  インフラ設計  CMS設計  データ移行 

    プラグイン開発 絞りました MT for AWSになりました AWS+CDNになりました 血のにじむ話ですし(汗) このあたりは 別の機会あれば コレカラ
  10. 既存プラグインの活用  MTAppjQueryプラグイン by bitpart  PageButeプラグイン by SKYARC 

    UploadDirプラグイン (弊社謹製)  DataAPIProxyプラグイン (弊社謹製)
  11. 既存プラグインの活用  MTAppjQueryプラグイン by bitpart  PageButeプラグイン by SKYARC 

    UploadDirプラグイン (弊社謹製)  DataAPIProxyプラグイン (弊社謹製) 2014年プラデミー賞第1位 2015年プラデミー賞第1位 2015年プラデミー賞第3位 末永く使えるプラグインを 必要最小限に導入する
  12. LoadJSONタグ • 各所でみなさん作られているJSON読み込みタグ • 使い方 • パラメータ file 読み込むファイル名 name

    割り当てる変数名 append 既存変数に追加する場合「1」 <mt:loadJSON file=“filename” name=“variable” append=“0|1” />
  13. apply_themeスクリプト • テーマ一括更新スクリプト • 使い方 • パラメータ theme_id 一括更新したいテーマID blog_id

    一括更新したいブログID ※どちらかを指定する ./tools/apply_theme --theme_id=“theme_id” --blog_id=“n,m,o,...” />
  14. apply_themeスクリプト • テーマ一括更新スクリプト • 使い方 • パラメータ theme_id 一括更新したいテーマID blog_id

    一括更新したいブログID ※どちらかを指定する ./tools/apply_theme --theme_id=“theme_id” --blog_id=“n,m,o,...” /> 近日公開します
  15. rebuild_allスクリプト • 一括再構築スクリプト(アーカイブ対応) • 使い方 • パラメータ website_ids 一括再構築したいウェブサイトID ids

    一括再構築したいブログID ※website_idsは子ブログも再構築する ./tools/rebuild_all --website_ids=“n,m,o,...” --ids=“n,m,o,...” />
  16. rebuild_allスクリプト • 一括再構築スクリプト(アーカイブ対応) • 使い方 • パラメータ website_ids 一括再構築したいウェブサイトID ids

    一括再構築したいブログID ※website_idsは子ブログも再構築する ./tools/rebuild_all --website_ids=“n,m,o,...” --ids=“n,m,o,...” /> 近日公開します
  17. [よりみち]公開キュー • 公式解説 https://www.movabletype.jp/faq/about-publish-queue.html Q. 公開キューとは何ですか テンプレートの編集画面で、公開設定を「公開キュー経由」にしたところ、再構築されなくなってしまいました。 「公開キュー」とは何ですか。どのように使うのでしょうか。 A. 「公開キュー」は、バックグラウンドで再構築をおこなうための機能です。

    バックグラウンドでの再構築はサーバーへの負荷の分散に役立ちます。 例えば、複数人で集中的に記事を公開した場合、再構築処理も集中するため、サーバーへの負荷が大きく なります。 「公開キュー」の利用により再構築のタイミングをずらし、サーバーの負荷が小さくなる時間帯などに実行するこ とができます。 ・・・・ 予約された再構築は「run-periodic-tasks」スクリプトにより実行されます。
  18. [よりみち]公開キューのデーモンモード • メリット • 再構築についてはバックグラウンドで重複することなく実 行される(複数同時に動く再構築の数を制御できる) • デメリット・リスク • スケジュールタスクとしては5分ごとの動作に固定される

    (指定日公開など1分単位で指定しても意味がない) • テンプレートやプラグインでメモリリークが発生するケー スがあるため、定期的にプロセスを再起動する必要がある
  19. まとめ • Movable Type for AWS を使うことで持続性の高 いCMS環境を実現できました • 大規模案件は、簡単にリニューアルできません。

    データの設計からインフラの構築まで3年後・5年 後を見越して提案しましょう • あくまでも選定基準はお客様基準。自分の都合は捨 てる