Erlang
Elixir Conf Japan 2017に参加してきました。
ElixirElixir Conf Japan 2017Erlang

Elixir って

logo.png

Wikipediaよりhttps://ja.wikipedia.org/wiki/Elixir_(プログラミング言語))引用。

Elixir (エリクサー) は並行処理の機能や関数型といった特徴を持つ、Erlangの仮想マシン (BEAM) 上で動作するコンピュータプログラミング言語である。ElixirはErlangで実装されているため、分散システム、耐障害性、ソフトリアルタイムシステム等の機能を使用することができるが、拡張機能として、マクロを使ったメタプログラミング、そしてポリモーフィズムなどのプログラミング・パラダイムもプロトコルを介して実装されている。

どうしてElixirを知ったの?

転職活動しているときに、アプリ開発の会社さんとお会いしてお話したのがキッカケです。
と言いますか、開発のトレンドを追っていないので勉強になりました。
いつも、AWSばっかりだったので今回はまだまだ足りないと思い知りました。

で、本を早速購入したししました。

セッション

これを見ていただいたほうがよいですね。
https://elixirconf.connpass.com/event/47856/presentation/

勉強したてレベルではなかなか、最初は難しくて大変でした。
JAWS-UGでお会いするgumiさんのは、ちょっと新鮮でした。


Phoenix で作るスケーラブルなリアルタイムゲームサーバー(Japanese Session)[株式会社ミクシィ/ XFLAG STUDIO 古城 秀隆]


モバイルゲームサーバ

イベント/データ更新/専用クライアント

リアルタイム通信

当たり前の世界/オンライン大会/e-sports

elixir & phoenix

求めたこと

突発的なリクエスト
1000req/sのものが、2000req/sならば返せるようにしたい。
→つまることがないように。

message passingによりメモリがもてば、可能である。

phoenix frameworkの双方向通信はchannnelを使う。
pub/sub

モバイルネットワークは切れやすい。(LTE/3G/wifi/格安simの制限時間帯など)
cowboy

  • 継続的デプロイ
    テストとレビューが通ったサーバコードはデプロイする。
    これは後にするということはない。

  • 学習コストの低さ
    容易に導入ができる。


Elixir から始める関数型言語(Japanese Session)[クロードテック株式会社 ペレスダニエル (Daniel Perez)]


スライド

http://tuvistavie.com/slides/elixir-fp-intro/#/


Rediscovery of OTP(Japanese Session)[株式会社gumi 幾田雅仁]


Elixir 導入してる?

WEBエンジニア共通の悩み

  • 増えるクラアント
  • サーバー応答速度の高速化
  • 常時接続

強く求められるリアルタイム性

  • 並行性
  • 耐障害性
  • メンテナンス性

クレジット決済サービスの価値

SLA 99.9982(9分30秒以下)

ErlangのSLA=99.9999999%

事件発生からピンチがチャンスに!

更新頻度が高い箇所は、なるべくPerlを使うこと

メンテンス性が低下

  • イベントドリブン+コルーチン
  • メッセージキュー制御(AMQP)

Scalaの浮気理由

「プログラミングの魔導書」

ブラウザゲーム全盛時代

python全盛になる。

サーバエンジニア共通の価値観=サーバーの処理時間90msec以下
200msecあるとユーザーからの苦情が来る。

サーバーを追加するだけで、応答速度が早くなるようにすること
シェアードデータを安全かつ効率的に扱う。
2フェーズコミット.

ネイティブシフト

認証課金を自前で作るように。

##
DynamoDBとの相性最高。
CPU30%以下になることはない。4年も継続できている。
時雨堂さんに依頼した?

Elixir との出会い

安定と信頼のErlang VM

Elixir 導入へ

Elixir のマイクロサービス化

質疑応答

phoenixではにオリジナルのフレームワークを使用している。
cowboyとか使うぐらい。phoenixよりそこまで深くないので、公開するまでもない小さいものとのこと。

Lighning talk

https://elixirconf.connpass.com/event/52198/presentation/

クロージングキーノート

https://gist.github.com/voluntas/81ab2fe15372c9c67f3e0b12b3f534fa

まとめ

ちょっと自分用の参加メモに近いものなので、全部のセッションをまとめてはおりません。
最近勉強会のまとめをしても主催者側が行う場合も多くなったので
参考にする場合は、下記のリンクから辿っていただくとよいと思います。

Elixirが大手のソーシャルゲームで使われているということがわかったことが収穫でした。
それほど運用が発生してなさそうと思いました。
あるとしたら、メモリが足りなくなるときを気をつけるぐらいでしょうか。

コンテナはまだまだこれからだそうです。
プロセスの取り扱いが多段ミルフィーユになりそうですね。

物理 => EC2 => Docker => BEAM(Erlang VM) => アプリケーション

これから対応していくそうですし、期待してます。

参考資料・リンク

http://www.elixirconf.jp
https://elixirconf.connpass.com/event/52198/
https://elixirconf.connpass.com/event/47856/
http://elixir-lang.org