Slide 1

Slide 1 text

1 SREのチーム共通言語をGoにした話 渡部 龍一 / GMO PEPABO inc. 2023.06.02 Go Conference 2023 Online

Slide 2

Slide 2 text

2 アジェンダ 1. 自己紹介 2. 担当サービス紹介 3. 所属チーム紹介 4. チームが抱えていた課題 5. なぜGoにしたか 6. 結果どうなったか 7. まとめ

Slide 3

Slide 3 text

3 1. 自己紹介

Slide 4

Slide 4 text

技術部プラットフォームグループ 2021年 中途入社 4 自己紹介 渡部 龍一 Watanabe Ryuichi ● 住んでるところ: 宮城 ● ロール: SRE ● 趣味: 旅行、ドライブ、(緩めの)自宅サーバ ● Go歴: 2年 好きな標準ライブラリos/signal ● Twitter : @ryuichi_1208

Slide 5

Slide 5 text

5 2. サービス紹介

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

7 1. インターネットでものを売りたい人を支援 2. 2005年にサービスの提供を開始 3. 複数のユーザーで1つのリソースを共有するマルチテナント 4. ざっくりアプリエンジニア : 30〜名、SRE: 6名 5. オンプレ〜VM〜k8s

Slide 8

Slide 8 text

8 3. 所属チーム紹介

Slide 9

Slide 9 text

● 所属 ● 技術部プラットフォームグループ ● 役割 ● ペパボのサービスの可用性を確保し、成長に合わせて適切な環境を提 供するグループ ● インフラエンジニア/バックエンドを経験してきたメンバー構成 9

Slide 10

Slide 10 text

10 4. チームが抱えていた課題

Slide 11

Slide 11 text

● 歴史あるサービス ● メンバーの入れ替わりも多くあったり ● インフラの構成も大きく変わっている ● これまでたくさんのインフラや自動化ツールが作られてきた ○ Ruby, PHP, Perl, Python, ShellScript, JavaScript, C, Java, etc… 11

Slide 12

Slide 12 text

● ツールごとに違う言語で実装されていた ● 触るために言語を学ぶ必要があった ● 複数の言語を短期間で触るとコンテキストスイッチ ● 精通したメンバーもいなく開発速度やバグを生みやすい ● ライブラリが至る所で使われている ● 大きな脆弱性ニュースが出た際に影響の有無がわかりにくい 12

Slide 13

Slide 13 text

● 共通言語を定めてこれらの課題を解決していこう 13

Slide 14

Slide 14 text

14 5. なぜGoにしたのか

Slide 15

Slide 15 text

● 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

Slide 16

Slide 16 text

16 6. その結果

Slide 17

Slide 17 text

● 結果 ● 抱えていた課題の一部を解消出来ている ● 開発速度は言語の取得時間が減ったので上がった ● Goに精通したメンバーがいるわけではない i. 公式ドキュメントや書籍を読みつつ習得中 17

Slide 18

Slide 18 text

● 感想 ● 最高、書いていて気持ちいい、goroutine便利... ● やってること ● 社内ツールをGoへrewrite ● 新規ツールはGoで書く ○ レビューしやすさ↑ ● 標準ライブラリ/OSSのコードリーディング ● ツール書いて公開 ● コミュニティも多く地元でも参加して情報交換 18

Slide 19

Slide 19 text

● 倒せていない課題も多々ある ○ メモリリーク ○ パフォーマンスが出なかった ○ 仮想メモリをシビアに管理してる場面 ○ GoでAtCoderやってるが必須レベルの関数を知らない ● 伸び代なので今後解決していきたい 19

Slide 20

Slide 20 text

20 ご清聴ありがとうございました