MLOpsのバックエンド構築
from Goを学ぶ
言語を検討する
プロトタイプの機械学習モデルで,本番移行も可能なバックエンドを構築したい
速度が求められる概念検証やMVPの開発などにも良さそう. 要件が厳しいならRustの方が良いか
Goが良さそう
Go
シングルバイナリで移植性が高く,メモリ効率が良いのでクラウドでの運用が楽
実行速度が速く,静的型付けでバグを未然に防止
並列処理が得意
Python
Pros > 学習や推論とコードを共有可能. ライブラリも膨大
Cons > 実行速度が遅い. 並列処理に限界がある
Goの利点 > 実行速度が速い. 高負荷でも低遅延な並列処理が可能
Java
Pros > エコシステムが巨大. 特に分散処理基盤が強い(HadoopやSpark)
Cons > 起動が遅い. メモリ消費が激しい
Goの利点 > 起動が速い. メモリ効率が良く,クラウドでスケールしやすい
Rust
Pros > Go以上にメモリ効率がよく,速度も上. 型安全もより強力
Cons > 要件に対して能力が過剰? Goに比べ学習コストが高い. コンパイル時間が長い(気になるか?)
Goの利点 > 学習コストと能力のバランスを取れる. 構文がシンプルな分, Rustより開発速度が速くなりやすい
読んだやつ > https://www.reddit.com/r/golang/comments/u43i4u/what_do_you_use_go_for/?tl=ja
より型安全で効率の良いRustに比べ,Goはとにかくシンプルで書きやすいらしい. しかも,安定して動くし,何より学習難度が低く,同僚が抵抗なく拡張できる
Node.js
Pros > フロントエンドと言語を統一可能. I/O待機に強い(どういう意味?)
Cons > 型安全でない. CPUによる重い処理が大変
Goの利点 > 並列処理が強いので重い処理が平気?