ベルトラ株式会社は、海外現地オプショナルツアーを専門に販売するサイト「VELTRA(ベルトラ)」を運営しています。同サイトは世界150ヶ国を数える対応エリアと27,000にのぼるツアー・アクティビティ商品、4,000社に及ぶ国内外の旅行主催会社とのパートナーシップを誇ります。単なる旅行プランのマーケットプレイスではなく、旅行催行会社が提供する旅行プランを世界中の旅行者に魅力的に見せることに注力し、また旅行者が安心してツアーに参加できるようにカスタマーサポートも提供しています。
今回ベルトラが導入した「Cloudinary」は、画像や動画などのデジタルコンテンツを一元管理し、ユーザ環境に最適化されたフォーマットでの配信、表示を自動化することができるサービスです。同社は、これとほぼ同等の機能を持つ画像最適化ツールとCDNがセットになった他社サービスを、これまで2年程利用していました。既存サービスは契約形態が固定的で、旅行業というシーズナリティのある自社ビジネスの特性に対して、柔軟性が無いことが社内で課題になっていました。
機能的な要件を満たし、なおかつ既存サービスと比較してコスト削減し、柔軟性のある構成にしたいと考えたベルトラは、画像最適化ツール「Cloudinary」とAWSのCDNツールであるAmazon CloudFrontを組み合わせて導入を行いました。この導入における経緯と成果、またクラスメソッドがどのように貢献できたかについて、サービスプランニングアンドテクノロジー課 Vice President of Technology 松尾 直幸様に詳しくお話をうかがいました。
季節によるアクセス変動への対応が課題
ベルトラはツアー・アクティビティ専門のマーケットサイトであり、旅行先の魅力的な写真の数々は、旅行者の契約意欲に直接影響する非常に重要な要素です。一方で、ツアー・アクティビティの検索サイトとしての側面では、ページレスポンスの早さも非常に重要です。そのため、2年以上前から画像最適化ツールを導入し、運用してきたそうです。
「利用者が目にする映像コンテンツについて、どの程度の解像度や品質で提供するのが適切なのかという判断は、ウェブサイト構築のエンジニアがやるよりも専門の外部サービスに任せてしまった方が、妥当な画像サイズで提供してくれると思います。弊社も画像配信を効率的にやりましょうということで、これまでも画像最適化ツールを利用してきました」(松尾さん)
初期は画像最適化ツールを自社開発して利用していたベルトラですが、2年ほど前にCDNサービス会社がオプションで提供する画像最適化ツールの利用に切り替えたそうです。ただ、このサービスはピーク時の使用量が利用費の固定額に反映される契約形態であり、ウェブサービスへのアクセス数や処理数が伸びていくにつれて、月々の固定額が高くなっていく性質を持っていました。オフシーズンにも繁忙期と同額の利用費が発生してしまうため、適切なコストダウンを検討できないかと経営陣から課題が提起されました。機能的に要件を満たした上でのコストダウンが見込めるサービスはないか調べていた時に、後発サービスである「Cloudinary」を見つけ、導入を考え始めたそうです。
「アクセスにシーズナリティのある弊社の場合、調整できるところが多ければ多いほどコストメリットが大きいという面があります。Cloudinaryは固定の月額費用がかかりますが、CDNについてはAWS CloudFrontにすると完全従量課金となり、アクセスが少なくなる時期の費用が削減できるようになります。弊社にとってはコストの面についても適したサービスだと思いました」(松尾さん)
Cloudinaryパートナーのクラスメソッドでスピード導入
「Cloudinaryをどのように導入しようかと考えていた時に、たまたまクラスメソッドさんが『Cloudinaryの日本の代理店になりました』というリリースを出しているのを見たんです。クラスメソッドという会社は、技術ブログ「Developers.IO」の情報を頼ることも多く、IT業界に身を置いていれば誰でもどこかで耳にしたことはある会社さんだと思っています。また、社内にも元クラスメソッドの社員も居まして、どういった企業なのかはだいたい分かっていました。そこで、クラスメソッドさん経由で導入を検討したいと思いまして、問い合わせフォームからご連絡させていただきました」(松尾さん)
クラスメソッドからはCloudinaryが元々、画像管理システムとしての生い立ちがあることや細かい機能をお伝えしました。ベルトラ社が求める要求仕様はクリアできる上に、プラスアルファの付加価値があることも決め手となり導入が決定しました。また、今回の導入検討にあたっては、社内リソースをあまり使えない状況であったこともあり、プレイングマネージャーがほぼ1人で対応できるかどうかも判断の材料となったようです。
「導入についてはクラスメソッドのベルリンチームのメンバーが対応してくださいましたが、タイムラグを感じさせない非常に手厚いフォローをしていただきました。コミュニケーションはSlackやGitHubを使い、不安な点などを一つ一つ潰していくというステップで対応いただきました。クラスメソッド経由でCloudinaryへ質問を送ったこともありましたが、だいたい期待以上の応答速度で返ってきたので、全然不安に感じるようなことは無かったですね」(松尾さん)
また、ソースコードの修正が必要なかったことも、導入時の負担を減らすことに大きく寄与しました。URLパスの差分を吸収するために必要だったLambda@Edgeの実装に関しては、クラスメソッドから提供した雛形をもとに、松尾さん自身でパラメータを調整しました。書き方やパラメータの意味を把握するのに時間は必要だったものの、実装は実質100行程度の負担で、作業そのものも7〜8時間で済んでしまったとのことです。
「実際にテスト環境で試せるようになるまでに、ほとんど時間はかからず、あっという間にできるようになったという印象でした。テスト環境を引き渡していただいた後の作業や検証のやり方なども丁寧にご説明いただいていたので、技術的な障害は何も無かったですし、とてもやりやすかったですね。評価にしっかりと時間をかけることができました」(松尾さん)
肝心の切り替えは、既存サービスとCloudinaryの両方を重複契約している期間中に行いました。何かあったとしても切り戻して問題解消できるという余裕を持って行いましたが、作業自体はDNSサーバで参照先を既存CDNサーバからCloudFrontに書き換えるだけという、負担の少ないものとなりました。
コロナ禍によるアクセス急減にもコスト最適化を実現
画像最適化ツールのリプレースは、一目でわかるような違いは出ないものです。しかし、評価用サイトで応答速度を計測すると、ページ表示にかかるトータルのデータ転送量が既存サービスよりも約15%削減できており、画像表示や応答速度という面でも多少良くなっていることが感じられたそうです。リプレースに関して社内からの問い合わせなどの混乱もなく、画像最適化の機能を維持するという要件に対しては満足いく結果となったようです。またクラスメソッドからのドキュメントを社内展開することで、部内での情報共有も問題なく完了しています。
「折しもこのコロナ禍で旅行業は冷え込んでしまい、ウェブサイトへのアクセスが大幅に減ってしまう事態となりました。そのため、元々の課題事項であった『シーズンに合わせたフレキシビリティあるコスト負担にしたい』という方針のメリットが最大限発揮されることになり、Cloudinaryに載せ替えたことによるコストダウンに加えて、アクセス減に応じた利用費の節約もできました。以前のサービスの契約形態ではアクセスが減少しても固定額を支払う必要があったため、コストの最適化ができたことは非常に助かりました。」(松尾さん)
今後は、Cloudinaryのコンテンツモデレーション機能なども活用し、ボカシなどの画像処理の実施や、画像への自動タグ付けにより旅行者が検索したキーワードに該当する画像と旅行プランを提示するなど、旅行者にとって利便性のあるサービスの検討を行っていくとのこと。また、Cloudinaryの画像最適化配信によって、画像は基本の1枚だけ用意すれば自動的にリサイズして表示されるようになったため、以前に用意したサイズ違いの多数の画像が不要になっています。これらの画像は、現在は同社が以前から使用しているクラウドストレージで管理しているということなのですが、いずれはこれもAWSクラウドに移行して整理し、より利用しやすくコスト削減が可能な構成を検討いただいているようです。
導入いただいたCloudinaryの機能についてのフォローはもちろんのこと、クラスメソッドはWebサイト運用や画像コンテンツ配信に関してもAWSクラウドの活用をご提案・支援することで、ベルトラ様の未来をこれからもサポートしていきます。