体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

Elixir Conf Japanで語られた、ドワンゴの大規模システムにおける「Erlang/Elixir」の使いどころ

Erlang上でモダンなプログラミングを可能とするElixir

Elixirのカンファレンスが4月1日、秋葉原ダイビルで行われた。

ご存知の方も多いように、ElixirはErlang VM(BEAM)がホストする言語の1つ。
1980年代に登場したErlangという並行処理指向のプログラミング言語をベースに、2000年以降の関数型言語の手法を取り入れるというアプローチは他にもあるが、Elixirは最も成功しているものの1つといえるだろう。

Erlangは大量の並行処理に実績のある言語だが、その文法やパッケージがちょっと今風ではない。

そこで、Erlang VM上にパッケージマネジメントやビルドツールといった環境を用意し、メタプログラミングやポリモーフィズム、Unicodeに対応するものとして構築したのがElixirだ。

Elixirの文法が提供するメリットとErlangの同時処理モデルのメリットを組み合わせることができる。

Elixirは2012年に登場し、2014年9月の1.0 リリース以降急速に広まり、実サービスでの事例も増えている。今回のカンファレンスは、そうした事例を日本でも紹介しよう、Elixirをさらに盛り上げようというもの。

当日行われたセッションのうち、ここでは「ニコニコを支えるErlang/Elixir」(株式会社ドワンゴ 原耕司さん)を取り上げる。

大規模システムにおけるErlang/Elixirの使いどころ

登場したのはドワンゴの原耕司さん。

株式会社ドワンゴ 原耕司さん

ニコニコといえば、いわずもがなの大規模動画配信&生放送サイト。動画配信「ニコニコ動画」(ニコ動)のほうは1日3千万再生・総動画数1420万という規模、一方、生放送「ニコニコ生放送」(ニコ生)は1分間に100番組。

ニコ動・ニコ生の全体構成は図のとおり。

 ▲ニコ動・ニコ生の全体構成(スライド資料より)

たとえば、ユーザーが生放送をしようとしたときに何が起こるかというと、まずユーザーがフロント、アプリサーバに対し、ログインを行う。

生放送の開始ボタンを押すと、その裏側で「生放送を作れ」というリクエストがDwango Media Cluster(DMC)に送られる。DMC内にリソースが確保され、ユーザーはDMCに映像データを送る。このDMCが視聴者に対し、生放送を送るという流れだ。

このDMCは主にErlangで書かれており、その量なんと55万行。なぜ、DMCを開発したのかというと、それまで既存のサーバ製品の組み合わせで運用していたのが、サービスが大規模になるにつれ、そこに拡張性やリソースの柔軟性が求められ、既存製品での対応では厳しくなったからだ。

スマートフォンの登場、リッチテキストのフォーマットからのFlashのリタイアなど、世の中的な変化も背景にある。ここで理想的なコンテンツ配信システムを作ろうということで、2014年12月に開発プロジェクトがスタート。

稼働状況としては、ニコ動の新規投稿動画すべて、ニコ生に関してはその一部の配信をDMCで回している。ニコ動の動画配信では1台で同時に数千動画配信できるレベルの安定稼働。このあたりは、並行分散処理に実績のあるErlangのすごさだ。

1 2 3次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。
GetNews girl / GetNews boy

オスカー2018年晴れ着撮影会