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

GitHub Flowでの高速なデリバリーをささえるテスト基盤について

kimkiyong
December 15, 2022

GitHub Flowでの高速なデリバリーをささえるテスト基盤について

kimkiyong

December 15, 2022
Tweet

Other Decks in Programming

Transcript

  1. 自己紹介 金 祺庸 ▪ 2022年2月 BuysellTechnologies入社 ▫ BE エンジニア ▪

    Go歴 2 ~ 3年 ▫ BST.go (社内go community)の立ち上げ・運 営 ▪ 趣味 ▫ 読書 ▫ ジム ▫ 冷水シャワー
  2. 開発環境 ▪ BEの構成 ▫ Hasura + Go API Server(Sidecar) ▪

    主にGraphQLで通信 ▪ MSが提唱するSidecar Pattern ▪ Hasura(Primary Application) • DBのschemaからGraphQL APIを自動生成してくれる • 認可制御・基本的なCRUD操作が可能 ▪ Go API Server(Sidecar) • Hasura APIでは対応しきれない副作用的な処理を実行する • 他Serviceとの通信部分 • メインは99designs/gqlgen ◦ RESTも使う(Pub/Sub) • 複雑なLogicが集中しやすい
  3. 開発環境 ▪ ブランチ戦略 ▫ Github Flow ▪ 運用するbranchはmainブランチとfeatureブランチのみ • mainブランチへのPRがmergeされると即Production環境へDeploy

    ▫ Feature Flag ▪ コードを書き換えずフラグを使って機能の有効/無効を切り替える • Deploy後、Feature Flagを切り替えることで機能がReleaseされる ▪ ブランチの状態をRelease作業を切り離せる
  4. 宣言的なFixture ▪ kyong0612/polluterを使用 ▫ Mysql,PostgreSQL,Redisに対応 ▫ yaml形式でFixtureを用意できる ▪ 再利用性が高い ▪

    パターンを用意することで面 倒なFixtureの挿入作業を簡 略化できる Fixtureを適用
  5. 他にも 18 ▪ stretchr/testify ▫ Test関係のutilsを提供 ▫ Testing pkgの学習コスト軽減 ▪

    gostaticanalysis/skeleton + gqlgo/gqlanalysisでの自作linter ▫ graphQL schemaに対して独自の静的解析を実行 攻めのための守りを改善しています