Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby製社内ツールのGo移行
Search
Atsushi Tanaka
March 25, 2024
Programming
2
790
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
450
SREだけど社内営業組織の業務改善をしてみた
bgpat
0
450
ウォンテッドリーにおける Platform Engineering
bgpat
0
520
Wantedly での Datadog 活用事例
bgpat
2
5.9k
KubernetesでDatadogを飼うならオートディスカバリーを使わないと損
bgpat
2
960
マイクロサービス基盤にフルマネージドサービスではなくKubernetesを選択する理由
bgpat
12
3.8k
400万ユーザーに価値を届けるエンジニアを を支えるインフラ基盤
bgpat
3
480
導入から5年が経って見えた Datadog APM 運用の課題
bgpat
4
1.3k
取っていてよかった Kubernetes のバックアップ
bgpat
1
870
Other Decks in Programming
See All in Programming
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
410
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
870
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
140
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
AIコーディングエージェント(Manus)
kondai24
0
200
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
920
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
3.2k
FluorTracer / RayTracingCamp11
kugimasa
0
240
tparseでgo testの出力を見やすくする
utgwkk
2
260
SwiftUIで本格音ゲー実装してみた
hypebeans
0
460
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.4k
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
9
5.9k
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
13
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Side Projects
sachag
455
43k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
680
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
0
60
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
170
Statistics for Hackers
jakevdp
799
230k
HDC tutorial
michielstock
0
260
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
72
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