GCPUG Tokyo June 2018

抽選に初当選したので行ってみた。メモ。

はじめに

GCPUGについて紹介

How to utilize GKE for QA environment / @masudak (mercari)

  • mercariでは、QA環境の中で1年近く前からGKEつかってるらしい。今日はそのお話。
  • 発表者:@masudak
    • SET (Software Engineer in Test)
      • SETは2011年にgoogleが提唱(GoogleはSETからSETI(Software Engineer, Tools & Infrastructure)に移っているというもある模様)
      • mercariは2016/10から導入している --> エンジニアblogに記事あり
  • 開発フロー
    • PMが仕様をJIRAに書く
    • エンジニア・デザイナーがローカルで実装
    • レビュー/
    • QA環境でQAエンジニアがテスト
  • QA環境
    • QAエンジニア/エンジニアがQAする環境
    • 共通のDB、検索データをもつ
    • API/Frontend/Admin/Webなどが動く
      • これらは独立してて、他の人に影響を与えないでテストできる
    • 要件
      • 自分専用/WebUIでデプロイ/スケール/可能な限り本番構成反映
  • 2017春
    • 1年前くらいにmonolithic --> microservice (PHP --> Go)
    • CircleCIの中でデプロイ
      • CircleCIのなかでごにょごにょ
      • PR番号とってきてk8s.yaml(テンプレ)の中の変数をsedで置き換え
      • 外部からのアクセスはリバプロ(Goで実装)でhttp header見て適切なPodにrouting
      • わりと地道なことをやってたみたい(Pod消す時とか)
    • 力技 --> めんてつらい
  • 2017後半
    • Spinnaker
      • CircleCIからはGCRにイメージをpush
      • それをトリガにSpinnakerがデプロイ(pollingしてるらしい)
      • WebUI中心で微妙
      • PR Podsに対応できない = PRごとの環境が作れない
    • CRDを作成(k8sのreconciliation loopを利用)
      • k8s controller for PR
        • ループしてPRの状況を確認する
        • Openだったら既存のRSを複製
        • 環境変数などを書き換え
        • desired stateを書き換え
        • PRのRS完成
        • ひつように応じてexternal-dnsドメイン付与
        • ---> ひょっとしてkustomizeで置き換え可能かも
  • まとめ
    • 開発生産性も品質もまだ追求できる
    • たった1つのVM時代(virtualenvとか使って環境分離??)から2年でここまできた
  • Q&A
    • databaseとかのスキーマ変わるような場合のテストはどうするのか?
      • API gatewayの開発の話なので、DBのスキーマが変わるような変更には対応していない
    • SETの役割
      • テストのやり方とか、こうテストするといいよとか考えているの?
      • CaosEngineeringとか考えているけど、チームとしてはまだ取り組めていない
      • SETは4人

GCPの新機能の話もあったけど、App Engineはちゃんとつかっていないので、メモはなし ;p

感想

  • SETというroleを作り、QAにもちゃんとコストかけて改善しているのは良いというか羨ましいですね。
  • CircleCIのながでごにょごにょの部分が今ひとつ何やってるかわからず。PRごとにReplicaSet作ってデプロイしているのかな。そのうち資料が公開されたら改めて確認する。
  • ここでもCRDだった。やはりCRD化(k8s Native化)が流れなの?
  • マイクロサービス化に取り組んでいるのここ1年ぐらいなんですね。もっと前からやっているのかと勝手に思ってた。
  • たった1つのVM時代とはどんな感じでQA環境として使っていたのか気になった。
  • 開発はローカルでやっているみたいだけど、やはり開発はローカルでやるのが普通なのかな。GKE上とかでやらないのか気になった。