こんにちは。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についてもっと詳しく知りたい、聞いてみたいという方がおりましたら、こちらから連絡をしていただけたら嬉しいです。