Elixir in ABEJA

Elixir in ABEJA

LINE×ABEJA MLOps Study @FUKUOKA (https://abeja-innovation-meetup.connpass.com/event/126516/) での LT 発表資料です。ABEJA における Elixir 活用事例と個人的に好きなところ/困ってるところなど。

4102ada9d9eee5a4a299937da214d051?s=128

Takanori Ishikawa

April 24, 2019
Tweet

Transcript

  1. Copyright © ABEJA, Inc. All rights reserved. Takanori Ishikawa @

    ABEJA Platform Developer Elixir in ABEJA
  2. Copyright © ABEJA, Inc. All rights reserved. ⽯川尊教 Takanori Ishikawa

    @takanori_is ❤ Elixir &
  3. Copyright © ABEJA, Inc. All rights reserved. 職務経歴書

  4. Copyright © ABEJA, Inc. All rights reserved. 2004年 ドリコム

  5. Copyright © ABEJA, Inc. All rights reserved. 2008年 なぜか Python

    をやっていた暗黒時代 N E E T
  6. Copyright © ABEJA, Inc. All rights reserved. 6 2009 Barack

    Obama by Gage Skidmore (CC BY-SA 2.0)
  7. Copyright © ABEJA, Inc. All rights reserved. 2009年 mixi

  8. Copyright © ABEJA, Inc. All rights reserved. 8 2017 donald-trump-foreign-policy

    (CC BY 3.0 US)
  9. Copyright © ABEJA, Inc. All rights reserved. 2017年 ABEJA

  10. Copyright © ABEJA, Inc. All rights reserved. アメリカ合衆国⼤統領が変わるタイミングで転職

  11. Copyright © ABEJA, Inc. All rights reserved. という話ではなく…

  12. Copyright © ABEJA, Inc. All rights reserved. 12

  13. Copyright © ABEJA, Inc. All rights reserved. 13

  14. Copyright © ABEJA, Inc. All rights reserved. ⼊社したすべての会社が Elixir を採⽤

    ※なお、どのプロジェクトにも⽯川は関わっておりません
  15. Copyright © ABEJA, Inc. All rights reserved. もちろん ABEJA でも採⽤

  16. Copyright © ABEJA, Inc. All rights reserved.

  17. Copyright © ABEJA, Inc. All rights reserved. どんなところに Elixir を使ってる?

  18. Copyright © ABEJA, Inc. All rights reserved. 横断的な処理をしているところ • TensorBoard

    / Notebook のプロキシ (HTTP / WebSocket) • ユーザーや各種リソースの認証 • API 呼び出しのルーティング • リソース利⽤量の計測 • 契約プランと課⾦ • 社内管理ツール
  19. Copyright © ABEJA, Inc. All rights reserved. つまり、いろいろ

  20. Copyright © ABEJA, Inc. All rights reserved. 何⼈くらいで開発してる?

  21. Copyright © ABEJA, Inc. All rights reserved. ONLY ONE 21

  22. Copyright © ABEJA, Inc. All rights reserved. だったのが、最近は増えてきて • レビューしてくれたり、

    • Pull Request を書いてくれたり • 勉強してくれたり
  23. Copyright © ABEJA, Inc. All rights reserved. マジ感謝

  24. Copyright © ABEJA, Inc. All rights reserved. Elixir のここが良い

  25. Copyright © ABEJA, Inc. All rights reserved. 正常ケースのみを処理できるので コードの⾒た⽬がスッキリ with

    式と action_fallback
  26. Copyright © ABEJA, Inc. All rights reserved. 正常ケースのみを処理できるので コードの⾒た⽬がスッキリ with

    式と action_fallback
  27. Copyright © ABEJA, Inc. All rights reserved. マクロ 定型コードのテンプレートを
 簡単かつ安全に挿⼊

  28. Copyright © ABEJA, Inc. All rights reserved. 定型コードのテンプレートを
 簡単かつ安全に挿⼊ マクロ

  29. Copyright © ABEJA, Inc. All rights reserved. ドキュメンテーション 充実した内容のリファレンスと スッキリした⾒やすいデザイン

  30. Copyright © ABEJA, Inc. All rights reserved. 変数や制御構造も使えるので コードを反映したドキュメントを⽣成できる ドキュメンテーション

  31. Copyright © ABEJA, Inc. All rights reserved. あと、速い

  32. Copyright © ABEJA, Inc. All rights reserved. 他にも⾊々ありますが… • ⼤量のプロセスでメッセージ・パッシングとか

    • プロセスの Supervision Tree とか • Immutable なデータ構造とか • OTP のすばらしさとか • …ググったらいっぱい出てくるので省略
  33. Copyright © ABEJA, Inc. All rights reserved. Elixir のここが困る

  34. Copyright © ABEJA, Inc. All rights reserved. ⽐較的マイナーなため • メジャーな⾔語に⽐べるとライブラリなどのエコシステムは弱い

    • IaaS/SaaS の SDK 実装がなかったり、機能が不⾜してたり… • 積極的に PR を書く • コンパイル時間が⽐較的⻑い • コンパイル待ちで Slack を⾒てしまう • Docker on Mac はけっこうつらい
  35. Copyright © ABEJA, Inc. All rights reserved. 今やろうとしていること

  36. Copyright © ABEJA, Inc. All rights reserved. Kubernetes への移⾏ •

    EC2 から移⾏ • Kubernetes 上で Elixir クラスタ構築 • WebSocket によるプッシュ • グローバルキャッシュ • Live View
  37. Copyright © ABEJA, Inc. All rights reserved. We’re Hiring https://www.wantedly.com/companies/abeja

    37