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
SREのチーム共通言語をGoにした話
Search
ryuichi1208
June 02, 2023
6
840
SREのチーム共通言語をGoにした話
ryuichi1208
June 02, 2023
Tweet
Share
More Decks by ryuichi1208
See All by ryuichi1208
AI前提のサービス運用について再考する
ryuichi1208
6
1.2k
A Shallow Dive into the World of TCP
ryuichi1208
1
560
入門リトライ
ryuichi1208
19
7.3k
超入門SRE 2025
ryuichi1208
4
1.4k
Goで作って学ぶWebSocket
ryuichi1208
5
3.7k
コード化されていない稼働中のサーバを移設_再構築する技術
ryuichi1208
20
13k
AI前提のサービス運用ってなんだろう?
ryuichi1208
9
1.9k
入門 バックアップ
ryuichi1208
22
10k
効果的なオンコール対応と障害対応
ryuichi1208
9
3.9k
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Building Adaptive Systems
keathley
43
2.7k
A Tale of Four Properties
chriscoyier
160
23k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
950
Documentation Writing (for coders)
carmenintech
72
4.9k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
A better future with KSS
kneath
238
17k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
Statistics for Hackers
jakevdp
799
220k
Practical Orchestrator
shlominoach
189
11k
Designing Experiences People Love
moore
142
24k
Transcript
1 SREのチーム共通言語をGoにした話 渡部 龍一 / GMO PEPABO inc. 2023.06.02 Go
Conference 2023 Online
2 アジェンダ 1. 自己紹介 2. 担当サービス紹介 3. 所属チーム紹介 4. チームが抱えていた課題
5. なぜGoにしたか 6. 結果どうなったか 7. まとめ
3 1. 自己紹介
技術部プラットフォームグループ 2021年 中途入社 4 自己紹介 渡部 龍一 Watanabe Ryuichi •
住んでるところ: 宮城 • ロール: SRE • 趣味: 旅行、ドライブ、(緩めの)自宅サーバ • Go歴: 2年 好きな標準ライブラリos/signal • Twitter : @ryuichi_1208
5 2. サービス紹介
6
7 1. インターネットでものを売りたい人を支援 2. 2005年にサービスの提供を開始 3. 複数のユーザーで1つのリソースを共有するマルチテナント 4. ざっくりアプリエンジニア :
30〜名、SRE: 6名 5. オンプレ〜VM〜k8s
8 3. 所属チーム紹介
• 所属 • 技術部プラットフォームグループ • 役割 • ペパボのサービスの可用性を確保し、成長に合わせて適切な環境を提 供するグループ •
インフラエンジニア/バックエンドを経験してきたメンバー構成 9
10 4. チームが抱えていた課題
• 歴史あるサービス • メンバーの入れ替わりも多くあったり • インフラの構成も大きく変わっている • これまでたくさんのインフラや自動化ツールが作られてきた ◦ Ruby,
PHP, Perl, Python, ShellScript, JavaScript, C, Java, etc… 11
• ツールごとに違う言語で実装されていた • 触るために言語を学ぶ必要があった • 複数の言語を短期間で触るとコンテキストスイッチ • 精通したメンバーもいなく開発速度やバグを生みやすい • ライブラリが至る所で使われている
• 大きな脆弱性ニュースが出た際に影響の有無がわかりにくい 12
• 共通言語を定めてこれらの課題を解決していこう 13
14 5. なぜGoにしたのか
• 1. Kubernetesやインフラツールやそれらエコシステムの多くがGoで実装されて いて触れる機会が多いと判断 • 2. 作るツールの多くはIOバウンドなものが多くgoroutineと相性が良かった • sshして〜httpリクエストして〜自動化ツール •
3. クロスプラットフォーム対応 • Mac/Windows/Linux用のバイナリが生成しやすかったり • 4. 簡潔な文法とシンプルなデザイン • 入門資料が豊富で入門しやすかった i. 研修をやって1週間くらいで読めるようになった ii. https://learn.microsoft.com/ja-jp/training/paths/go-first-steps/ iii. シンタックスシュガーも少ない 15
16 6. その結果
• 結果 • 抱えていた課題の一部を解消出来ている • 開発速度は言語の取得時間が減ったので上がった • Goに精通したメンバーがいるわけではない i. 公式ドキュメントや書籍を読みつつ習得中
17
• 感想 • 最高、書いていて気持ちいい、goroutine便利... • やってること • 社内ツールをGoへrewrite • 新規ツールはGoで書く
◦ レビューしやすさ↑ • 標準ライブラリ/OSSのコードリーディング • ツール書いて公開 • コミュニティも多く地元でも参加して情報交換 18
• 倒せていない課題も多々ある ◦ メモリリーク ◦ パフォーマンスが出なかった ◦ 仮想メモリをシビアに管理してる場面 ◦ GoでAtCoderやってるが必須レベルの関数を知らない
• 伸び代なので今後解決していきたい 19
20 ご清聴ありがとうございました