Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Plone talk 201308_terada

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Plone talk 201308_terada

  1. 1. ©2013 CMScom info@cmscom.jp Ploneを使った大規模環境でのCMSソリューション CMSコミュニケーションズ代表 / Advisory Board Member of Plone Foundation 寺田 学 terada@cmscom.jp / terada@plone.org http://www.cmscom.jp 2013年8月7日 at Plone Talk 2013.08 オープンソースCMSを使った 大規模サイト構 築のノウハウをお伝えします
  2. 2. 1 最初に ©2013 CMScom info@cmscom.jp 大規模エンタープライズ CMS とか言いますが・・・。
  3. 3. 1 最初に ©2013 CMScom info@cmscom.jp どこが? どう使っている? にお声たえしたいと思います。
  4. 4. 1 最初に ©2013 CMScom info@cmscom.jp 本日のテーマは システム構築のパターン説明、指針解説 コンテンツ編集・承認を多人数でするた めの方策 などを、解説します。
  5. 5. 自己紹介 ©2013 CMScom info@cmscom.jp •寺田 学 @terapyon •Advisory Board Member of Plone Foundation •一般社団法人PyCon JP 代表理事 •Ploneコアコミッター、Zopeコアコミッター •(株)CMSコミュニケーションズ代表 http://www.cmscom.jp •一橋大学大学院 社会学研究科 地球社会専攻 元客員准教授 •Plone/Zopeの専業Webシステム構築・コンサルティング •大学や政府系サイトなどを手がけています •独自にWeb検索システムの構築もしています •書籍(共著) 2
  6. 6. 2 書籍紹介 ©2013 CMScom info@cmscom.jp 4 Book 多くのヒントが 書かれています
  7. 7. アジェンダ ©2013 CMScom info@cmscom.jp •問題提起(大規模とは?) •システム構成 •ユーザ認証、ワークフロー •改ざんを防ぐ方策 •クラウド技術の活用
  8. 8. 3 問題提起 ©2013 CMScom info@cmscom.jp •大規模って何をさすの? •閲覧数がそれなりに多い •ユーザ人数が多い •データの量が多い •情報の承認フローを持ちたい •すぐにデータを反映
  9. 9. 3 問題提起 ©2013 CMScom info@cmscom.jp •その他にも •改ざんを防ぎたい •ユーザごとに表示内容を変えたい
  10. 10. Plone (スタンドアローン) 1台の物理サーバ又はクラウドサーバ 4 システム構成 ©2013 CMScom info@cmscom.jp 最小構成 管理者 管理用アクセス パスワード必要 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) ZODB (データベースサーバ) 閲覧者 閲覧者
  11. 11. 4 システム構成 ©2013 CMScom info@cmscom.jp 大規模構成 管理者 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) MySQL/PostgreSQL (スレーブ) (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ) Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Varnish (キャッシュサーバ) HAProxy (ロードバランサ) MySQL/PostgreSQL (マスター) (データベースサーバ) Memcached (一時保存ファイル) LDAP (ユーザディレクトリ) 外部SSO 認証サーバ
  12. 12. 4 システム構成 ©2013 CMScom info@cmscom.jp よくある構成 管理者 管理用アクセス パスワード必要 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) ZODB (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ)
  13. 13. 4 システム構成 ©2013 CMScom info@cmscom.jp よくある構成 管理者 管理用アクセス パスワード必要 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) ZODB (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ) Plone (ZEOインスタンス)
  14. 14. 1台の物理サーバ又はクラウドサーバ 4 システム構成 ©2013 CMScom info@cmscom.jp よくある構成 管理者 管理用アクセス パスワード必要 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) ZODB (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) 1台の物理サーバ又はクラウドサーバ 1台の物理サーバ又はクラウドサーバ Varnish (キャッシュサーバ)
  15. 15. 4 システム構成 ©2013 CMScom info@cmscom.jp よくある構成 管理者 管理用アクセス パスワード必要 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) ZODB (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ)
  16. 16. 4 システム構成 ©2013 CMScom info@cmscom.jp 大規模構成 管理者 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) MySQL/PostgreSQL (スレーブ) (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ) Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Varnish (キャッシュサーバ) HAProxy (ロードバランサ) MySQL/PostgreSQL (マスター) (データベースサーバ) Memcached (一時保存ファイル) LDAP (ユーザディレクトリ) 外部SSO 認証サーバ
  17. 17. 4 システム構成 ©2013 CMScom info@cmscom.jp •Apache(Webサーバ) •HTTPリクエストを受け取るフロント サーバ •Varnish(キャッシュサーバ) •コンテンツのページキャッシュ •HAProxy(ロードバランサ) •セッション機能付きロードバランサ
  18. 18. 4 システム構成 ©2013 CMScom info@cmscom.jp 大規模構成 管理者 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) MySQL/PostgreSQL (スレーブ) (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ) Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Varnish (キャッシュサーバ) HAProxy (ロードバランサ) MySQL/PostgreSQL (マスター) (データベースサーバ) Memcached (一時保存ファイル) LDAP (ユーザディレクトリ) 外部SSO 認証サーバ
  19. 19. 4 システム構成 ©2013 CMScom info@cmscom.jp •MySQL/PostgreSQL(データベース サーバ) •FileStorage(Data.fs)の代わりに、 RelStorageを使用し、RDBMSにコ ンテンツを保存 •Memcached •一時的なデータの保存
  20. 20. 4 システム構成 ©2013 CMScom info@cmscom.jp 大規模構成 管理者 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) MySQL/PostgreSQL (スレーブ) (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ) Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Varnish (キャッシュサーバ) HAProxy (ロードバランサ) MySQL/PostgreSQL (マスター) (データベースサーバ) Memcached (一時保存ファイル) LDAP (ユーザディレクトリ) 外部SSO 認証サーバ
  21. 21. 4 システム構成 ©2013 CMScom info@cmscom.jp •外部SSO •シングルサインオンシステムとの連携 •LDAP •ユーザ情報の一元化 •人事データ等が別途管理されている場 合
  22. 22. 4 システム構成 ©2013 CMScom info@cmscom.jp 大規模構成 管理者 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) MySQL/PostgreSQL (スレーブ) (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ) Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Varnish (キャッシュサーバ) HAProxy (ロードバランサ) MySQL/PostgreSQL (マスター) (データベースサーバ) Memcached (一時保存ファイル) LDAP (ユーザディレクトリ) 外部SSO 認証サーバ
  23. 23. 4 システム構成 ©2013 CMScom info@cmscom.jp •部分的に置き換えも可能 •Apache → nginx •Varnish → Squid / Apache •HAProxy → ロードバランサ •MySQL → NEO •LDAP → 独自認証システム
  24. 24. 4 システム構成 ©2013 CMScom info@cmscom.jp •キャッシュサーバ •画像/CSS/JavaScriptなどデータ •動的データ •キャッシュサーバのデータを更新 •Purgeしたい
  25. 25. 4 システム構成 ©2013 CMScom info@cmscom.jp •実際問題どこまでやればいいの?? •最終的には実際に使い始めないとどう なのかは分からないが・・。
  26. 26. 4 システム構成 ©2013 CMScom info@cmscom.jp •その他ポイント •zope.conf(buildout.cfg)出来ること •検討項目は? •単純に閲覧が多い? •更新が多い? •CPUコア数・メモリ量に応じた配分
  27. 27. 4 システム構成+α ©2013 CMScom info@cmscom.jp •他の対策は? •ESIの活用 •CDN(アカマイ/CloudFrontなど)使用 •データベースの分割 •ハードウエアの増強
  28. 28. 4 システム構成 ©2013 CMScom info@cmscom.jp •Plone 4以降 •以前のバージョンに比べ早い •blob化 / Python2.6 or 2.7の活用 •テンプレートの見直し
  29. 29. 4 システム構成 ©2013 CMScom info@cmscom.jp •ちなみに、SSL対応したければ、フロン トに立ててあるApacheで対応するだけ •アプリケーションサーバには、内部アク セスとして、8080ポートなどで通信を 行うので、従来通りとする
  30. 30. 4 システム構成 ©2013 CMScom info@cmscom.jp 大規模構成 管理者 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) MySQL/PostgreSQL (スレーブ) (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ) Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Varnish (キャッシュサーバ) HAProxy (ロードバランサ) MySQL/PostgreSQL (マスター) (データベースサーバ) Memcached (一時保存ファイル) LDAP (ユーザディレクトリ) 外部SSO 認証サーバ
  31. 31. 4 システム構成(まとめ) ©2013 CMScom info@cmscom.jp •実績のあるオープンソースアプリ活用 •Plone自体がコミュニティーで支援 •全世界のエンジニアで協力し問題点解決!!
  32. 32. 5 ユーザ認証・ワークフロー ©2013 CMScom info@cmscom.jp •Ploneにはユーザ認証の仕組みがある •Ploneにはワークフローの仕組みがある
  33. 33. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp •LDAPなど既存のディレクトリシステム との連携が可能 •SQL等の外部DB連携によるユーザ認証 も可能 •PAS(PluggableAuthService)と呼ば れる、アドオンの仕組みがある
  34. 34. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp •SSO(シングルサインオン)の対応も可能 •多くの大学や組織が持っている、各種 システムとの連携が出来る
  35. 35. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp •ユーザ認証は何のために行う? •コンテンツの編集作業 •公開承認作業 •システムの管理 •閲覧管理 •その他、何かの動作を許可する前提
  36. 36. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp •ログイン出来たら操作を許可? •どのようにログインユーザと操作を結び つけるのか?
  37. 37. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp •権限関係の関連キーワード •ユーザ •グループ •ロール(役割) •パーミッション(権限) •上記の4つの組み合わせにより操作許可
  38. 38. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp パーミッションとロール ユーザとロール
  39. 39. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp •権限関係の関連キーワード その2 •ローカルロール •オブジェクト単位の共有設定 •上位継承 •ワークフローの状態(State)による条件 •複数のワークフロー •コンテンツタイプごと/フォルダごと
  40. 40. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp 共有設定
  41. 41. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp •操作許可までの動き •ユーザはロールを持っている •ロールに応じたパーミッションがマッ ピングされ、操作の許可がされる •共有設定で指定のオブジェクトにロー ルが割り当てる • 例えば編集の際のパーミッション(Modify Portal Content)はEditorロールを持つユーザに許可
  42. 42. 5 ユーザ認証 ©2013 CMScom info@cmscom.jp •その他 •複数の認証システムの組合せが可能 •IPアドレスによるユーザ認証も可能
  43. 43. 5 ワークフロー ©2013 CMScom info@cmscom.jp •デフォルトで複数のワークフローがある •自由にカスタマイズが可能 •独自のワークフローの記述が出来る •ZMI / XML / CSVなどで •コンテンツタイプごとに使用するワーク フローが選択できる
  44. 44. 5 ワークフロー ©2013 CMScom info@cmscom.jp 2段階承認の例 非表示中 内部承認待ち 最終承認待ち 公開中 内部公開中 提出 内部公開 公開 承認 状態(State): コンテンツの状態を表す 遷移(Transition): ワークフローの遷移を表す
  45. 45. 5 ワークフロー ©2013 CMScom info@cmscom.jp •状態(State)は、コンテンツの状態を表す •パーミッション(権限) - ロール(役割)の マッピングを上書きし、閲覧権限や編 集権限などを状態によって変化させる
  46. 46. 5 ワークフロー ©2013 CMScom info@cmscom.jp 2段階承認の例 非表示中 内部承認待ち 最終承認待ち 公開中 内部公開中 提出 内部公開 公開 承認 状態(State): コンテンツの状態を表す 遷移(Transition): ワークフローの遷移を表す
  47. 47. 5 ワークフロー ©2013 CMScom info@cmscom.jp •遷移(Transition)は、ワークフローの遷 移を表す •別の状態(State)に遷移させるもの •遷移の条件を以下の方法で決める •パーミッション(権限) •ロール(役割) •スクリプト(条件を記載したPython)
  48. 48. 5 ワークフロー ©2013 CMScom info@cmscom.jp 2段階承認の例 非表示中 内部承認待ち 最終承認待ち 公開中 内部公開中 提出 内部公開 公開 承認 状態(State): コンテンツの状態を表す 遷移(Transition): ワークフローの遷移を表す
  49. 49. 5 ユーザ認証・ワークフロー(まとめ) ©2013 CMScom info@cmscom.jp •状態(State)と遷移(Transition)を理解 すれば、ワークフローは作れる •ユーザに操作を許可させるには、ユーザ が持つロールを経由して行う •認証と操作許可は完全に分離されている
  50. 50. 6 改ざんを防ぐ方策 ©2013 CMScom info@cmscom.jp •ログインアカウントをきっちり管理 •定期的にパスワードを変更する •認証を外部にまかせて、信頼を担保(SSO など)
  51. 51. 6 改ざんを防ぐ方策 ©2013 CMScom info@cmscom.jp •ログインさせない •指定のIPアドレスからのみ接続許可 •データベースを読み取り専用(リードオン リー)モードで使う
  52. 52. 6 改ざんを防ぐ方策 ©2013 CMScom info@cmscom.jp 大規模構成 管理者 Apache (Webサーバ) Ploneコアシステム (アプリケーションサーバ) MySQL/PostgreSQL (スレーブ) (データベースサーバ) 閲覧者 閲覧者 Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Apache (Webサーバ)(ログイン用) Varnish (キャッシュサーバ) Ploneコアシステム (アプリケーションサーバ) Ploneコアシステム (アプリケーションサーバ) Varnish (キャッシュサーバ) HAProxy (ロードバランサ) MySQL/PostgreSQL (マスター) (データベースサーバ) Memcached (一時保存ファイル) LDAP (ユーザディレクトリ) 読み取り専用 ログインURL禁止 IP制限
  53. 53. 7 クラウドサーバの活用 ©2013 CMScom info@cmscom.jp •IaaSと言われる、ほとんどのクラウド サーバで運用可能 •アプリケーションサーバの増強には、ク ラウド環境は手軽で簡単 •テスト・ステージングサーバを立ち上げ るのがすぐに出来便利
  54. 54. 7 クラウドサーバの活用 ©2013 CMScom info@cmscom.jp •PaaSでもPloneが動作する環境はある •個々に癖があるので注意が必要
  55. 55. 7 クラウドサーバの活用 ©2013 CMScom info@cmscom.jp •選定のポイント •柔軟にアプリケーションサーバが増や せるか? •OSイメージでバックアップする方法が あるか? •課金体系は、使用するアプリケーショ ンに合っているか?
  56. 56. 8 Plone流 ©2013 CMScom info@cmscom.jp •Ploneには文化がある!! •使う側、カスタマイズする側、管理側 に、この文化が適用出来れば最強!!
  57. 57. 8 Plone流 ©2013 CMScom info@cmscom.jp •オープンソースの活用で、長期間メンテ ナンスが可能なシステム構築を・・。
  58. 58. 8 Plone流 ©2013 CMScom info@cmscom.jp 10年以上進化をし続けている Ploneに感謝!! ご清澄ありがとうございました。

×