読者です 読者をやめる 読者になる 読者になる

facebookの13億ユーザーを支えるロードバランサーの話

最近、SREが話題ですね。

tech.mercari.com www.wantedly.com

ということでSREについて調べてたら、SREconなんてものが開催されていたので中を見てたら、「Building a Billion User Load Balancer」というタイトルでFacebookDNS〜LBまでの話があったので、そのメモです。

Building a Billion User Load Balancer | USENIX

tl;dr

  • tinydns + IPVS で Facebook規模はいける
  • httpsの接続確立はかなり重い(RTTの4倍 = RTT 150msとするとGETまで600ms)ので、太平洋越えとかは厳しい
  • httpsを終端させるCDNとかは活用の可能性ありそう (国内だけを考慮するなら影響は軽微かも)

メモ

  • L4 LB
    • shiv (IPVS + python-wrapper) を利用 (OSSにはなっていなさそう?)
    • IPIPカプセリングしてDSR(Direct Server Return)
  • L7 LB
  • ルータ 〜 L4 LB
    • BGPによるECMP Hash
  • L4 LB 〜 L7 LB
    • Consistent hashingで行なっている
  • DNS(tinydns)でロードバランシング
    • DCはUS 4ヶ所、EUに1ヶ所
  • POPを世界中にもっている
    • POPにはL4 LBとL7 LBを配置している
    • https接続は重いのでできるだけ近くで終端する必要がある
      • httpはtcpの3way + httpの1往復
      • httpsだとそこにtlsの2往復が加わってさらに厳しくなる
  • POP内のL7 LBから(別DC上の)アプリケーションサーバーへのhttpsは事前に張っておく
  • 5分に一度DNSマッピングを生成
# dig facebook.com
...
;; ANSWER SECTION:
facebook.com.       113 IN  A   173.252.120.68
...

SORACOM Airを使ってみた #soracom

本日発表されたSORACOM AirのSIMを事前に使わせていただけたのでトライしてみました。 サービスの詳細はTechCrunchの記事が詳しいので、そちらを参照してください。

jp.techcrunch.com

blog.soracom.jp

SORACOM Airの最大の特徴は、定額な基本料金(10円/日)と完全従量制による価格体系で、通信帯域を動的にAPIで変更できることです。 また容量は事前申請ではなく、AWSのように使った分だけの事後清算ですので、 うまい使い方をすればするほど安くなる特徴があります。

SIMはSORACOMの管理画面もしくはAmazonから買えます。 (初日から買えるのはすばらしい)

SORACOM Air SIMカード(データ通信のみ) (ナノ)

SORACOM Air SIMカード(データ通信のみ) (ナノ)

SORACOM AirDocomoのMVNOですのでSIMはDocomoのものと同様です。

f:id:stanaka:20150930122256j:plain

SIMを挿入して、さらっとAPNを設定します。

f:id:stanaka:20150930134634p:plain:w240

このSIMをアクティベートするとこんな管理画面が出てきます。

f:id:stanaka:20150930122228p:plain

ここの「Speed class」で速度をいつでも変更できます。これは新しい体験ですね!

SORACOMの価格体系

SORACOM Airの価格体系で一番安いs1.minimumは32kbpsで1MBあたり、上りが0.2円、下りが0.6円です。深夜時間帯料金も設定されていて、AM2-6は下りも0.2円とさらに安くなっています。

例えば、温度湿度センサーのデータ(1回1KBと仮定)を毎分SORACOM Air経由で送るとすると、データ量は

{1024 (Bytes) \times 43200 (回) \approx 44.19 MB}

ですので、

{44.19 (MB) \times 0.2 (円/MB) \approx 8.44 円}

となります。実際には深夜時間帯価格がありますので、さらにお安くなります。 基本料金と合わせて、月額309円(1ヶ月30日の場合)で3G通信を利用したセンサー環境を構築できます!

もうすこし早いs1.standardの512kbps(上り0.24円/MB 下り0.8円/MB)を利用したとしても従量部分は10.13円となりますので、 それほど変わらずに構築できます。 また1分間隔ではなく、10秒間隔としても従量部分が約50.63円で計351円と、従来の格安SIMと比べても十分お安いですね。

もっとも普通のスマホに差して、1GB, 2GBと使うとそれなりの価格になってきます。 たとえば、2Mbpsのs1.fastで下り1GB使うと従量部分が1024円になり、さらにそれ以上使う可能性があるのであれば、他の格安SIMのほうが安いケースが多そうです。 ちなみにスマホで使う場合、s1.minimum(32kbps)はさすがに遅いので、s1.standard(512kbps)は必要でしょう。

Raspberry Piで使いたい!

これを個人で遊ぼうとすると、Raspberry Piに3Gモジュールを差して、という話が多そうです。 こちらはまだ試せていないので、早めに試してみたいと思っています。 ただ、いまの3Gモジュールは小ロットではけっこう高く( 3GPI(Raspberry Pi 向け3G通信モジュール) だと1個購入時 29,800円)て、 これにさらにいろいろ加えて一通りの機能を持ったものを作ろうとするとそれなりの値段になってしまいます。

ASUS Zonefone2はあれだけの機能が詰まっていて 24,835円 (参考 expansys) なので、3Gモジュール部分がこれからどんどん値が下っていって例えば10,000円を切るところまでいってくれると、個人や、小ロットのビジネスでも手が出しやすくなるので、期待したいです。

SORACOMの中身

先日、中身の話を聞く機会があったのですが、TechCrunchの記事にもあるように、従来は専用ハードウェアだった内部システムは全てAWS上にソフトウェアで構築されているそうです。 従来はハードウェアが必要だったところをソフトウェアのみで実装することでイノベーションを起こす、という流れでしょう。 CTOの安川さんに聞いたところ、ソフトウェア自体は3GPPの仕様は公開されているので、作ること自体はすごく難しくはないですよ、とのことでした。このあたりを頑張ると自分でもDocomoとの接続まで含めてできそうですね!

ascii.jp

またデータストアはDynamoを駆使し、通信のコア部分はCで書いている、とのことです (安川さんの出身からErlangが期待されるのですが(笑))。 AWS出身のエンジニアが多いのでAWSを使い方についても気になるところです。 DynamoDBもたまに障害を起こすので、そのような場合に備えてAWSの裏表を知りつくしたエンジニアがどのような設計をしているか是非知りたいですね!

さいごに

今日からいろいろブログエントリもあがってきますので、いろいろな使い方が広がっていくことを楽しみにしています!

blog.soracom.jp

追記(9/30)

温度湿度センサーによるデータ通信費の試算が上りの料金を使うべきところを下りの料金を使っていましたので、正しく上りの料金を使うように修正しています。

Docker Meetup Tokyo #3 を開催しました

7/4にDocker Meetup Tokyo #3を開催したので、その報告です。今回は日経さんに会場を提供していただいたのですが、非常に良い会場でありがとうございました! また動画配信にご協力いただいた@cojiさんもありがとうございました!

(@peryaudoさんのDockerレイトレデモでのmobydockモデルより)

今回のmeetupは、6月上旬にDockerConが開催されDocker 1.0を始めとする様々なプロダクトが発表されたことを受け、この波を活かすために#3として開催しました。 冒頭に会場でDockerの利用状況を挙手で聞いてみたのですが、触っている人 7割、開発サーバーやテストサーバーで使っている人 3割、プロダクションで使っている人 4,5名(数台規模)という現状で、まだまだ本格的な展開はまだまだこれから、ということが分かりました。

ただ、コンテナ管理ツールへの各社からの積極的なサポートも発表(Microsoft、Red Hat、IBM等がGoogleのDockerコンテナ管理ツール、Kubernetesサポートで団結)されていますし、急速に周辺環境は整いつつあります。おそらく来年の今ごろにはプロダクション環境で使っている人も珍しくはなくなるんじゃないでしょうか。

Meetupも第4回、第5回と続けて、いろいろな知見を共有できればと思っていますので、ネタを仕込んでいる方々は是非お知らせください。(@yuguiさんも次回こそ是非お願いしたいです!)

今回のトーク&LTの一覧です。空いているところは資料がアップされ次第埋めていきます。

トーク(20〜30分)

Orchestration Tools @philwhlnさん

Monitoring Docker with Mackerel @stanaka

Dive into Docker @mainyaaさん

flynnの時代 @deeeetさん

LT(5分)

How to Impl lib swarm backend @mopemopeさん

Docker+CoreOS+GCEで自動スケール分散レイトレ @peryaudoさん

Porting Docker to FreeBSD @kzysさん

perfomance Evaluation of Docker @nasunomさん

Docker-flow@Gnossy @y_matsuwitterさん

まとめ

イベントの概要は既にQiitaなどにまとめてくれていただいていますので、こちらも合わせて参照ください。

では、また次のmeetupで会いましょう!!

JAWS DAYS 2014 Immutable Infrastructure パネルディスカッション

JAWS DAYS 2014のImmutable Infrastructure パネルディスカッションでモデレーターをしましたのでそのまとめです。満員でしたので、ご覧になった方々にはありがとうございました!

f:id:stanaka:20140315215045j:plain

事前に勉強も兼ねて、次のメモを書いておいた( https://gist.github.com/stanaka/9547623 )のですが、このパネルでは個人的にも議論してみたかった話も含め、6名のパネリストに以下の質問をさせてもらいました。

  • IIを突き詰めていくと、どんどんPaaSに近づいているのでは?
  • IIを実現する上で、なにが一番の課題となるか?
  • Statefulサーバーはどのように扱うべきか
  • 最後に一言

冒頭の最初のIIを突き詰めるとPaaSになっていくのでは?という話では「技術的にどんどん新しいハード、ツールは出てくるので、ニーズはPaaSとIaaSの間を揺れ動くことになると思う」(@mirakuiさん) 「エンタープライズなど、PaaSではカバーできない要件のシステムは相当な規模が残る。エンタープライズな人は」(@naoya_itoさん) 「DevOpsからNoOpsになっていくという話もある」(@sawanobolyさん)という話がありました。IaaSからPaaSと抽象度が高くなるにつれ、サービス仕様が汎用的になり、新技術の導入スピードも必然的に落ちていくので、ニーズが揺れ動くという話や、エンタープライズで難しい領域は残る、という話は説得力がありました。

IIを実現するところでの課題でもいろいろな意見があり、「そもそも継続テストしようとか先にやるべきことがまだまだあるところが多い」(@ryuzeeさん)や「IIという概念があることで、どういう方向を向いてコードを書けばよいかが分かる。そうすれば将来IIにする時もスムーズにいける」(@kentaroさん)というII導入以前の状態の観点からの意見が多くありました。また「ツールの成熟や事例を積んでいく必要がある」(話者は失念..)という意見もあり、具体化するにはまだまだ課題が多いですね。

また皆さんStatefulのところは、(私も含め)まだまだ良い手はないようですが、「アプリケーション側がIIのスタイルになっていくことで、データベースも(開発用に)ブランチが簡単に切れたりなると面白い」(@naoya_itoさん)というアイデアはなかなか魅力的でした。データベース側はなかなか制約が大きく重いので、簡単な解決策は難しいですが、徐々に新しい手段が導入できるようになると面白そうです。

最後の一言では、@kentaroさんの「Immutable Infrastructureは、日本伝統の伊勢神宮式年遷宮と同じですので、いわば式年遷宮アーキテクチャです」に全部もっていかれました。

Immutable Infrastructureはこれまで一部では既に行なわれていたことに名前がついて一気にメジャーになった技術的概念の典型だと思います。概念についてはもう相当に話してお腹一杯なので、次は具体的なツールの詳細の話や、実際に実践した際の課題やノウハウについて、掘り下げていきたいですね。

というわけで、ちょうど今月末の3/25夜にImmutable Infrastructure ConferenceをヒカリエでDeNAさんの会場を借りて開催します。もう満員なのですが、Ustreamも予定していますので、こちらも是非チェックしてください!

Immutable Infrastructure パネルディスカッション(3/15)

いよいよ明日はAWSのユーザーズグループ最大のイベントJAWS DAYS 2014が開催されます。

私は「Immutable Infrastracture パネルディスカッション」のモデレータを拝命していますので、どのようなことを話そうと思っているか事前にエントリにしてみます。

このパネルディスカッションのパネリストは、Immutable Infrastructureトラックの豪華スピーカー陣、伊藤 直也氏、成田 一生氏、澤登 亨彦氏、吉羽 龍太郎氏、宮下 剛輔氏、栗林 健太郎氏の方々がずらりと並びます。改めてみるとだいぶ壮観ですね。

Immutable Infrastructureはいくつかの概念が含まれているため、パネルに向けて整理も兼ねてこれまでの関連エントリのリンク集にまとめてみました。

https://gist.github.com/stanaka/9547623

また明日ディスカッションをしてみたいことは次のようなことです。

  • Immutable Infrastructureって(文字長が)長くない?
  • 実装がPaaSに近づいていくけど、IaaSとPaaSの使い分けは?
    • Private PaaS (on IaaS) vs Public PaaS という世界観?
  • IIの実現にあたっての課題は?
  • IIはどれぐらいのユーザーに影響するか?
  • どれぐらいの勢いで普及していきそう?

これらの問題は、まだ私もしっかりとしたイメージが付いていないところですので、パネリストの皆さんの意見を聞きつつ、いろいろ議論してみたいと思っています。(文字長の話はともかくw)

あともう一つ、パネルディスカッションの直前に「IaaSとPaaSの微妙な関係」で、アプリケーションを動かす時に、IaaSとPaaSのどっちを使えばいいの?というパネルでの前置きとなるようなトークもしますので、こちらもよろしければ!

では、明日、JAWS DAYS2014でお会いしましょう!

AWSユーザーにもお勧めできる「インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門」

興味をそそられたので読んでみました。

インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門

インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門

本書の内容は、ネットワークの物理的なレイヤーから、ネットワークプロトコルの概要、セキュリティ(主にSSL)や負荷分散や可用性の確保など、幅広い内容に及んでおり、それぞれの分野が網羅的に書かれています。各技術についても、すぐに古くなりがちな個別の実装の詳細に入るのではなく、プロトコルや設計ポリシーなど基礎的、基本的なところがしっかりと記述されており読み応えがあり、また数年単位で長持ちする知識が得られます。

例えば、第1章の「物理設計」では、機能分散や冗長化まで考慮された、具体的な機器の構成例まで図にしてあり参考になりますし、機種選定の方針までも書かれています。第3章の「セキュリティ設計・負荷分散設計」では、TCP/IPレベルの挙動から、HTTP上でのセッション制御や、SSLでの証明書のやりとりまで書かれており、ここだけで一冊の本になりそうな内容の厚みがあります。

第0章に対象読者として「サーバサイトを設計したいネットワークエンジニア」「ネットワークを知っておきたいサーバエンジニア」「サーバサイトを運用管理するサイト管理者」と書かれているのですが、AWSだけを使っているアプリケーションエンジニアにも、読んでおく価値があると思います。AWSでも不具合や不調、パフォーマンス限界にあたることは時々あり、いろいろ調べていくとこの本でかかれているようなレイヤーの問題が発生しているんだろうな、と推測されることがあります。もちろん本当にネットワークレイヤーの問題だった場合には、AWSの中の人の対応を待つか、work-aroundを入れるしかないのですが、それでも問題の切り分けや、原因分析のスピードは違ってきます。

というわけで、本書はいわゆるインフラエンジニアだけではなく、ちゃんと自分で深い問題分析を行いたいアプリケーションエンジニアにもお勧めできる本です。

またよりネットワークの基本から知りたい方は、定番のマスタリングTCP/IP 入門編をお勧めします。(第5版になってたんですね。)

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

さようなら、自作サーバー

一昨日、自作サーバー同窓会というイベントを開催しました。 このイベントは2009/11(4年半前!)に開催した自作サーバーカンファレンスに登壇された方々を中心に、自作サーバー現役の方々を交え、あの頃の自作サーバーと、自作サーバーの今を振り替えってみようという趣旨のものでした。

イベントの詳細は吉岡さんのエントリ桑野さんのエントリ@nekoyaさんのエントリtoggetterのまとめを参照してください。

僕の思いは「自作サーバー同窓会」という名付けに集約されています。AWSが常識になり、物理的な世界との距離が広がりつつある今、各社の様々な取り組みなどを楽しく振り返ることができました。

さようなら、自作サーバー。いろいろな面白い経験と仲間を得ることができました。登壇及び参加された皆さん、ありがとうございました!

余談

会場はフリークアウトさんの新オフィスで、シャレオツすぎて、前向きになれました。 また新しい方向に向けて、楽しく探求していきましょう。