Copyright Drecom Co., Ltd. All Rights Reserved. 1
Rubyist |>(^o^)|>
Alchemist
〜Elixirの採用からサービス稼働までの記録〜
ElixirConfJapan 2017
株式会社Drecom 大原常徳
Copyright Drecom Co., Ltd. All Rights Reserved. 2
Agenda
AboutMe
|> 発表の趣旨
|> 導入事例紹介
|> 開発チーミング
|> サービスのスケール
|> サービスの運用
|> 教育とトレーニング
|> 組織/コミュニティ/MeetUp
|> まとめ
Copyright Drecom Co., Ltd. All Rights Reserved. 3
AboutMe
⁃ Tsunenori Oohara(おーはら,ohr486)
⁃ Twitter: @ohrdev
⁃ tokyo.ex: 主催・運営
⁃ ElixirConfJapan: 幹事チーム・運営
⁃ JapanElixirAssociation: 理事
⁃ 株式会社ドリコム
⁃ 基盤技術部
⁃ 全社基盤システム、広告系サービス全般
⁃ Elixir/Phoenixアプリを本番で開発・運用(約2
年
⁃ SoftwareDesign2016/11,12
⁃ [関数型言語]Elixirの始め方(前後)
Copyright Drecom Co., Ltd. All Rights Reserved. 4
発表の趣旨
⁃ ターゲット
⁃ Elixirの導入を検討している
⁃ プロダクションでElixirを使いたい
⁃ 中規模以上のElixirアプリを書いた事が
ない
⁃ Elixirを使いたくなった
⁃ ゴール
⁃ 導入の為に、導入後に、どういう事をす
るべきかをざっくりと把握する
⁃ 習得の為に何をすれば良いか把握する
Copyright Drecom Co., Ltd. All Rights Reserved. 5
発表の趣旨
⁃ 話すこと
⁃ 導入事例
⁃ 導入の為にしたこと
⁃ 失敗、知見
⁃ 日本のElixirコミュニティ事情
⁃ 話さないこと
⁃ 前後のセッションで話した・話すテー
マ
⁃ Elixirの採用理由(何故Elixirなのか
⁃ ErlangVM
Copyright Drecom Co., Ltd. All Rights Reserved. 6
導入事例紹介
⁃ 組織/チーム
⁃ 社内にRubyエンジニア多数(90%Rails製
⁃ 開発チームは5人(自分以外はElixir未経験
⁃ プロダクト
⁃ 広告サービス基盤
⁃ Railsアプリのリプレースプロジェクト
⁃ 期間
⁃ 開発: 6ヶ月
⁃ 運用: 1年半(うち1年、新旧サービスを並
行稼働)
Copyright Drecom Co., Ltd. All Rights Reserved. 7
導入事例紹介
⁃ リプレースにあたっての要件
⁃ サービスを絶対に停止してはいけない
⁃ 導入戦略
⁃ マイクロサービス化する
⁃ 一部の(API)マイクロサービスから徐々
に適用
⁃ AWSに乗る(スケールアップ/アウト機構
Copyright Drecom Co., Ltd. All Rights Reserved. 8
App(Rails)
App(Rails)
アーキテクチャ
⁃ before
cache
App(Rails)
DB(MySQL)
queue(Redis) Batch(sidekiq)
止めてはいけないが!
site req api req
Copyright Drecom Co., Ltd. All Rights Reserved. 9
API(Elixir)
API(Elixir)
アーキテクチャ
⁃ after
cache(Varnish)
Manage(Rails)
DB(MySQL)
queue(Redis) Batch(sidekiq)
API(Elixir)
Front(Rails/js)
DB(Redis)
安定
部分的にreplace
徐々にreplace
site req api req
Copyright Drecom Co., Ltd. All Rights Reserved. 10
アーキテクチャ
⁃ バッチ/非同期処理
⁃ sidekiq: 非同期処理gem
⁃ exq: sidekiqのElixir実装
Manage(Rails) queue(Redis) Batch(sidekiq)
API(Elixir)
exq’s enqueue
sidekiq’s enqueue sidekiq’s dequeue
ActiveJob I/F
Copyright Drecom Co., Ltd. All Rights Reserved. 11
導入事例紹介
⁃ 以上のケースのプロジェクトで
⁃ 得られた知見
⁃ 失敗
⁃ やった事
等を、紹介していきます
Copyright Drecom Co., Ltd. All Rights Reserved. 12
開発チーミング
⁃ チーミングにあたって注意した事
⁃ 求められるElixir習熟度を意識
⁃ 導入者(知見者)がボトルネックにならな
い
⁃ (可能なら)インフラエンジニアを確保す
る
Copyright Drecom Co., Ltd. All Rights Reserved. 13
開発チーミング
⁃ 実務に求められるレベル感
⁃ Lv.0: 触ったことが無い
⁃ Lv.1: コードが読める
⁃ Lv.2: 関数が書ける
⁃ Lv.3: モジュールが書ける
⁃ Lv.4: テストが書ける
⁃ Lv.5: 並行処理が書ける
⁃ Lv.6: フレームワークを使いこなせる
⁃ Lv.7: アプリの設計ができる
⁃ Lv.8: チューニング
・書籍
・ペアプロ
・コードレ
ビュー
・各種training
・
OTP
・テストツールの
理解・プロセスの理
解
実
務
の
壁
・ErlangVMの理
解
モックライブラリ(meck)、E2Eテストツール
Copyright Drecom Co., Ltd. All Rights Reserved. 14
開発チーミング
⁃ 導入者がボトルネックにならない対策
⁃ 静的解析ツールを使ってレビューサポート
⁃ Style Check
⁃ dogma
⁃ credo
⁃ 静的型解析
⁃ Dialyzer
⁃ 自動化/CI
⁃ 自動テスト(ExUnit)
⁃ 静的解析
をCIに組み込む
→初期段階で組み込まなかった為、大量のwarningが発生
⁃ レビューアーを増やす
・credoのほうがちょっと教
育的
・とても遅いのでCIで回すのが
良い
Copyright Drecom Co., Ltd. All Rights Reserved. 15
開発チーミング
⁃ レビューアーに求められる知識
⁃ Elixirらしいコード
⁃ 関数プログラミング
⁃ ライブラリの知識(車輪の再発明の回避)
⁃ awesome-elixir
⁃ awesome-erlang
⁃ hex.pm
⁃ 並行処理の表現方法
⁃ OTPの利用方法
⁃ 性能の評価
・既存モジュールが無い
か?
Copyright Drecom Co., Ltd. All Rights Reserved. 16
開発チーミング
⁃ インフラエンジニアの必要性
⁃ Elixirならではのインフラ課題がある
⁃ deploy方法にデファクトが存在しない
⁃ exrm(depricated!)/distillery
⁃ 無停止更新
⁃ ノード(ErlangVM)のクラスタリング
⁃ 監視
⁃ ErlangVMの監視
⁃ Supervisorを含むサービスの監視
Copyright Drecom Co., Ltd. All Rights Reserved. 17
サービスのスケール
⁃ 「スケール」とは
⁃ トラフィックの増加
⁃ ボトルネックポイント
Copyright Drecom Co., Ltd. All Rights Reserved. 18
サービスのスケール
⁃ トラフィックの増加
⁃ リリースから2年で約50倍程
⁃ コードの改変無しで対応
⁃ スケールアップ
⁃ コア数を増やせば(ある程度)線形に
⁃ ErlangVMの恩恵
⁃ スケールアウト
⁃ AWSならALB、AutoScalingGroupで対応可
Copyright Drecom Co., Ltd. All Rights Reserved. 19
サービスのスケール
⁃ ボトルネックポイント
⁃ データベースへのアクセス
⁃ コネクション/プロセスプーリング
⁃ poolboy: https://github.com/devinus/poolboy
→Erlangのライブラリ、Elixirライブラリ内での利用多
い
→下手なパラメータ設定によっては性能劣化の原因に
→pool_size, max_overflow, etc
Copyright Drecom Co., Ltd. All Rights Reserved. 20
サービスの運用
⁃ 「運用」とは
⁃ 機能開発、テスト
⁃ 監視
⁃ バージョンアップ
Copyright Drecom Co., Ltd. All Rights Reserved. 21
サービスの運用
⁃ 機能開発・テスト
⁃ TDDで開発
⁃ Red-Green-Refactor
⁃ 並行化の列を加えたマトリクス
⁃ 逐次処理・並行処理
⁃ Elixirは並行処理を簡単に書けるが、逐
次処理はもっと簡単に書ける(書いてし
まう)
Copyright Drecom Co., Ltd. All Rights Reserved. 22
サービスの運用
⁃ TDD黄金の回転
きれ
い
汚い
動かな
い
動く
Red
Green
Refacto
r
Copyright Drecom Co., Ltd. All Rights Reserved. 23
サービスの運用
⁃ TDD黄金の回転(並行版)
きれ
い
汚い
動かな
い
動く 並行に動
く
Red
Green
Refacto
r
Concurrenize
Copyright Drecom Co., Ltd. All Rights Reserved. 24
サービスの運用
⁃ 監視
⁃ Supervisorがワーカーを再起動するので通
常の死活監視ではサービスの瞬死を完全に
検知できない
⁃ 1分に1回のHeartBeatだとタイミングによってはスル
ー
⁃ →見かけ上は正常なので異常を検知できない
⁃ イベント単位での通知、KPI値の異常値に
よる検知
⁃ Sentry
⁃ https://github.com/getsentry/sentry-elixir
⁃ プロセスのcrash時に通知
⁃ →通知先(のsentry)へのDDoSになりかねない
⁃ re:dash
⁃ aleart機能
Copyright Drecom Co., Ltd. All Rights Reserved. 25
サービスの運用
⁃ バージョンアップの頻度
2014/9/10 2017/3/14
v1.0
R17
v1.4
R19
v1.2
R18
2016/1/1
2014/9/10
v1.0
2015/9/25
v1.1 2016/1/1
v1.2
2016/6/21
v1.3
2017/1/5
v1.4
2014/9/10
R17.1
2015/6/24
R18
2016/6/21
R19
2017/4/1
v1.4.2
2017/4/1
R19.3
Copyright Drecom Co., Ltd. All Rights Reserved. 26
サービスの運用
⁃ バージョンアップ
⁃ Elixir、Erlangそれぞれ別々にバージョンア
ップ
⁃ ただし依存関係あり(ex. Elixir 1.4.2 のコンパイルには
、 Erlang R18.0 以上必須 )
⁃ →バージョン管理ツールを導入していなかったので、
バージョンアップ作業が煩雑
⁃ →kerl, exenvを導入
⁃ 目安
⁃ Erlang: 年1回のメジャーバージョンアップ
⁃ Elixir: 年2回のマイナーバージョンアップ
⁃ 環境をイメージ/コンテナにして運用
⁃ 特定のバージョン毎のテストやリリースができるよう
に
⁃ script -> vagrant -> ansible -> docker
Copyright Drecom Co., Ltd. All Rights Reserved. 27
教育とトレーニング
⁃ よくある質問
⁃ 「Elixirでコードを書く為に、Erlangの知
識は必要ですか?」
⁃ 回答(異論は認める)
⁃ 設計時にOTPの知識が必要です
⁃ 何かとErlangのコードを読む機会はあり
ます
⁃ デバッグ、etc
⁃ 完全にF/Wに乗れば機会は少ないかもで
すが、あったほうが圧倒的に「安心」で
す
Copyright Drecom Co., Ltd. All Rights Reserved. 28
教育とトレーニング
⁃ 目的
⁃ Elixirで「業務」ができるレベルまで、
エンジニアのスキルを引き上げる
⁃ やったこと
⁃ 読書会/輪読会
⁃ ペアプロ
⁃ PRレビュー
・独習/勉強会/ハンズオ
ン
・業務と並
行
Copyright Drecom Co., Ltd. All Rights Reserved. 29
教育とトレーニング
⁃ 読んだ(読んでもらった)書籍
⁃ 「プログラミングElixir」
Dave Thomas(著),笹田耕一・鳥井雪(翻訳),
オーム社,2016
⁃ 「すごいErlangゆかいに学ぼう!」
Fred Hebert(著),山口能迪(翻訳),
オーム社,2014
⁃ 「プログラミングErlang」
Joe Armstrong(著),柳原一矢(翻訳),
オーム社,2008
Copyright Drecom Co., Ltd. All Rights Reserved. 30
おまけ
Thank
You!
Copyright Drecom Co., Ltd. All Rights Reserved. 31
教育とトレーニング
⁃ 学ぶべき事項
⁃ Elixir
⁃ Erlang/OTP
⁃ アクターモデル(プロセスの扱い)
⁃ 並行プログラミング
⁃ 関数型言語
⁃ テストフレームワークの使い方
・Haskellの入門
書!
・Elixir
本
・Erlang
本
・meckのドキュメント
・テストライブラリのド
キュメント
Copyright Drecom Co., Ltd. All Rights Reserved. 32
組織/コミュニティ/MeetUp
⁃ JapanElixirAssociation
⁃ ElixirConfJapanの主催・運営
⁃ 2018年もConfを予定
⁃ tokyo.ex
⁃ 東京近辺のElixir/Erlang関連イベント,隔月
⁃ https://beam-lang.connpass.com/
⁃ Sapporo.beam
⁃ 札幌近辺のBeam系言語meetup,毎週
⁃ http://sapporo-beam.github.io/
⁃ Idobataでリモート参加可
Copyright Drecom Co., Ltd. All Rights Reserved. 33
組織/コミュニティ/MeetUp
⁃ Elixir関連イベント(参加者20人以上)
ElixirConfJapa
n
Copyright Drecom Co., Ltd. All Rights Reserved. 34
組織/コミュニティ/MeetUp
⁃ Elixir関連イベント(参加者20人以上)
tokyo.exとしては
今後ハンズオンに
力を入れていきたい
ex) Erlangハンズオン
Copyright Drecom Co., Ltd. All Rights Reserved. 35
組織/コミュニティ/MeetUp
⁃ 是非イベントへお越しください
⁃ 来年もElixirConfJapanを予定しています
⁃ 東京近辺在住ならtokyo.exへ
⁃ 知見者が多いので相談出来る事も
Copyright Drecom Co., Ltd. All Rights Reserved. 36
まとめ
⁃ Elixirの導入に関する知見を共有しまし
た
⁃ まずは素振りから始めましょう
⁃ 「プログラミングElixir」は最適
⁃ OTPの理解は大切です
⁃ プロセス構造を理解すると捗ります

Elixir-Conf-Japan-2017-session-ohr486

  • 1.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 1 Rubyist |>(^o^)|> Alchemist 〜Elixirの採用からサービス稼働までの記録〜 ElixirConfJapan 2017 株式会社Drecom 大原常徳
  • 2.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 2 Agenda AboutMe |> 発表の趣旨 |> 導入事例紹介 |> 開発チーミング |> サービスのスケール |> サービスの運用 |> 教育とトレーニング |> 組織/コミュニティ/MeetUp |> まとめ
  • 3.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 3 AboutMe ⁃ Tsunenori Oohara(おーはら,ohr486) ⁃ Twitter: @ohrdev ⁃ tokyo.ex: 主催・運営 ⁃ ElixirConfJapan: 幹事チーム・運営 ⁃ JapanElixirAssociation: 理事 ⁃ 株式会社ドリコム ⁃ 基盤技術部 ⁃ 全社基盤システム、広告系サービス全般 ⁃ Elixir/Phoenixアプリを本番で開発・運用(約2 年 ⁃ SoftwareDesign2016/11,12 ⁃ [関数型言語]Elixirの始め方(前後)
  • 4.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 4 発表の趣旨 ⁃ ターゲット ⁃ Elixirの導入を検討している ⁃ プロダクションでElixirを使いたい ⁃ 中規模以上のElixirアプリを書いた事が ない ⁃ Elixirを使いたくなった ⁃ ゴール ⁃ 導入の為に、導入後に、どういう事をす るべきかをざっくりと把握する ⁃ 習得の為に何をすれば良いか把握する
  • 5.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 5 発表の趣旨 ⁃ 話すこと ⁃ 導入事例 ⁃ 導入の為にしたこと ⁃ 失敗、知見 ⁃ 日本のElixirコミュニティ事情 ⁃ 話さないこと ⁃ 前後のセッションで話した・話すテー マ ⁃ Elixirの採用理由(何故Elixirなのか ⁃ ErlangVM
  • 6.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 6 導入事例紹介 ⁃ 組織/チーム ⁃ 社内にRubyエンジニア多数(90%Rails製 ⁃ 開発チームは5人(自分以外はElixir未経験 ⁃ プロダクト ⁃ 広告サービス基盤 ⁃ Railsアプリのリプレースプロジェクト ⁃ 期間 ⁃ 開発: 6ヶ月 ⁃ 運用: 1年半(うち1年、新旧サービスを並 行稼働)
  • 7.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 7 導入事例紹介 ⁃ リプレースにあたっての要件 ⁃ サービスを絶対に停止してはいけない ⁃ 導入戦略 ⁃ マイクロサービス化する ⁃ 一部の(API)マイクロサービスから徐々 に適用 ⁃ AWSに乗る(スケールアップ/アウト機構
  • 8.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 8 App(Rails) App(Rails) アーキテクチャ ⁃ before cache App(Rails) DB(MySQL) queue(Redis) Batch(sidekiq) 止めてはいけないが! site req api req
  • 9.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 9 API(Elixir) API(Elixir) アーキテクチャ ⁃ after cache(Varnish) Manage(Rails) DB(MySQL) queue(Redis) Batch(sidekiq) API(Elixir) Front(Rails/js) DB(Redis) 安定 部分的にreplace 徐々にreplace site req api req
  • 10.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 10 アーキテクチャ ⁃ バッチ/非同期処理 ⁃ sidekiq: 非同期処理gem ⁃ exq: sidekiqのElixir実装 Manage(Rails) queue(Redis) Batch(sidekiq) API(Elixir) exq’s enqueue sidekiq’s enqueue sidekiq’s dequeue ActiveJob I/F
  • 11.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 11 導入事例紹介 ⁃ 以上のケースのプロジェクトで ⁃ 得られた知見 ⁃ 失敗 ⁃ やった事 等を、紹介していきます
  • 12.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 12 開発チーミング ⁃ チーミングにあたって注意した事 ⁃ 求められるElixir習熟度を意識 ⁃ 導入者(知見者)がボトルネックにならな い ⁃ (可能なら)インフラエンジニアを確保す る
  • 13.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 13 開発チーミング ⁃ 実務に求められるレベル感 ⁃ Lv.0: 触ったことが無い ⁃ Lv.1: コードが読める ⁃ Lv.2: 関数が書ける ⁃ Lv.3: モジュールが書ける ⁃ Lv.4: テストが書ける ⁃ Lv.5: 並行処理が書ける ⁃ Lv.6: フレームワークを使いこなせる ⁃ Lv.7: アプリの設計ができる ⁃ Lv.8: チューニング ・書籍 ・ペアプロ ・コードレ ビュー ・各種training ・ OTP ・テストツールの 理解・プロセスの理 解 実 務 の 壁 ・ErlangVMの理 解 モックライブラリ(meck)、E2Eテストツール
  • 14.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 14 開発チーミング ⁃ 導入者がボトルネックにならない対策 ⁃ 静的解析ツールを使ってレビューサポート ⁃ Style Check ⁃ dogma ⁃ credo ⁃ 静的型解析 ⁃ Dialyzer ⁃ 自動化/CI ⁃ 自動テスト(ExUnit) ⁃ 静的解析 をCIに組み込む →初期段階で組み込まなかった為、大量のwarningが発生 ⁃ レビューアーを増やす ・credoのほうがちょっと教 育的 ・とても遅いのでCIで回すのが 良い
  • 15.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 15 開発チーミング ⁃ レビューアーに求められる知識 ⁃ Elixirらしいコード ⁃ 関数プログラミング ⁃ ライブラリの知識(車輪の再発明の回避) ⁃ awesome-elixir ⁃ awesome-erlang ⁃ hex.pm ⁃ 並行処理の表現方法 ⁃ OTPの利用方法 ⁃ 性能の評価 ・既存モジュールが無い か?
  • 16.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 16 開発チーミング ⁃ インフラエンジニアの必要性 ⁃ Elixirならではのインフラ課題がある ⁃ deploy方法にデファクトが存在しない ⁃ exrm(depricated!)/distillery ⁃ 無停止更新 ⁃ ノード(ErlangVM)のクラスタリング ⁃ 監視 ⁃ ErlangVMの監視 ⁃ Supervisorを含むサービスの監視
  • 17.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 17 サービスのスケール ⁃ 「スケール」とは ⁃ トラフィックの増加 ⁃ ボトルネックポイント
  • 18.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 18 サービスのスケール ⁃ トラフィックの増加 ⁃ リリースから2年で約50倍程 ⁃ コードの改変無しで対応 ⁃ スケールアップ ⁃ コア数を増やせば(ある程度)線形に ⁃ ErlangVMの恩恵 ⁃ スケールアウト ⁃ AWSならALB、AutoScalingGroupで対応可
  • 19.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 19 サービスのスケール ⁃ ボトルネックポイント ⁃ データベースへのアクセス ⁃ コネクション/プロセスプーリング ⁃ poolboy: https://github.com/devinus/poolboy →Erlangのライブラリ、Elixirライブラリ内での利用多 い →下手なパラメータ設定によっては性能劣化の原因に →pool_size, max_overflow, etc
  • 20.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 20 サービスの運用 ⁃ 「運用」とは ⁃ 機能開発、テスト ⁃ 監視 ⁃ バージョンアップ
  • 21.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 21 サービスの運用 ⁃ 機能開発・テスト ⁃ TDDで開発 ⁃ Red-Green-Refactor ⁃ 並行化の列を加えたマトリクス ⁃ 逐次処理・並行処理 ⁃ Elixirは並行処理を簡単に書けるが、逐 次処理はもっと簡単に書ける(書いてし まう)
  • 22.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 22 サービスの運用 ⁃ TDD黄金の回転 きれ い 汚い 動かな い 動く Red Green Refacto r
  • 23.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 23 サービスの運用 ⁃ TDD黄金の回転(並行版) きれ い 汚い 動かな い 動く 並行に動 く Red Green Refacto r Concurrenize
  • 24.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 24 サービスの運用 ⁃ 監視 ⁃ Supervisorがワーカーを再起動するので通 常の死活監視ではサービスの瞬死を完全に 検知できない ⁃ 1分に1回のHeartBeatだとタイミングによってはスル ー ⁃ →見かけ上は正常なので異常を検知できない ⁃ イベント単位での通知、KPI値の異常値に よる検知 ⁃ Sentry ⁃ https://github.com/getsentry/sentry-elixir ⁃ プロセスのcrash時に通知 ⁃ →通知先(のsentry)へのDDoSになりかねない ⁃ re:dash ⁃ aleart機能
  • 25.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 25 サービスの運用 ⁃ バージョンアップの頻度 2014/9/10 2017/3/14 v1.0 R17 v1.4 R19 v1.2 R18 2016/1/1 2014/9/10 v1.0 2015/9/25 v1.1 2016/1/1 v1.2 2016/6/21 v1.3 2017/1/5 v1.4 2014/9/10 R17.1 2015/6/24 R18 2016/6/21 R19 2017/4/1 v1.4.2 2017/4/1 R19.3
  • 26.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 26 サービスの運用 ⁃ バージョンアップ ⁃ Elixir、Erlangそれぞれ別々にバージョンア ップ ⁃ ただし依存関係あり(ex. Elixir 1.4.2 のコンパイルには 、 Erlang R18.0 以上必須 ) ⁃ →バージョン管理ツールを導入していなかったので、 バージョンアップ作業が煩雑 ⁃ →kerl, exenvを導入 ⁃ 目安 ⁃ Erlang: 年1回のメジャーバージョンアップ ⁃ Elixir: 年2回のマイナーバージョンアップ ⁃ 環境をイメージ/コンテナにして運用 ⁃ 特定のバージョン毎のテストやリリースができるよう に ⁃ script -> vagrant -> ansible -> docker
  • 27.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 27 教育とトレーニング ⁃ よくある質問 ⁃ 「Elixirでコードを書く為に、Erlangの知 識は必要ですか?」 ⁃ 回答(異論は認める) ⁃ 設計時にOTPの知識が必要です ⁃ 何かとErlangのコードを読む機会はあり ます ⁃ デバッグ、etc ⁃ 完全にF/Wに乗れば機会は少ないかもで すが、あったほうが圧倒的に「安心」で す
  • 28.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 28 教育とトレーニング ⁃ 目的 ⁃ Elixirで「業務」ができるレベルまで、 エンジニアのスキルを引き上げる ⁃ やったこと ⁃ 読書会/輪読会 ⁃ ペアプロ ⁃ PRレビュー ・独習/勉強会/ハンズオ ン ・業務と並 行
  • 29.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 29 教育とトレーニング ⁃ 読んだ(読んでもらった)書籍 ⁃ 「プログラミングElixir」 Dave Thomas(著),笹田耕一・鳥井雪(翻訳), オーム社,2016 ⁃ 「すごいErlangゆかいに学ぼう!」 Fred Hebert(著),山口能迪(翻訳), オーム社,2014 ⁃ 「プログラミングErlang」 Joe Armstrong(著),柳原一矢(翻訳), オーム社,2008
  • 30.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 30 おまけ Thank You!
  • 31.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 31 教育とトレーニング ⁃ 学ぶべき事項 ⁃ Elixir ⁃ Erlang/OTP ⁃ アクターモデル(プロセスの扱い) ⁃ 並行プログラミング ⁃ 関数型言語 ⁃ テストフレームワークの使い方 ・Haskellの入門 書! ・Elixir 本 ・Erlang 本 ・meckのドキュメント ・テストライブラリのド キュメント
  • 32.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 32 組織/コミュニティ/MeetUp ⁃ JapanElixirAssociation ⁃ ElixirConfJapanの主催・運営 ⁃ 2018年もConfを予定 ⁃ tokyo.ex ⁃ 東京近辺のElixir/Erlang関連イベント,隔月 ⁃ https://beam-lang.connpass.com/ ⁃ Sapporo.beam ⁃ 札幌近辺のBeam系言語meetup,毎週 ⁃ http://sapporo-beam.github.io/ ⁃ Idobataでリモート参加可
  • 33.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 33 組織/コミュニティ/MeetUp ⁃ Elixir関連イベント(参加者20人以上) ElixirConfJapa n
  • 34.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 34 組織/コミュニティ/MeetUp ⁃ Elixir関連イベント(参加者20人以上) tokyo.exとしては 今後ハンズオンに 力を入れていきたい ex) Erlangハンズオン
  • 35.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 35 組織/コミュニティ/MeetUp ⁃ 是非イベントへお越しください ⁃ 来年もElixirConfJapanを予定しています ⁃ 東京近辺在住ならtokyo.exへ ⁃ 知見者が多いので相談出来る事も
  • 36.
    Copyright Drecom Co.,Ltd. All Rights Reserved. 36 まとめ ⁃ Elixirの導入に関する知見を共有しまし た ⁃ まずは素振りから始めましょう ⁃ 「プログラミングElixir」は最適 ⁃ OTPの理解は大切です ⁃ プロセス構造を理解すると捗ります