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.

Cloud frontの落とし穴

0 views

Published on

2017/10/14 JAWS-UG NAGANO でのスライド

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Cloud frontの落とし穴

  1. 1. CloudFrontの落とし穴 2017/10/14 JAWS-UG Nagano reboot
  2. 2. 始める前に なんか質問出来る機能とかあるみたいなので匿名でもテストでも何でも良いので 質問意見お願いします!
  3. 3. お前 誰よ ・長野市の某零細企業でDjangoでrequestに対してjsonを 返すだけの簡単なお仕事をやってます ・AWS使ってます ・IT技術よりはアニメや地下アイドルなどの現代サブカル に興味があるのでこちらへの質問大募集! ・twitter:@nakajidamedeath
  4. 4. 一応こんなのも持ってます
  5. 5. 注意! 多分解決方法は他にも色々あると思われる!
  6. 6. きっかけ 最近、CloudFrontを導入する機会があったのでそれに伴って 起きたトラブルと解決方法の話をしようと思います
  7. 7. CloudFrontとは・・・(BlackBeltより抜粋) 出典「https://d0.awsstatic.com/webinars/jp/pdf/services/20170927_AWS-BlackBelt-CloudFront-LambdaEdge.pdf」 AWS BlackBelt「CloudFront」
  8. 8. 要するに ・処理が重たいページでも二人目以降が同じページを開いたときにはさくさくに なるよ! ・後ろにいるサーバーの負荷が低くて済むのでEC2の台数やサイズの節約に繋が る! ・世界中のどこからアクセスしても近くのエッジロケーションからデータ持って きてくれるよ! ・適当な重いクエリを書いても許される
  9. 9. すごく便利!
  10. 10. ,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; ヾ;;;ハ ノ .::!lリ;;r゛ `Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が ,;ぇハ、 、_,.ー-、_',. ,f゛: Y;;f. 俺にもありました ~''戈ヽ `二´ r'´:::. `!
  11. 11. やっていた仕事について gigazineみたいなサイトにjsonを送る仕事 ・トップページがあって ・記事が個別にあって ・カテゴリーが付いてて・・ ・画像がたくさんあって・・・ ・見るだけのユーザーサイト ・ライター用の管理サイト ・記事の更新に合わせてCloudFrontのキャッ シュを消すよう作成 ・記事の公開時間になったらキャッシュを消 すバッチ
  12. 12. 運用を開始して少し経った頃から・・
  13. 13. ライター3/怒りの問い合わせ 管理サイトから記事を更新しても表示が古い! 記事の公開時間になっても表示されない!
  14. 14. 原因:キャッシュ削除がエラーしてた →ざっくり言うと頻繁に消しすぎ!ってエラー
  15. 15. そもそも・・ “Invalidation Request は、本来予期しない間違ったコンテンツのアップロ ードなどに対応するために用いられるもので、コンテンツの更新を目的 としたものではございません。 誠にお手数ではございますが、コンテンツの入れ替えのために Invalidation Request のご利用は避けて頂き、短い TTL のご設定やファイ ル名変更での対応をご検討下さいますよう宜しくお願いいたします。“ awsのforum https://forums.aws.amazon.com/thread.jspa?messageID=309850
  16. 16. /(^o^)\
  17. 17. 対策 ①TTLを設定してみよう案 ・そもそもライターさんがいつ更新するか分からない ・せっかくキャッシュがあるのに期限切ればかりおこしていてもつま らない→不可 ②キャッシュ削除のタイミングと内容を細かく制御 ・全部のURLをざっくり消すのを辞める(消すオブジェクトの 数を減らす) ・更新内容に応じて、無駄に削除しないようにIF文をたくさん 書く→採用 さらにもう一つ最終手段を付与・・・
  18. 18. 最終手段:キャッシュ削除ボタンを用意 キャッシュ削除ボタンを用意してライターさんの力でキャッシュ削除をできるようにす る!(できるとは言っていない) MAKE Invalidation Cache AGAIN キャッシュをインター ネットの海に沈める!
  19. 19. 罠はもう一つ・・
  20. 20. パスが多すぎて消せない キャシュ削除の挙動を細かく制御するためにパスを細かく指定しまくった 結果、以下の制限にひっかかる http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuid e/Invalidation.html#InvalidationLimits * ワイルドカードを使用している場合、最大 15 個の 無効化パスのリクエストを一度に作成できます。ま た、進行中のディストリビューションごとに最大 3,000 個の個別のオブジェクトを同時に作成するこ とができます。
  21. 21. TTLを設定しよう! RSSなど、ほぼほぼ決まった時間にアクセスが来 るようなものはTTLを短く設定して、必ずオリジン サーバーにアクセスが来るようにすれば消す必要 もなくなるのでパス数の節約につながる!(そもそ もキャッシュできないようにしていれば良かった んですが)
  22. 22. 課題 正直他のサイトはどうやってるのか調べてからそれ をパクるのが正解のような気がしてきた・・・
  23. 23. どうであれ 今の運用方法でキャッシュヒット率7割(多い のか少ないのかは不明)だしているのでなん とか回ってるのかなーと思いつつ、 CloudFrontの導入は要検討しましょう
  24. 24. 以上です。 CloudFrontは便利だけど適当に使い始めると運用タイ ミングで色々と悩みが出てくるので、気をつけましょ う! なんとなく導入してしまっても今回のような方法を取 れば取り返しはつくよ!
  25. 25. 質問がなければお勧めの地下アイドルの紹介をしま す

×