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
5
730
SREのチーム共通言語をGoにした話
ryuichi1208
June 02, 2023
Tweet
Share
More Decks by ryuichi1208
See All by ryuichi1208
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.6k
入門 バックアップ
ryuichi1208
20
8.1k
効果的なオンコール対応と障害対応
ryuichi1208
8
3.6k
コロナ禍とその後:地方エンジニアが学んだキャリア戦略の変遷
ryuichi1208
5
350
入門オンコール対応
ryuichi1208
9
3.5k
MySQLのOOMと戦った話
ryuichi1208
6
2.9k
障害対応を楽しむ7つのコツ
ryuichi1208
8
4.7k
超入門 SRE
ryuichi1208
9
3.8k
SLO Docsのすゝめ
ryuichi1208
8
3.3k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
A Philosophy of Restraint
colly
203
16k
Docker and Python
trallard
42
3.1k
Building an army of robots
kneath
302
44k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Side Projects
sachag
452
42k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Writing Fast Ruby
sferik
628
61k
Documentation Writing (for coders)
carmenintech
67
4.5k
Building Adaptive Systems
keathley
38
2.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
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 ご清聴ありがとうございました