こんにちは。SREの @kazeburo です。2017年5月31日から6月2日にAWS Summit Tokyo 2017と同時に開催された「AWS Dev Day Tokyo 2017」に登壇しました。
登壇する機会をいただき、また数あるセッションの中から会場に足を運んでいただいた皆様、ありがとうございました。
発表内容
「Cloud connect the world as Glue」というタイトルにて、メルカリのインフラストラクチャの概要および変遷、そして現在のAWSをはじめとするクラウドの利用について紹介しました。
資料はこちらになります。
chocon について
スライド中で触れた chocon について少し紹介したいと思います。
choconはクラウドのRegionあるいはデータセンター外との通信を効率良く行うためのミドルウェアになります。HTTPS、HTTP/2の通信をKeepAlive/Poolingし、再利用することでレイテンシをさげるのが目的になります。
具体的には、choconに対してHostヘッダに「example.com.ccnproxy-https」とつけてリクエストを行うと、choconがhttps通信に切り替えて「example.com」に対してproxyリクエストを行います。ちなみに「example.com.ccnproxy」だとhttp通信にてproxyを行います。
choconの効果は、手元のPCからでも確認ができます。
choconを手元のmacbookにインストールして起動しました。
% ./chocon --port 5000
まず、choconを経由せずに https://example.com/ にリクエストしてみます。
% httpstat https://example.com/ Connected to 93.184.216.34:443 from 192.168.67.49:57384 HTTP/1.1 200 OK Accept-Ranges: bytes Cache-Control: max-age=604800 Content-Type: text/html Date: Sat, 03 Jun 2017 15:12:26 GMT Etag: "359670651" Expires: Sat, 10 Jun 2017 15:12:26 GMT Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT Server: ECS (rhv/818F) Vary: Accept-Encoding X-Cache: HIT Content-Length: 1270 Body stored in: /var/folders/r_/x5zvpkbd06z2dh467h6s46940000gn/T/tmprZKyNa DNS Lookup TCP Connection TLS Handshake Server Processing Content Transfer [ 5ms | 117ms | 261ms | 268ms | 0ms ] | | | | | namelookup:5ms | | | | connect:122ms | | | pretransfer:383ms | | starttransfer:651ms | total:651ms
トータルで650msec以上かかりました。次にchoconを経由します。
% httpstat http://127.0.0.1:5000/ -H 'Host: example.com.ccnproxy-https' Connected to 127.0.0.1:5000 from 127.0.0.1:57432 HTTP/1.1 200 OK Cache-Control: max-age=604800 Content-Type: text/html Date: Sat, 03 Jun 2017 15:14:09 GMT Etag: "359670651+gzip" Expires: Sat, 10 Jun 2017 15:14:09 GMT Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT Server: ECS (rhv/818F) Vary: Accept-Encoding X-Cache: HIT X-Chocon-Req: CNHYFXAU6VC5yrWcfxpDf5 Content-Length: 1270 Body stored in: /var/folders/r_/x5zvpkbd06z2dh467h6s46940000gn/T/tmpTBxC1x DNS Lookup TCP Connection Server Processing Content Transfer [ 5ms | 0ms | 110ms | 0ms ] | | | | namelookup:5ms | | | connect:5ms | | starttransfer:115ms | total:115ms
初回はchoconがサーバに接続するため、直接つなぐのと同等のレスポンスタイムとなりますが、2回目からレイテンシが改善します。example.com のIPアドレスにpingを実行した際のRTTは100msec強でしたので、最速でhttps通信ができたと言えるのではないでしょうか。
最後に
メルカリSREチームではchoconをはじめ、いくつものミドルウェアを開発し、運用しております。ミドルウェアやインフラストラクチャ、SREについてもっと詳しく知りたい、聞いてみたいという方がおりましたら、こちらから連絡をしていただけたら嬉しいです。