Retty のサービスを支える Fastly の導入レビュー
Retty株式会社 / pyama2000
メンバー / バックエンドエンジニア
利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 |
---|---|---|---|
カスタムプラン | CDN / セキュリティ | 10名以下 | 2018年6月 |
アーキテクチャ
![アーキテクチャ図](https://cdn.findy-tools.io/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZHM9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b1e5059684904153b8d4746f5511f44c1c0bb3a8/Findy%20Tools%20%E5%AF%84%E7%A8%BF%E7%94%A8%E3%81%AE%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E5%9B%B3.png?disposition=inline)
アーキテクチャの意図・工夫
Retty では口コミ関連の画像や飲食店の雰囲気がわかる動画などのメディアコンテンツを Amazon S3 に保存しています。また、アプリケーションの実行基盤として Amazon ECS を利用していて、その前段に Fastly Next-Gen WAF のエージェントを配置してアプリケーションの保護をしています。
Retty は Fastly Next-Gen WAF を日本で最初に導入したため AWS 環境にデプロイしていますが、今はエッジへのデプロイも可能です。( アーキテクチャとデプロイの概要 )
また、監査や障害発生時、分析のために Fastly のアクセスログを S3 に保存するようにしています。
導入の背景・解決したかった問題
導入背景
Retty では料理写真をリサイズして配信するところから Fastly 社のサービス利用を始めました。 サービス成長に伴って内製のページキャッシュ機構の運用工数が嵩んだり、上場前後でWAFの導入などサービスセキュリティの見直しが必要になったりと、直面する問題が変わるたびにツール・SaaSの導入検討をし、結果としてFastlyの採用が増えています。
ツール導入前の課題
Retty ではユーザーが飲食店の料理や内観・外観の写真などの画像を複数の大きさにリサイズして最適なサイズで配信する仕組みを自社で構築していました。しかし、サービス利用者数や口コミ数の増加に伴い、トラブルやサーバーの負荷を軽減するための運用負担、サーバーリソースの増強によるコストが課題となりました。
また、内製運用していたページキャッシュの仕組みも問題を抱えており、キャッシュが消えないなどの問い合わせへの対応やキャッシュヒット率の低さも課題でした。
さらに、上場前後でサービスのセキュリティを見直す必要があり、これも大きな課題として浮上していました。
そこで自社で運用していた画像配信やページキャッシュの仕組みの負担を軽減し、機能開発に注力できる状態を目指しました。
比較検討したサービス
- Amazon CloudFront (画像のリサイズ・配信 / ページキャッシュで比較)
- AWS WAF (セキュリティ対策として比較)
比較した軸
- 既存の画像 URL を変えずに最適化された画像のリサイズして配信する仕組みを大きな工数をかけずに導入できる
- ページキャッシュの仕組みがシンプルかつ運用負担にならない
- セキュリティ対策の運用が負担にならない、特に WAF のルールの管理が不要
選定理由
Fastly は「比較する際に重要視していた点」をすべて実現できる最適なプロダクトでした。
画像のリサイズ・配信の仕組みを Amazon CloudFront で検討した際に、サービス単体では画像を最適な大きさにリサイズできないため断念しました。また、キャッシュパージの仕組みも複雑になるためやりたいことを実現するのが困難でした。
一方で Fastly を利用することで既存の画像 URL を変えずに画像のリサイズ・配信が簡単に実現でき、キャッシュキーを追加することで一括で関連するキャッシュをパージする仕組みをシンプルにできました。
セキュリティ対策においては AWS WAF の検討もしていましたが、画像配信・ページキャッシュで実績のある Fastly を中心に比較して、ルールの管理が不要という点が魅力的に感じて導入を決めました。
導入の成果
改善したかった課題はどれくらい解決されたか
Fastly の機能を活用してページキャッシュによる問題の解決とオリジンサーバーの負荷軽減を実現できました。
画像配信に関しても同様に、ほぼ運用レスの状態になり機能開発に注力できるようになりました。
また、セキュリティ対策でサービスの安定性・信頼性の向上をに繋がりました。
どのような成果が得られたか
- ページキャッシュ
すべてのリクエストが Fastly を経由するためキャッシュ効率が良くなり、またキャッシュパージの仕組みをシンプルにすることができました。( 自前で運用していたキャッシュサーバーの移行事例 )
これにより、サービスを安定的にユーザーに提供することができるようになりました。 - セキュリティ対策
飲食店のクチコミや画像といった価値のあるデータもあることから、攻撃やクローリングの脅威にさらされています。そこで、Fastly の Next-Gen WAF で XSS や SQL インジェクションなどの攻撃を遮断したり、Edge Rate Limiting を利用してレート制限を設けることでサービスを保護することができました。
詳しい導入事例は Fastly の次世代 WAF Signal Sciences の主要機能と Retty での導入事例 と Fastly の Edge Rate Limiting で苦労せずレート制限を実装する にて紹介しているのでぜひご覧下さい。 - 画像や動画の配信最適化
画像配信のトラブルによってエンジニアが長時間対応するケースもありましたが、最適化された画像の配信が Fastly 単体で完結したことで画像処理・配信をしていたサーバーが不要となったため、運用負担がほぼなくなりました。 さらに、属人化していた画像配信の設定を Fastly の設定言語である VCL (Varnish Configuration Language) でコード化することができたため、情報共有や機能の追加が容易となりました。
また、2022年にお店の雰囲気が分かるような動画を店舗ページに表示するようにしましたが、こちらも Fastly の On-The-Fly Packeger を活用して各ユーザーに最適化された動画の配信を簡単に実現することができました。
導入に向けた社内への説明
上長・チームへの説明
サービスが成長したことにより、自前で何かをするよりも外部サービスを利用して開発・運用負担を軽減したい要望が開発部門全体でありました。運用負担やサーバーリソースのコストを比較した結果、Faslty による費用対効果が高かったため導入を決めました。
活用方法
よく使う機能
- 画像・動画コンテンツの配信最適化とキャッシュ
- オリジンサーバーの負荷軽減のためにページ単位でのキャッシュ
- セキュリティ対策
- WAF
- レート制限
ツールの良い点
- サービスを安全に運用していくうえで必要なプロダクトが豊富
- 丁寧かつ手厚いサポート
- Custom VCL を定義することで柔軟な設定が可能
- ドキュメント と VCL や Compute の例が充実している
ツールの課題点
- 機能が豊富でキャッチアップや100%で活用できているとは言えない
- 日本語のドキュメントや技術記事が少ない
ツールを検討されている方へ
Fastly は十分な無料プランが提供されており、初めての方でも気軽に検証を行うことができます。サポートも手厚く、質問や問題が発生した際に対応してもらえるので安心です。実際に使ってみることで、その豊富な機能によって課題解決に役立つソリューションを見つけることができるでしょう。ぜひ一度試してみることをお勧めします。
Retty株式会社 / pyama2000
メンバー / バックエンドエンジニア
Retty株式会社 / pyama2000
メンバー / バックエンドエンジニア
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法