Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby製社内ツールのGo移行
Search
Atsushi Tanaka
March 25, 2024
Programming
2
700
Ruby製社内ツールのGo移行
golang.tokyo #34 で発表
https://golangtokyo.connpass.com/event/310844/
Atsushi Tanaka
March 25, 2024
Tweet
Share
More Decks by Atsushi Tanaka
See All by Atsushi Tanaka
OpenCensusと歩んだ7年間
bgpat
0
390
SREだけど社内営業組織の業務改善をしてみた
bgpat
0
370
ウォンテッドリーにおける Platform Engineering
bgpat
0
470
Wantedly での Datadog 活用事例
bgpat
2
5.6k
KubernetesでDatadogを飼うならオートディスカバリーを使わないと損
bgpat
2
900
マイクロサービス基盤にフルマネージドサービスではなくKubernetesを選択する理由
bgpat
12
3.6k
400万ユーザーに価値を届けるエンジニアを を支えるインフラ基盤
bgpat
3
470
導入から5年が経って見えた Datadog APM 運用の課題
bgpat
4
1.3k
取っていてよかった Kubernetes のバックアップ
bgpat
1
840
Other Decks in Programming
See All in Programming
KoogではじめるAIエージェント開発
hiroaki404
1
480
DartASTとその活用
sotaatos
2
130
自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー
segadevtech
2
1k
アーキテクチャと考える迷子にならない開発者テスト
irof
8
3k
Claude Code on the Web を超える!? Codex Cloud の実践テク5選
sunagaku
0
550
歴史から学ぶ「Why PHP?」 PHPを書く理由を改めて理解する / Learning from History: “Why PHP?” Rediscovering the Reasons for Writing PHP
seike460
PRO
0
160
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
150
ノーコードからの脱出 -地獄のデスロード- / Escape from Base44
keisuke69
0
710
MCPサーバー「モディフィウス」で変更容易性の向上をスケールする / modifius
minodriven
8
1.5k
flutter_kaigi_2025.pdf
kyoheig3
1
330
自動テストを活かすためのテスト分析・テスト設計の進め方/JaSST25 Shikoku
goyoki
3
680
Building AI with AI
inesmontani
PRO
0
190
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
24
1.6k
What's in a price? How to price your products and services
michaelherold
246
12k
Designing Experiences People Love
moore
142
24k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Optimizing for Happiness
mojombo
379
70k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Visualization
eitanlees
150
16k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Unsuck your backbone
ammeep
671
58k
The Cult of Friendly URLs
andyhume
79
6.7k
Raft: Consensus for Rubyists
vanstee
140
7.2k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
320
Transcript
© 2024 Wantedly, Inc. Ruby製社内ツールのGo移⾏ golang.tokyo #34 Mar. 25 2024
- Atsushi Tanaka @bgpat
© 2024 Wantedly, Inc. $ whoami @bgpat / Atsushi Tanaka
ウォンテッドリー株式会社 Infrastructure Engineer Kubernetes / Terraform SRE / Platform Engineering 好きなパッケージ golang.org/x/sync/singleflight
© 2024 Wantedly, Inc. 究極の適材適所により、 シゴトでココロオドルひとを ふやすために Wantedlyはパーパス‧共感を軸にした、⼈と会社との出会いを2012 年から創出。 はたらくすべての⼈が共感を通じて「であい」「つながり」「つなが
りを深める」ためのビジネスSNS「Wantedly」を提供しています。 1⼈でも多くの⼈がワクワクしたり、熱中してシゴトと向き合えるよ うな世界を実現するために、国境を超えて「はたらくすべての⼈のイ ンフラ」を創っていきます。 ウォンテッドリーについて
© 2024 Wantedly, Inc. ウォンテッドリーについて
© 2024 Wantedly, Inc. ウォンテッドリーについて ウォンテッドリーのバックエンド領域を⽀える⾔語の歴史を読み解く https://www.wantedly.com/companies/wantedly/post_articles/886087
© 2024 Wantedly, Inc. ウォンテッドリーについて • (Goも使われているが) Rubyの利⽤が多い • マイクロサービス構成
• Kubernetes上で運⽤
© 2024 Wantedly, Inc. Infrastructure Squad (インフラチーム) の取り組み インフラや開発運⽤に関わる機能とプラクティスをプラットフォームとして提供していく
© 2024 Wantedly, Inc. Infrastructure Squad (インフラチーム) の取り組み インフラや開発運⽤に関わる機能とプラクティスをプラットフォームとして提供していく 今⽇話す部分
© 2024 Wantedly, Inc. 内製ツール “kube” kube | Wantedly Engineering
Handbook https://docs.wantedly.dev/fields/dev-tools/kube
© 2024 Wantedly, Inc. 内製ツール “kube” • エンジニアがデプロイ等の操作をするためのツール • kubectlのラッパーコマンド
• はじめはRubyで書かれていた ◦ Rubyを扱えるエンジニアが多かった ◦ 参考にしたCapistranoがRubyで書かれていた
© 2024 Wantedly, Inc. Ruby製kubeのつらみ • 環境によって動作しない ◦ ランタイムのバージョン ◦
パッケージや共有ライブラリへの依存 ◦ OSによる環境差異 • Kubernetesとの相性が良くない ◦ パッケージが少ない • 実⾏速度が遅い ◦ Rubyで並列処理を書くのは⼤変
© 2024 Wantedly, Inc. Goへのリプレース • 環境によって動作しない ◦ ランタイムのバージョン →
コンパイラ⾔語なのでランタイム依存しない ◦ パッケージや共有ライブラリへの依存 → static linkで考慮不要 ◦ OSによる環境差異 → クロスコンパイルが容易 • Kubernetesとの相性が良くない ◦ パッケージが少ない → 既存の資産を利⽤可能に • 実⾏速度が遅い ◦ Rubyで並列処理を書くのは⼤変 → goroutine で簡単に並列処理が書ける
© 2024 Wantedly, Inc. 移⾏後しばらく経って - 良かった点 • CIOpsでも利⽤ ◦
エンジニアのPCから⼿動デプロイ→CIで⾃動デプロイに変更 ◦ エンジニアのPCはmacOSだったがCIのLinux環境でも問題なく動作 • Goや依存パッケージのアップデートで壊れにくい ◦ 型があるおかげで go build が成功すればだいたい動く ◦ 他の⾔語に⽐べて破壊的変更が少ない (発表者の印象)
© 2024 Wantedly, Inc. 移⾏後しばらく経って - 困った点 • テストが書きづらい ◦
処理を後から書き換えることができない ◦ mockしやすい構成にする必要がある ▪ かなりの量のコードを書き直した • ツールチェインが充実していなかった→時間経過で改善 ◦ パッケージマネージャー: 当時は go mod がなかった ◦ ファイル埋め込み: go:embed がなかったので jessevdk/go-assets や rakyll/statik を使っていた
© 2024 Wantedly, Inc. まとめ Goに移⾏したことで • 環境依存を限りなくなり多様なニーズに応えやすく • 安全にバージョンアップでき容易にメンテナンス可能に
• テストの考慮をせず書いてほとんどを書き直すことに
© 2024 Wantedly, Inc. We are hiring! https://www.wantedly.com/projects/522096