Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SREのチーム共通言語をGoにした話

ryuichi1208
June 02, 2023
320

 SREのチーム共通言語をGoにした話

ryuichi1208

June 02, 2023
Tweet

Transcript

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

    View Slide

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

    View Slide

  3. 3
    1. 自己紹介

    View Slide

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

    View Slide

  5. 5
    2. サービス紹介

    View Slide

  6. 6

    View Slide

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

    View Slide

  8. 8
    3. 所属チーム紹介

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. 14
    5. なぜGoにしたのか

    View Slide

  15. ● 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

    View Slide

  16. 16
    6. その結果

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide