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

bank engineer night#02

Bank, Inc
October 11, 2018

bank engineer night#02

Bank, Inc

October 11, 2018
Tweet

More Decks by Bank, Inc

Other Decks in Technology

Transcript

  1. スピード狂エンジニアたちの開発
    速度を保つインフラとは
    Bank,Inc
    高橋 拓也

    View Slide

  2. 自己紹介
    - 高橋拓也
    - サーバサイドとクラウドインフラ
    - Kubernetes が好き
    - 糖質制限中

    View Slide

  3. 本日の内容
    とある取り組みをベースに,
    手が速い人達を押さえつけない
    ための学びを教えます

    View Slide

  4. 開発チーム
    この1年で一気に
    エンジニアが増えた

    View Slide

  5. 開発チーム
    初期リリース時: 数人

    View Slide

  6. 開発チーム
    現在: 15 ~ 20人くらい

    View Slide

  7. 開発チーム
    昔ながらの開発フローが
    だんだん通用しなくなる

    View Slide

  8. 開発チーム
    数人 ~ 10人時代

    View Slide

  9. 開発チーム
    どうやって開発していたか?

    View Slide

  10. 開発チーム
    どうやって開発していたか?
    Staging 環境

    View Slide

  11. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル

    View Slide

  12. 開発チーム
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル

    View Slide

  13. 開発チーム
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル

    View Slide

  14. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル

    View Slide

  15. 開発チーム
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!

    View Slide

  16. 開発チーム
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!

    View Slide

  17. 開発チーム
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!

    View Slide

  18. 開発チーム
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    優しい世界

    View Slide

  19. 開発チーム
    数人ならこれでもよかった

    View Slide

  20. 開発チーム
    人数が増えてくると

    View Slide

  21. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル

    View Slide

  22. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!

    View Slide

  23. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージング
    戦国時代

    View Slide

  24. 開発チーム
    そこで作成された

    View Slide

  25. 開発チーム
    そこで作成された
    Staging2

    View Slide

  26. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージング
    API

    View Slide

  27. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージング
    API
    なんとかなった

    View Slide

  28. 開発チーム
    ぼくがバンクに入った頃
    (5月)

    View Slide

  29. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!

    View Slide

  30. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    どうにもならない

    View Slide

  31. 開発チーム
    ステージング
    API
    ローカル
    一人ひとりの専用APIを

    View Slide

  32. 開発チーム
    ステージング
    API
    ローカル
    無限に
    スケールできるように
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル

    View Slide

  33. 開発チーム
    ステージング
    API
    ローカル
    無限ステージング
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル

    View Slide

  34. 開発チーム
    昼会で熱望されていた
    ローカル
    ほしい

    View Slide

  35. 開発チーム
    入社2週目ぼく
    「つくれそう」

    View Slide

  36. 開発チーム
    入社2週目ぼく
    「つくれそう」
    つくった

    View Slide

  37. 開発チーム
    機能提供を
    とにかく急いだ

    View Slide

  38. 開発チーム
    1. CI が通ったら自動デプロイ
    2. プルリク番号の名前がつく
    3. pr-100-api.domain.com でアクセス

    View Slide

  39. 開発チーム
    良くない構成も
    混じった

    View Slide

  40. 開発チーム
    1. ひとつのDBインスタンスを共有
    2. スクリプトは .circleci/config.yaml

    View Slide

  41. 開発チーム
    良くない構成も
    混じったけど
    動く

    View Slide

  42. 開発チーム
    ステージング
    API
    ローカル
    ねんがんの
    むげんすてーじんぐを
    てにいれた!
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル

    View Slide

  43. 開発チーム
    リリースから
    1ヶ月後

    View Slide

  44. 開発チーム
    みんなの開発は
    どうなったか?

    View Slide

  45. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    むげん

    View Slide

  46. 開発チーム
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ローカル
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    ステージングで
    動作試したい!
    無限ステージング
    使われない問題

    View Slide

  47. 開発チーム
    なんでみんな
    使ってくれないの

    View Slide

  48. 開発チーム
    使い勝手がよくなかった

    View Slide

  49. 開発チーム
    今まで

    View Slide

  50. 開発チーム
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル

    View Slide

  51. 開発チーム
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    1ステップ

    View Slide

  52. 開発チーム
    ステージングで
    動作試したい!
    ステージング
    API
    ローカル
    ローカル
    ローカル
    1分

    View Slide

  53. 開発チーム
    無限ステージング

    View Slide

  54. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する

    View Slide

  55. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    手順が多い

    View Slide

  56. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する

    View Slide

  57. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    CI 完了を待たないといけない

    View Slide

  58. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    自分の使いたいタイミングで
    使えない

    View Slide

  59. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する

    View Slide

  60. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    5分

    View Slide

  61. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    5分

    View Slide

  62. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    10分

    View Slide

  63. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    合計20分

    View Slide

  64. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    APIが使えるようになるまで
    めちゃめちゃ時間がかかる

    View Slide

  65. 開発チーム
    うちのチームは
    スピード命

    View Slide

  66. 開発チーム
    コレじゃ使われない...

    View Slide

  67. 開発チーム
    直そう

    View Slide

  68. 開発チーム
    ステージング
    API
    ローカル
    無限ステージング改
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル

    View Slide

  69. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    5分

    View Slide

  70. 開発チーム
    CI 完了を待たないといけない問題

    View Slide

  71. 開発チーム
    既存のデプロイフローに
    載せた

    View Slide

  72. 開発チーム
    ステージングデプロイ
    プロダクションデプロイ

    View Slide

  73. 開発チーム
    無限ステージング

    View Slide

  74. 開発チーム
    https://watashino-api.domain.com
    任意の名前で作成可能にした

    View Slide

  75. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    5分

    View Slide

  76. 開発チーム
    アプリをビルドしないと
    いけない問題

    View Slide

  77. 開発チーム
    URL を配信するエンドポイントを
    作って

    View Slide

  78. 開発チーム
    ベータ版に参照機能を
    作ってもらった

    View Slide

  79. 開発チーム
    ベータ版に参照機能を
    作ってもらった
    アプリビルドが不要に!

    View Slide

  80. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    10分

    View Slide

  81. 開発チーム
    そもそも UP が
    遅すぎる問題

    View Slide

  82. インフラ構成で頑張って
    10分から10秒にした
    開発チーム

    View Slide

  83. 開発チーム
    詳しくは
    Google Cloud Next ‘18 in Tokyo の
    発表を見てください
    (スライド32Pあたり)
    https://speakerdeck.com/bankinc220/cash-wozhi-eru-google-kubernetes-engine
    https://www.youtube.com/watch?v=b2tq_f3ZWdE

    View Slide

  84. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する

    View Slide

  85. 開発チーム
    ブランチをGitHubにプッシュして,プルリ
    クを発行して,CircleCI が通りきるまで
    待って,CircleCIがきちんと通ったか確認
    して,プルリク番号を確かめて,APIが使
    えるようになるまで待って,アプリのエン
    ドポイントを書き換えて,アプリをビルドし
    て,動作確認する
    デメリットすべて解決 ♀

    View Slide

  86. 開発チーム
    だんだんと
    みんな使ってくれるようになった

    View Slide

  87. 開発チーム
    この作業で学んだこと

    View Slide

  88. 開発チーム
    開発作業が
    遅くなるのは悪

    View Slide

  89. 開発チーム
    最初のままだったら
    きっと誰も使ってくれなかった

    View Slide

  90. 開発チーム
    この作業で学んだこと

    View Slide

  91. 開発チーム
    ユーザーに選択肢を残す

    View Slide

  92. 開発チーム
    ユーザーに選択肢を残す

    View Slide

  93. 開発チーム
    ユーザーに選択肢を残す
    実は昔のステージングは
    まだまだ現役

    View Slide

  94. 開発チーム
    ホントは捨てたい

    View Slide

  95. 開発チーム
    でも,使っているユーザーがいる

    View Slide

  96. 開発チーム
    共有ステージングの方が
    開発速度が速い人がいる

    View Slide

  97. 開発チーム
    多様性

    View Slide

  98. 開発チーム
    ステージング
    API
    ローカル
    全力で
    シェアは奪いに行く
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル
    ステージング
    API
    ローカル

    View Slide

  99. 開発チーム
    この作業で学んだこと

    View Slide

  100. 開発チーム
    他人のワークフローを
    無理やり変えない

    View Slide

  101. 開発チーム
    だって嫌だもん

    View Slide

  102. 開発チーム
    無限ステージング利用を
    強制することもできた

    View Slide

  103. 開発チーム
    使われない理由が
    わかっているか?

    View Slide

  104. 開発チーム
    使われるようになる努力を
    怠ってるんじゃないか?

    View Slide

  105. 開発チーム
    常に自分に
    問いかけよう

    View Slide

  106. 開発チーム
    まとめ

    View Slide

  107. 開発チーム
    インフラは
    あくまで裏方

    View Slide

  108. 開発チーム
    開発者の気持ちになって
    サポートに徹する!

    View Slide

  109. 開発チーム
    (個人的意見です)

    View Slide

  110. おしまい

    View Slide