ニコニコ動画/ニコニコ生放送を支えるシステム Dwango Media Cluster (DMC)。 DMC とその周辺システムは主に Erlang/Elixir で開発されています。 今回はその設計・開発・運用や Erlang/Elixir の強みと、一方で実際に大規模運用する中で遭遇した想定外のヒヤリハットをお話します。。
最近話題の(?)Elixir + Phoenixを現在関わっているプロジェクトの検証・評価目的に使ってみます。 なお自分自身全くの初心者なので初心者向けの内容になる予定です。 Elixirとは Elixir公式サイトから引用します Elixir is a dynamic, functional language designed for building scalable and maintainable applications. Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded softwar
最近Elixirが盛り上がってるっぽいのでちょっと試してみることにした 流れ Erlang入れる Elixir入れる Phoenix入れる Hello Phoenix!! 残念ながらCentOSのリポジトリに無いのでソースからビルドして入れていきます Erlang入れる ソースの取得 Erlang公式 - downloadに最新版ソースのtarballがあるので、取ってきて解凍 cd /usr/local/src wget http://www.erlang.org/download/otp_src_18.0.tar.gz tar zxvf otp_src_18.0.tar.gz cd otp_src_18.0 依存ライブラリインストール Erlang公式のインストールガイドに依存関係の説明があったので入れておく GNU C Compiler OpenSSL ncurses JDK fop
Elixir にあって Ruby や JavaScript のような言語にない特徴といえば 軽量プロセス (+ OTP周り) パターンマッチ の2点が大きく、その他の部分というのはだいたい「あの言語のこれだな」という風に対応させて理解できる(パターンマッチを実装した他の関数型言語になれてる人にとっては別かもしれないが)。 特に後者のパターンマッチの方は Elixir の文法の多くの部分の基礎になっている。従って、主観的にはパターンマッチさえ理解できれば Elixir の半分以上は理解できたと思っていいんじゃないかと思っていたりする。 というわけでカッとなってパターンマッチについて書いてみる。 パターンマッチとは パターンマッチの例で、いきなり {x, y} = {1, 5} とかいう例を見せられても「変数扱うのに便利な記法か何かですかね? (ES6 の Destructuring assi
Elixirは並行処理能力に優れたRubyライクなシンタックスを持つ関数型言語です。 前回のエントリではElixirの概要やシンタックスの紹介を簡単にしました。 今回はElixirの複数プロセスを使ったプログラミングについて書いていきます。 Elixirにはプロセス周りの実装をサポートしてくれるOTPというライブラリがあるのですが、まずはOTPを使用しないプログラミングを扱います。 軽量プロセス Elixirのプロセスは軽量プロセスと言われていて、OSのプロセスやスレッドではなくGreenスレッドです。 カーネルではなくVMでスケジューリングされるので軽量、コンテキストスイッチが発生しないという利点があります。 1軽量プロセスで約300ワードです。 プロセス生成 Elixirで新しいプロセスを生成するのは簡単です。 spawn関数を呼び出し、戻り値に生成したプロセスIDを受け取ります。 d
前々回の記事は「Phoenix環境のセットアップから、静的ページを作成し、表示」させました。 前回の記事では、「Phoenixで認証機能を実装」しました。 今回の記事では、入門最後として「Phoenixでチャット機能を実装」します。 Phoenixでソケット、チャネル、トークン、API作成、モデルのアソシエーションなどを行っていきます。 サンプル ChatPhoenix - Heroku ChatPhoenix - GitHub 目次 ソケットの基礎用語 チャット機能の追加 チャット機能をログイン機能と統合 チャットメッセージの永続化 動作確認 Erlang 7.1 Elixir 1.1.1 Phoenix 10.0.3 Hex 0.9.0 node.js 0.12.7 npm 2.14.2 PostgreSQL 9.4.4 1. ソケットの基礎用語ソケットの基本的な用語について簡単に記載
連絡先リストの役割を果たすJSON APIをビルドしてみましょう。ElixirとPhoenixを使って書きます。 Phoenix はElixirベースのフレームワークで、記述の高速化と、低遅延のWebアプリケーションをできる限り楽しく作成する目的で作られています。ElixirやPhoenixのインストール手順についてはここでは触れません。まず初めに Phoenixのガイド を読んでください。 なぜElixirとPhoenixなのか Erlangは、ポンコツの板金にくるまれたフェラーリのようなものです。ものすごいパワーを持っていますが、見た目が悪いと感じる人が多いのです。WhatsAppはこれを使って膨大な数の接続を処理していますが、見慣れないシンタックスとツールの不足のせいで多くの人が苦労しています。 Elixir はそこを改善したものです。Erlang上に構築されていますが、美しくかつ楽
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く