Plone talk 201308_terada

Post on 02-Jul-2015

540 views 1 download

Transcript of Plone talk 201308_terada

©2013 CMScom info@cmscom.jp

Ploneを使った大規模環境でのCMSソリューション

CMSコミュニケーションズ代表 / Advisory Board Member of Plone Foundation寺田 学 terada@cmscom.jp / terada@plone.org

http://www.cmscom.jp2013年8月7日

at Plone Talk 2013.08

オープンソースCMSを使った大規模サイト構 築のノウハウをお伝えします

1 最初に

©2013 CMScom info@cmscom.jp

大規模エンタープライズ

CMSとか言いますが・・・。

1 最初に

©2013 CMScom info@cmscom.jp

どこが?どう使っている?

にお声たえしたいと思います。

1 最初に

©2013 CMScom info@cmscom.jp

本日のテーマは

システム構築のパターン説明、指針解説

コンテンツ編集・承認を多人数でするための方策

などを、解説します。

自己紹介

©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

2 書籍紹介

©2013 CMScom info@cmscom.jp

4 Book多くのヒントが書かれています

アジェンダ

©2013 CMScom info@cmscom.jp

•問題提起(大規模とは?)•システム構成•ユーザ認証、ワークフロー•改ざんを防ぐ方策•クラウド技術の活用

3 問題提起

©2013 CMScom info@cmscom.jp

•大規模って何をさすの?•閲覧数がそれなりに多い•ユーザ人数が多い•データの量が多い•情報の承認フローを持ちたい•すぐにデータを反映

3 問題提起

©2013 CMScom info@cmscom.jp

•その他にも•改ざんを防ぎたい •ユーザごとに表示内容を変えたい

Plone (スタンドアローン)

1台の物理サーバ又はクラウドサーバ

4 システム構成

©2013 CMScom info@cmscom.jp

最小構成管理者

管理用アクセスパスワード必要

Apache (Webサーバ)

Ploneコアシステム(アプリケーションサーバ)

ZODB(データベースサーバ)

閲覧者

閲覧者

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認証サーバ

4 システム構成

©2013 CMScom info@cmscom.jp

よくある構成管理者管理用アクセスパスワード必要Apache (Webサーバ)

Ploneコアシステム(アプリケーションサーバ)

ZODB(データベースサーバ)

閲覧者

閲覧者

Ploneコアシステム(アプリケーションサーバ)

Ploneコアシステム(アプリケーションサーバ)

Apache (Webサーバ)(ログイン用)Varnish (キャッシュサーバ)

4 システム構成

©2013 CMScom info@cmscom.jp

よくある構成管理者管理用アクセスパスワード必要Apache (Webサーバ)

Ploneコアシステム(アプリケーションサーバ)

ZODB(データベースサーバ)

閲覧者

閲覧者

Ploneコアシステム(アプリケーションサーバ)

Ploneコアシステム(アプリケーションサーバ)

Apache (Webサーバ)(ログイン用)Varnish (キャッシュサーバ)

Plone (ZEOインスタンス)

1台の物理サーバ又はクラウドサーバ

4 システム構成

©2013 CMScom info@cmscom.jp

よくある構成管理者管理用アクセスパスワード必要Apache (Webサーバ)

Ploneコアシステム(アプリケーションサーバ)

ZODB(データベースサーバ)

閲覧者

閲覧者

Ploneコアシステム(アプリケーションサーバ)

Ploneコアシステム(アプリケーションサーバ)

Apache (Webサーバ)(ログイン用)

1台の物理サーバ又はクラウドサーバ

1台の物理サーバ又はクラウドサーバ

Varnish (キャッシュサーバ)

4 システム構成

©2013 CMScom info@cmscom.jp

よくある構成管理者管理用アクセスパスワード必要Apache (Webサーバ)

Ploneコアシステム(アプリケーションサーバ)

ZODB(データベースサーバ)

閲覧者

閲覧者

Ploneコアシステム(アプリケーションサーバ)

Ploneコアシステム(アプリケーションサーバ)

Apache (Webサーバ)(ログイン用)Varnish (キャッシュサーバ)

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認証サーバ

4 システム構成

©2013 CMScom info@cmscom.jp

•Apache(Webサーバ)•HTTPリクエストを受け取るフロントサーバ

•Varnish(キャッシュサーバ)•コンテンツのページキャッシュ•HAProxy(ロードバランサ)•セッション機能付きロードバランサ

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認証サーバ

4 システム構成

©2013 CMScom info@cmscom.jp

•MySQL/PostgreSQL(データベースサーバ)•FileStorage(Data.fs)の代わりに、RelStorageを使用し、RDBMSにコンテンツを保存

•Memcached•一時的なデータの保存

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認証サーバ

4 システム構成

©2013 CMScom info@cmscom.jp

•外部SSO•シングルサインオンシステムとの連携•LDAP•ユーザ情報の一元化•人事データ等が別途管理されている場合

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認証サーバ

4 システム構成

©2013 CMScom info@cmscom.jp

•部分的に置き換えも可能•Apache → nginx•Varnish → Squid / Apache•HAProxy → ロードバランサ•MySQL → NEO•LDAP → 独自認証システム

4 システム構成

©2013 CMScom info@cmscom.jp

•キャッシュサーバ•画像/CSS/JavaScriptなどデータ•動的データ•キャッシュサーバのデータを更新•Purgeしたい

4 システム構成

©2013 CMScom info@cmscom.jp

•実際問題どこまでやればいいの??•最終的には実際に使い始めないとどうなのかは分からないが・・。

4 システム構成

©2013 CMScom info@cmscom.jp

•その他ポイント•zope.conf(buildout.cfg)出来ること•検討項目は?•単純に閲覧が多い?•更新が多い?•CPUコア数・メモリ量に応じた配分

4 システム構成+α

©2013 CMScom info@cmscom.jp

•他の対策は?•ESIの活用•CDN(アカマイ/CloudFrontなど)使用•データベースの分割•ハードウエアの増強

4 システム構成

©2013 CMScom info@cmscom.jp

•Plone 4以降•以前のバージョンに比べ早い•blob化 / Python2.6 or 2.7の活用•テンプレートの見直し

4 システム構成

©2013 CMScom info@cmscom.jp

•ちなみに、SSL対応したければ、フロントに立ててあるApacheで対応するだけ

•アプリケーションサーバには、内部アクセスとして、8080ポートなどで通信を行うので、従来通りとする

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認証サーバ

4 システム構成(まとめ)

©2013 CMScom info@cmscom.jp

•実績のあるオープンソースアプリ活用•Plone自体がコミュニティーで支援•全世界のエンジニアで協力し問題点解決!!

5 ユーザ認証・ワークフロー

©2013 CMScom info@cmscom.jp

•Ploneにはユーザ認証の仕組みがある

•Ploneにはワークフローの仕組みがある

5 ユーザ認証

©2013 CMScom info@cmscom.jp

•LDAPなど既存のディレクトリシステムとの連携が可能

•SQL等の外部DB連携によるユーザ認証も可能

•PAS(PluggableAuthService)と呼ばれる、アドオンの仕組みがある

5 ユーザ認証

©2013 CMScom info@cmscom.jp

•SSO(シングルサインオン)の対応も可能•多くの大学や組織が持っている、各種システムとの連携が出来る

5 ユーザ認証

©2013 CMScom info@cmscom.jp

•ユーザ認証は何のために行う?•コンテンツの編集作業•公開承認作業•システムの管理•閲覧管理•その他、何かの動作を許可する前提

5 ユーザ認証

©2013 CMScom info@cmscom.jp

•ログイン出来たら操作を許可?•どのようにログインユーザと操作を結びつけるのか?

5 ユーザ認証

©2013 CMScom info@cmscom.jp

•権限関係の関連キーワード•ユーザ•グループ•ロール(役割)•パーミッション(権限)•上記の4つの組み合わせにより操作許可

5 ユーザ認証

©2013 CMScom info@cmscom.jp

パーミッションとロール

ユーザとロール

5 ユーザ認証

©2013 CMScom info@cmscom.jp

•権限関係の関連キーワード その2•ローカルロール•オブジェクト単位の共有設定•上位継承•ワークフローの状態(State)による条件•複数のワークフロー•コンテンツタイプごと/フォルダごと

5 ユーザ認証

©2013 CMScom info@cmscom.jp

共有設定

5 ユーザ認証

©2013 CMScom info@cmscom.jp

•操作許可までの動き•ユーザはロールを持っている•ロールに応じたパーミッションがマッピングされ、操作の許可がされる•共有設定で指定のオブジェクトにロールが割り当てる• 例えば編集の際のパーミッション(Modify Portal Content)はEditorロールを持つユーザに許可

5 ユーザ認証

©2013 CMScom info@cmscom.jp

•その他•複数の認証システムの組合せが可能•IPアドレスによるユーザ認証も可能

5 ワークフロー

©2013 CMScom info@cmscom.jp

•デフォルトで複数のワークフローがある•自由にカスタマイズが可能•独自のワークフローの記述が出来る•ZMI / XML / CSVなどで•コンテンツタイプごとに使用するワークフローが選択できる

5 ワークフロー

©2013 CMScom info@cmscom.jp

2段階承認の例

非表示中

内部承認待ち

最終承認待ち

公開中

内部公開中

提出

内部公開

公開

承認

状態(State): コンテンツの状態を表す

遷移(Transition): ワークフローの遷移を表す

5 ワークフロー

©2013 CMScom info@cmscom.jp

•状態(State)は、コンテンツの状態を表す•パーミッション(権限) - ロール(役割)のマッピングを上書きし、閲覧権限や編集権限などを状態によって変化させる

5 ワークフロー

©2013 CMScom info@cmscom.jp

2段階承認の例

非表示中

内部承認待ち

最終承認待ち

公開中

内部公開中

提出

内部公開

公開

承認

状態(State): コンテンツの状態を表す

遷移(Transition): ワークフローの遷移を表す

5 ワークフロー

©2013 CMScom info@cmscom.jp

•遷移(Transition)は、ワークフローの遷移を表す

•別の状態(State)に遷移させるもの•遷移の条件を以下の方法で決める•パーミッション(権限)•ロール(役割)•スクリプト(条件を記載したPython)

5 ワークフロー

©2013 CMScom info@cmscom.jp

2段階承認の例

非表示中

内部承認待ち

最終承認待ち

公開中

内部公開中

提出

内部公開

公開

承認

状態(State): コンテンツの状態を表す

遷移(Transition): ワークフローの遷移を表す

5 ユーザ認証・ワークフロー(まとめ)

©2013 CMScom info@cmscom.jp

•状態(State)と遷移(Transition)を理解すれば、ワークフローは作れる

•ユーザに操作を許可させるには、ユーザが持つロールを経由して行う

•認証と操作許可は完全に分離されている

6 改ざんを防ぐ方策

©2013 CMScom info@cmscom.jp

•ログインアカウントをきっちり管理•定期的にパスワードを変更する•認証を外部にまかせて、信頼を担保(SSOなど)

6 改ざんを防ぐ方策

©2013 CMScom info@cmscom.jp

•ログインさせない•指定のIPアドレスからのみ接続許可

•データベースを読み取り専用(リードオンリー)モードで使う

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制限

7 クラウドサーバの活用

©2013 CMScom info@cmscom.jp

•IaaSと言われる、ほとんどのクラウドサーバで運用可能

•アプリケーションサーバの増強には、クラウド環境は手軽で簡単

•テスト・ステージングサーバを立ち上げるのがすぐに出来便利

7 クラウドサーバの活用

©2013 CMScom info@cmscom.jp

•PaaSでもPloneが動作する環境はある•個々に癖があるので注意が必要

7 クラウドサーバの活用

©2013 CMScom info@cmscom.jp

•選定のポイント•柔軟にアプリケーションサーバが増やせるか?•OSイメージでバックアップする方法があるか?•課金体系は、使用するアプリケーションに合っているか?

8 Plone流

©2013 CMScom info@cmscom.jp

•Ploneには文化がある!!

•使う側、カスタマイズする側、管理側に、この文化が適用出来れば最強!!

8 Plone流

©2013 CMScom info@cmscom.jp

•オープンソースの活用で、長期間メンテナンスが可能なシステム構築を・・。

8 Plone流

©2013 CMScom info@cmscom.jp

10年以上進化をし続けている

Ploneに感謝!!

ご清澄ありがとうございました。