Upgrade to Pro — share decks privately, control downloads, hide ads and more …

闇のBashをGoに置き換える技術 / golang.tokyo #11

nashiox
December 11, 2017

闇のBashをGoに置き換える技術 / golang.tokyo #11

golang.tokyo #11 の発表資料です。

nashiox

December 11, 2017
Tweet

Other Decks in Programming

Transcript

  1. リブセンスの場合 - 積み重なった闇のBash群 - サーバ構築スクリプト - Bash -> Chef ->

    Ansible と変遷 - 便利CLI - PythonやGoに置き換え - バッチスクリプト - Goに置き換え
  2. リブセンスの場合 - 積み重なった闇のBash群 - サーバ構築スクリプト - Bash -> Chef ->

    Ansible と変遷 - 便利CLI - PythonやGoに置き換え - バッチスクリプト <- 今日はここの話 - Goに置き換え
  3. スクリプトの動作 - データ加工 - 元データのリストア - 並行で加工処理 - ダンプ -

    データ加工後のデータをテーブルごとに並行でダンプ - DBを一度に作れるフルダンプも生成 - インポート - フルダンプからの開発DB生成 - 日次更新が必要なテーブルを並行で部分インポート
  4. Goの選定理由 - 並行実行の実装が容易 - Goroutineを使うだけで並行処理の実装が可能 - バッチなのでGoroutineのコストを気にしなくていい - Goの言語仕様のシンプルさ -

    実装も利用するのもインフラエンジニア - コードを書くことが本職ではない - 複雑な実装が出来るよりも制約されるほうがいい - go testが言語仕様に組み込まれてるのもよい - IDEが使える - 補完・コードジャンプは重要
  5. 初回リプレースから約9ヶ月 - 動作は順調 - 問題なく動いています - 開発・リプレースも順調 - 現在 v0.0.8

    - 読める・手を入れやすくなったため、変更が容易 - 外部コマンドに頼っていた部分もリプレース開始 - ダンプ・インポート部分(mysqldump) - Pure Goで実装してOSSとして出すつもり - (今日に実装間に合わなかった)
  6. まとめ - 闇のBashをGoに置き換えたのは良い選択だった - 読みやすい・書きやすいことは大事 - 無理に全部置き換えようとしないのはもっと大事 - Goroutineのパワーすごい -

    1バイナリになるので管理も楽 - 最近自前RPM化もした - メンテナンス出来るって素晴らしい - 動き続けてても放置はダメ - 先々を考えた技術選定も大切