s3+cloud frontによる静的コンテンツ配信 - sphinx編 #cmdevio
DESCRIPTION
クラスメソッド主催 AWS勉強会in札幌でのスライド資料です。TRANSCRIPT
S3 + CloudFrontによる 静的コンテンツ配信 - Sphinx編 -
2014.03.21 AWS勉強会 in 札幌
クラスメソッド 渡辺修司
About Me• 渡辺修司 • 昨年8月よりクラスメソッド • 在宅勤務 • 前職まではほぼシステム屋 • Java, Groovy, JavaScript, たまにRubyとかPython • JUnit実践入門
• 趣味はロードバイクとスノーボード
現在のお仕事• メンバーズポータルの開発(7割) • メンバーズ加入者向けポータルサイト
• ブログ執筆(1割) • AWS、テスト、Java、Ember.js、自動化など
• AWSコンサル部の構築や調査のサポート(1割) • 札幌オフィス準備(1割)
ご興味を持たれたら、 お気軽にご相談ください。
メンバーズポータル• メンバーズ契約者向けのポータルサイト • ご利用明細の確認やダウンロード • 各種イベントの通知(リザーブドインスタンスの期限等) • 監査ログの統計(Cloud Trail)
• AWSに構築されたJavaアプリケーション • RDS, Elastic Beanstalk, Cloud Formationなどを活用 • バックエンドでAWSのAPIを利用して情報収集
• ユーザマニュアルもAWSを利用 • Sphinx + S3 + Cloud Front
http://docs.members.classmethod.info/
システム構成
ドキュメントの作成
Sphinx• Markdown形式のドキュメンテーションツール • reStructuredText (reST)で記述 • ソースファイルがプレインテキスト • HTMLの他、PDFやePub形式など様々な形式にビルド可能 • 目次や参照などの機能が豊富 • 構造化されたドキュメントに適する • プログラマ向き
Command Line
IntelliJ IDEA
File Watchermake html
outline syntax highlight
S3 + Cloud Front
Amazon S3• Amazon S3 (Simple Storage Service) • シンプルなストレージ(置くだけ) • 従量課金(1GB 辺り約10円/月) • 高い耐久性 • 簡単にインターネットに公開できる
静的ファイルを 安価に公開したい 場合に最適
EC2とS3• Amazon EC2 • コンピューティングなリソース • 動的処理を行うことができる • 静的ファイルを配信するには割高
• Amazon S3 • シンプルストレージ • 動的処理は行えない • 静的ファイルを配信するには割安
Cloud Front• コンテンツ配信のためのウェブサービス • キャッシュ • 大量アクセス対応 • 高速データ転送 • 低レイテンシ
• S3 と組み合わせることで、より効率よくコンテンツを配信
メンバーズポータルの ドキュメントサイトにおいては
必須ではない
Route53
Route53• DNSサービス • ドメインとIPアドレスをマッピングする • ドメインとAWSのリソースをマッピングする
• Cloud FrontやS3のアドレスにドメイン名でアクセス
http://docs.members.classmethod.info/
Automation
手動更新1. ドキュメントのソースを加筆修正する 2. ソースをビルドし、HTMLファイルを生成する 3. S3にアップロードする
• 何度も行うと手間がかかる • 操作ミスの可能性 • 操作完了まで待たなければならない
自動化1. 開発者は、ドキュメントのソースを加筆修正する 2. 開発者は、Stash (SCM)にコミット(push)する 3. Stashは、Jenkinsに通知する 4. Jenkinsは、ビルドを行いHTMLファイルを生成する 5. Jenkinsは、HTMLファイルをS3にアップロードする
•何度行っても手間ではない •操作ミスが起きない •ローカルでソースを修正すれば、後は自動処理
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
まとめ• 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/