1SREのチーム共通言語をGoにした話渡部 龍一 / GMO PEPABO inc.2023.06.02 Go Conference 2023 Online
View Slide
2アジェンダ1. 自己紹介2. 担当サービス紹介3. 所属チーム紹介4. チームが抱えていた課題5. なぜGoにしたか6. 結果どうなったか7. まとめ
31. 自己紹介
技術部プラットフォームグループ2021年 中途入社4自己紹介渡部 龍一 Watanabe Ryuichi● 住んでるところ: 宮城● ロール: SRE● 趣味: 旅行、ドライブ、(緩めの)自宅サーバ● Go歴: 2年 好きな標準ライブラリos/signal● Twitter : @ryuichi_1208
52. サービス紹介
6
71. インターネットでものを売りたい人を支援2. 2005年にサービスの提供を開始3. 複数のユーザーで1つのリソースを共有するマルチテナント4. ざっくりアプリエンジニア : 30〜名、SRE: 6名5. オンプレ〜VM〜k8s
83. 所属チーム紹介
● 所属● 技術部プラットフォームグループ● 役割● ペパボのサービスの可用性を確保し、成長に合わせて適切な環境を提供するグループ● インフラエンジニア/バックエンドを経験してきたメンバー構成9
104. チームが抱えていた課題
● 歴史あるサービス● メンバーの入れ替わりも多くあったり● インフラの構成も大きく変わっている● これまでたくさんのインフラや自動化ツールが作られてきた○ Ruby, PHP, Perl, Python, ShellScript, JavaScript, C, Java, etc…11
● ツールごとに違う言語で実装されていた● 触るために言語を学ぶ必要があった● 複数の言語を短期間で触るとコンテキストスイッチ● 精通したメンバーもいなく開発速度やバグを生みやすい● ライブラリが至る所で使われている● 大きな脆弱性ニュースが出た際に影響の有無がわかりにくい12
● 共通言語を定めてこれらの課題を解決していこう13
145. なぜ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
166. その結果
● 結果● 抱えていた課題の一部を解消出来ている● 開発速度は言語の取得時間が減ったので上がった● Goに精通したメンバーがいるわけではないi. 公式ドキュメントや書籍を読みつつ習得中17
● 感想● 最高、書いていて気持ちいい、goroutine便利...● やってること● 社内ツールをGoへrewrite● 新規ツールはGoで書く○ レビューしやすさ↑● 標準ライブラリ/OSSのコードリーディング● ツール書いて公開● コミュニティも多く地元でも参加して情報交換18
● 倒せていない課題も多々ある○ メモリリーク○ パフォーマンスが出なかった○ 仮想メモリをシビアに管理してる場面○ GoでAtCoderやってるが必須レベルの関数を知らない● 伸び代なので今後解決していきたい19
20ご清聴ありがとうございました