Maria de Angelis | Summer 2019 Pinterest Engineer Intern
HTTPS はどこでもあるはずです。 あなたの Web サイトはおそらく HTTPS で動作し、ユーザーに安全で暗号化された接続を提供しますが、すべての送信リンクはどうでしょうか。 すべてのリンクが HTTPS を使用していることを保証できますか? この投稿では、DuckDuckGo の Smarter Encryption テクノロジーを活用して、ピンへのリンクを HTTP から HTTPS にアップグレードした手順を説明します。
Why HTTPS?
Pinterest は完全に HTTPS で動作していますが、ほとんどのユーザーにとって最終目的地ではありません。 Pinterestは、Pinnerが好きなものを発見して実行する場所として、他のWebサイトに到達するための出発点となっています。 これには、可能な限り、ピンへの送信リンクを HTTP から HTTPS にアップグレードし、HTTPS を介したトラフィックの割合を最大化することが含まれます。 Pinner が Pin のリンクをクリックすると、コンテンツが HTTP URL で作成されている場合、HTTP サイトに送信されます。 しかし、そのサイトが HTTPS に対応している場合は、代わりに HTTPS バージョンにユーザーを送りたいのです。 改善後、アウトバウンド トラフィックの約 80% が HTTPS を介して行われるようになり、30% 以上増加しました。
この変更が重要な指標に干渉しないようにするため、この変更をユーザーの 1% に解放し、同等のコントロール グループと比較する実験を実施しました。 ベンチマークとなるPinterestの指標に変化がないことがわかったので、より多くのPinterestユーザーにこの実験をリリースしていきます。
Figure 1: このPinterestボード内のPinはリンク先のプロトコルによりカラーコード化されています。 HTTPSのリンクは緑、HTTPのリンクは赤で表示されます。 2971>
Smarter Encryption by DuckDuckGo
できるだけ効率的に作業するために、DuckDuckGo の Smarter Encryption テクノロジーを統合し、ウェブサイトへの接続が可能な場合は自動的に暗号化を使用できるようにしました。 DuckDuckGo は、アップグレード可能なサイトの包括的なリストを保持しており、サイトの HTTP バージョンと HTTPS バージョンを比較し、2 つのバージョンが同じ場合は HTTPS アップグレード リストにサイトを追加することで生成されるので、私たちにとって完璧なソリューションとなりました。 2971>
Pinterest Architecture
Pinterest のホームフィードをユーザーがスクロールすると、API レイヤーでピンを取得する要求が行われ、Apache Thrift サービスの PinAndBoardService を呼び出し、その後 MySQL データベースからピンをフェッチします。
図 2: Pin フェッチアーキテクチャの簡略図です。 API層はPinAndBoardServiceにリクエストを行い、キャッシュまたはMySQLからPinを取得する。
概要
ピンリンク変換を実装するために、次のことを行う。
Next steps
As we move forward, we are exploring permanently upgrade Pins to secure HTTPS links upon creation, a big step towards universal HTTPS usage and increased security for all users on our platform.これは、ピン作成時に安全な HTTPS リンクに恒久的にアップグレードすることを検討しています。 また、すべてのユーザーのユーザー エクスペリエンスを向上させるために、DuckDuckGo の Smarter Encryption に貢献できるよう、現在アップグレードできないリンクの追跡も行っています。 また、サポートを提供してくれた CoreService、Storage & Caching、および API チーム、そして Smarter Encryption テクノロジーへの早期アクセスを提供してくれた DuckDuckGo にも多大な感謝を捧げます。