s3+cloud frontによる静的コンテンツ配信 - sphinx編 #cmdevio

23
S3 + CloudFrontによる 静的コンテンツ配信 - Sphinx編 - 2014.03.21 AWS勉強会 in 札幌 クラスメソッド 渡辺修司

Upload: shuji-watanabe

Post on 02-Dec-2014

1.382 views

Category:

Technology


0 download

DESCRIPTION

クラスメソッド主催 AWS勉強会in札幌でのスライド資料です。

TRANSCRIPT

Page 1: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

S3 + CloudFrontによる 静的コンテンツ配信 - Sphinx編 -

2014.03.21 AWS勉強会 in 札幌

クラスメソッド 渡辺修司

Page 2: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

About Me• 渡辺修司 • 昨年8月よりクラスメソッド • 在宅勤務 • 前職まではほぼシステム屋 • Java, Groovy, JavaScript, たまにRubyとかPython • JUnit実践入門

• 趣味はロードバイクとスノーボード

Page 3: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

現在のお仕事• メンバーズポータルの開発(7割) • メンバーズ加入者向けポータルサイト

• ブログ執筆(1割) • AWS、テスト、Java、Ember.js、自動化など

• AWSコンサル部の構築や調査のサポート(1割) • 札幌オフィス準備(1割)

Page 4: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

ご興味を持たれたら、 お気軽にご相談ください。

Page 5: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

メンバーズポータル• メンバーズ契約者向けのポータルサイト • ご利用明細の確認やダウンロード • 各種イベントの通知(リザーブドインスタンスの期限等) • 監査ログの統計(Cloud Trail)

• AWSに構築されたJavaアプリケーション • RDS, Elastic Beanstalk, Cloud Formationなどを活用 • バックエンドでAWSのAPIを利用して情報収集

• ユーザマニュアルもAWSを利用 • Sphinx + S3 + Cloud Front

Page 6: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

http://docs.members.classmethod.info/

Page 7: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

システム構成

Page 8: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

ドキュメントの作成

Page 9: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

Sphinx• Markdown形式のドキュメンテーションツール • reStructuredText (reST)で記述 • ソースファイルがプレインテキスト • HTMLの他、PDFやePub形式など様々な形式にビルド可能 • 目次や参照などの機能が豊富 • 構造化されたドキュメントに適する • プログラマ向き

Page 10: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

Command Line

Page 11: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

IntelliJ IDEA

File Watchermake html

outline syntax highlight

Page 12: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

S3 + Cloud Front

Page 13: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

Amazon S3• Amazon S3 (Simple Storage Service) • シンプルなストレージ(置くだけ) • 従量課金(1GB 辺り約10円/月) • 高い耐久性 • 簡単にインターネットに公開できる

静的ファイルを 安価に公開したい 場合に最適

Page 14: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

EC2とS3• Amazon EC2 • コンピューティングなリソース • 動的処理を行うことができる • 静的ファイルを配信するには割高

• Amazon S3 • シンプルストレージ • 動的処理は行えない • 静的ファイルを配信するには割安

Page 15: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

Cloud Front• コンテンツ配信のためのウェブサービス • キャッシュ • 大量アクセス対応 • 高速データ転送 • 低レイテンシ

• S3 と組み合わせることで、より効率よくコンテンツを配信

メンバーズポータルの ドキュメントサイトにおいては

必須ではない

Page 16: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

Route53

Page 17: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

Route53• DNSサービス • ドメインとIPアドレスをマッピングする • ドメインとAWSのリソースをマッピングする

• Cloud FrontやS3のアドレスにドメイン名でアクセス

http://docs.members.classmethod.info/

Page 18: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

Automation

Page 19: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

手動更新1. ドキュメントのソースを加筆修正する 2. ソースをビルドし、HTMLファイルを生成する 3. S3にアップロードする

• 何度も行うと手間がかかる • 操作ミスの可能性 • 操作完了まで待たなければならない

Page 20: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

自動化1. 開発者は、ドキュメントのソースを加筆修正する 2. 開発者は、Stash (SCM)にコミット(push)する 3. Stashは、Jenkinsに通知する 4. Jenkinsは、ビルドを行いHTMLファイルを生成する 5. Jenkinsは、HTMLファイルをS3にアップロードする

•何度行っても手間ではない •操作ミスが起きない •ローカルでソースを修正すれば、後は自動処理

Page 21: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

Jenkins

aws s3 sync --region ap-northeast-1 /var/dist/portnoy-doc/html/ s3://portnoy-docs-documentsbucket-xxxxx

export BUILDDIR=/var/dist/portnoy-doc make clean html

Page 22: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio

まとめ• S3 + Cloud Front + Route 53 • 静的コンテンツが多い場合の配信パターン • Sphinxなどで生成した静的ドキュメント • Movable Typeなど静的ファイルを出力するCMS

• S3 + CloudFrontならば自動的にスケールする • ただし、限界はある(上限緩和も必要なケース有)

• 自動化によりシステムを構築

Jenkinsを使ったSphinxとS3によるドキュメントサイト構築 ー Developers IO http://dev.classmethod.jp/cloud/aws/document-site-automation-building-with-sphinx-and-s3-using-jenkins/

Page 23: s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio