Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
安全にQAを行える環境が整いました!- Kyash TechTalk #6 - Kyashの開...
Search
uhzz
April 19, 2023
Technology
0
740
安全にQAを行える環境が整いました!- Kyash TechTalk #6 - Kyashの開発をチラ見せ
uhzz
April 19, 2023
Tweet
Share
More Decks by uhzz
See All by uhzz
自動生成されたhttpエンドポイントごとにカスタムミドルウェアを挿入したい話
uhzz
1
2.3k
Enablement Bootcampを終えて -Enablement Bootcamp for Gopherizing 〜業務で使えるGoを学ぼう〜
uhzz
0
270
Goのローカル開発をWorkspacesではじめよう
uhzz
1
860
【Go:パッケージ管理】DepからGo Modulesへ
uhzz
0
980
コードレビューで泣かないためのintSize = 32 << (^uint(0) >> 63)
uhzz
0
200
「ウチも、gRPC使えますか?」
uhzz
0
260
「インタフェースデザインの心理学」を読んで話したい3つのこと
uhzz
0
21k
「世界一「自由」な会社、NETFLIX NO RULES」を読んでみた
uhzz
0
340
Golang入門
uhzz
0
350
Other Decks in Technology
See All in Technology
RaspberryPi CM4(CM5も)面白いぞ!
nonnoise
0
110
プロダクト開発者目線での Entra ID 活用
sansantech
PRO
0
120
Ruby on Railsで持続可能な開発を行うために取り組んでいること
am1157154
3
160
マルチアカウント環境における組織ポリシーについて まとめてみる
nrinetcom
PRO
2
110
20250304_赤煉瓦倉庫_DeepSeek_Deep_Dive
hiouchiy
2
130
MLflowはどのようにLLMOpsの課題を解決するのか
taka_aki
0
130
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
210
OPENLOGI Company Profile for engineer
hr01
1
20k
Qiita Organizationを導入したら、アウトプッターが爆増して会社がちょっと有名になった件
minorun365
PRO
1
320
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
380
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
300
エンジニア主導の企画立案を可能にする組織とは?
recruitengineers
PRO
1
310
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
68
4.6k
GraphQLの誤解/rethinking-graphql
sonatard
69
10k
Producing Creativity
orderedlist
PRO
344
40k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
440
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Designing Experiences People Love
moore
140
23k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Facilitating Awesome Meetings
lara
53
6.3k
Building Your Own Lightsaber
phodgson
104
6.2k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Designing for Performance
lara
605
68k
Transcript
©2023 Kyash Inc. ©2023 Kyash Inc. 安全にQAを行える環境が整いました! Kyash TechTalk #6
- Kyashの開発をチラ見せ Reo Uehara @_uhzz_
©2023 Kyash Inc. 2 はじめまして Reo Uehara(@_uhzz_) KyashにBackend Engineerとして中途入社 昨年爆誕した、Growth
Technology Teamで 元気に毎日過ごしています また、社内で開催されているKyash.goの運営 メンバーとして、ワイワイすることに励んでいます
©2023 Kyash Inc. ©2023 Kyash Inc. はじめに 3 3
©2023 Kyash Inc. 3.データの匿名化anonymizer 4 本日のおはなし 2 1.いよいよお披露目!安全なQA環境 2.外部ベンダーとの共通ゲートウェイ
©2023 Kyash Inc. 5 本日のおはなし 2 1.いよいよお披露目!安全なQA環境 2.外部ベンダーとの共通ゲートウェイ 3.データの匿名化anonymizer
©2023 Kyash Inc. ©2023 Kyash Inc. いよいよお披露目! 安全なQA環境 6 6
©2023 Kyash Inc. ©2023 Kyash Inc. 背景 7 7
©2023 Kyash Inc. 昨年のふりかえり 2022年、Growth Technology Team爆誕 8 https://blog.kyash.co/entry/2022/06/15/170000
©2023 Kyash Inc. ©2023 Kyash Inc. “ ” 9 きちんと技術的負債にも目を向け解消していくことで達成
できるのではないかと考え、それらの課題解決に特化した 新Teamを発足するに至りました。 https://blog.kyash.co/entry/2022/06/15/170000
©2023 Kyash Inc. Growth Techの目標と取り組むタスク 10 https://blog.kyash.co/entry/2022/06/15/170000 リードタイムを3倍にする デプロイ頻度を3倍にする 変更失敗率を2/3にする
©2023 Kyash Inc. これまでに発表された成果 11 https://qiita.com/behiron/items/de1b082e60f7b4ade773 https://speakerdeck.com/ouchi2501/fourkeysji-pan-wogou-zhu-sitahua デプロイ頻度向上の仕組み として導入されたよ リードタイム、デプロイ頻度
が可視化されたよ
©2023 Kyash Inc. Growth Techの目標と取り組むタスク 12 https://blog.kyash.co/entry/2022/06/15/170000 リードタイムを3倍にする デプロイ頻度を3倍にする 変更失敗率を2/3にする
©2023 Kyash Inc. Growth Techの目標と取り組むタスク 13 https://blog.kyash.co/entry/2022/06/15/170000 リードタイムを3倍にする デプロイ頻度を3倍にする 変更失敗率を2/3にする
本日の内容
©2023 Kyash Inc. ©2023 Kyash Inc. 14 14 これまでのQA環境
©2023 Kyash Inc. 15 何が問題だったのか 1.QAと開発チームで同じ検証環境をつかっていた 2.検証環境の構成が本番環境と異なっていた
©2023 Kyash Inc. 検証環境はこれまで2つだった QAと開発チームで同じ検証環境をつかっていた 16 https://speakerdeck.com/yuu26/20220912-kyash-tech-talk-4?slide=5
©2023 Kyash Inc. 検証環境はこれまで2つだった QAと開発チームで同じ検証環境をつかっていた 17 https://speakerdeck.com/yuu26/20220912-kyash-tech-talk-4?slide=5 今は、MacからAWSに移行しているよ!
©2023 Kyash Inc. 18 QAと開発チームで同じ検証環境をつかっていた 検証環境2つのうち、 • QA実施期間中は、検証環境はコードフリーズすることに • その間、開発チームは個人のローカル環境を使っていた
QAチームが機能テストを実施する環境と、開発チームが作業する環境が同じ • そのため、QAチームと開発チームで検証環境の取り合い調整が必要だった 上記の検証環境のみ、外部ベンダーの開発環境と接続していた
©2023 Kyash Inc. イメージ 19 もう1つはリグレッションテストで使用 QAチームと開発チームでこっちの検証環境を使用
©2023 Kyash Inc. 20 インフラの構成変更を検証する環境がなく、変更ハードルが高かった 本番相当の負荷テストを実施できなかった 検証環境のリソースのほうが新しかったりした ユーザの問い合わせの再現や調査がむずかしかった • これまで本番で負荷テストを実施していた
検証環境の構成が本番環境と異なっていた 本番と構成が異なることで、 • 本番はCLB、検証環境はALBとか(Load Balancerの話) • これがブログで言及されていたカオス…
©2023 Kyash Inc. ©2023 Kyash Inc. 21 21 これからのQA環境
©2023 Kyash Inc. 22 解決! 2 1.QAと開発チームで検証環境を分けることができた 2.検証環境の構成が本番環境と同じになった 3.センシティブな内容を除くデータは本番相当になった
©2023 Kyash Inc. 23 QAと開発チームで検証環境を分けることができた 以下の恩恵がありました QAチームが本番相当の環境で機能テストができるようになった • 以前は調整が必要だった方の環境をつかってドシドシ開発することができる 元の検証環境は、引き続き開発チームが利用する使い捨て用途の環境にできた
©2023 Kyash Inc. 24 検証環境の構成が本番環境と同じになった 本番の構成と構成が揃うことで、 本番相当の負荷テストが検証環境で実施できるようになった • すでにSREチームが、別検証環境の導入を進めてくれている 同等の環境をterraformでシュッと作れるようになった
スロークエリの検知がしやすくなった
©2023 Kyash Inc. 25 センシティブな内容を除くデータは本番相当になった 以下の恩恵がありました データは、匿名化したセンシティブな情報を含め本番と同等になった 実データ相当のアカウントでログインして調査することができる • 信頼できるデータになった
• 匿名化については、あとのスライドで説明します • 信頼できるデータになった • 匿名化については、あとのスライドで説明します • システム障害調査のハードルを下げる • ユーザ問い合わせの調査ハードルを下げる • 新しく入ったメンバーが感じる、検証環境に対する認知負荷を下げる ◦ 「この検証環境は本番相当として使っていいよ」と周知できる
©2023 Kyash Inc. 26 本日のおはなし 2 1.いよいよお披露目!安全なQA環境 2.外部ベンダーとの共通ゲートウェイ 3.データの匿名化anonymizer
©2023 Kyash Inc. ©2023 Kyash Inc. 外部ベンダーとの 共通ゲートウェイ 27 27
©2023 Kyash Inc. ©2023 Kyash Inc. 28 28 これまでの外部接続
©2023 Kyash Inc. 検証環境とInternet/NAT GWが1:1 Kyashの検証環境のうち、 ベンダー側の検証環境に 接続しているのは1環境 だけだった 29
そのほかの検証環境は、外部ベンダーの モックを使用している
©2023 Kyash Inc. 各検証環境をベンダーにつなぐ方法もありそうだが 30
©2023 Kyash Inc. 各検証環境をベンダーにつなぐ方法もありそうだが ベンダーに登録できるIPが 1つという制約もあるため、 この方法はむずかしい 31 登録できるIPは1つやで
©2023 Kyash Inc. ©2023 Kyash Inc. 32 32 新しい外部接続
©2023 Kyash Inc. Internet/NAT GWを検証環境で1つに AWS Transit Gateway を使って、VPC間接続を いい感じにする!
33 https://docs.aws.amazon.com/ja_jp/vpc/latest/tgw/transit-gateway-nat-igw.html Transit Gatewayを使うと、 VPC同士を繋ぐハブとして動作します データは自動的に暗号化され、公共の インターネットを経由することはありません
©2023 Kyash Inc. 以前のネットワーク構成 Kyash側の検証環境の内、 ベンダー側の検証環境に 接続しているのは1環境 だけだった 34
©2023 Kyash Inc. 新しくなったネットワーク構成 ベンダー側の検証環境との 接続は既存のまま、 Kyash側の検証環境から アクセスが可能になった! 35
©2023 Kyash Inc. ©2023 Kyash Inc. ベンダーからの WebHookも共通化 36 36
©2023 Kyash Inc. ©2023 Kyash Inc. 37 37 これまでのWebHook
©2023 Kyash Inc. ベンダーからのWebHookとは 例えばKyashアプリで、 本人確認をするときに、 ベンダーへ依頼している 38 依頼するだけで、いったん通信は終了するよ
©2023 Kyash Inc. ベンダーからのWebHookとは ベンダー側で本人確認処理 が完了したタイミングで、 Kyashに通知してくれる 39 ベンダーのよしななタイミングでアクセスする
©2023 Kyash Inc. ベンダーからのWebHookとは ベンダー側で、この通知先 を1つしか登録できない 制約がある 40 通知先(callback)の登録は1つまで
©2023 Kyash Inc. ©2023 Kyash Inc. 41 41 新しいWebHook
©2023 Kyash Inc. 通知先はこれまで通り1つ API Gatewayで、 Kyash側のどの検証環境 に通知するか送信先を コントロールしている 42
(社内では、捻じ曲げると言ったり)
©2023 Kyash Inc. 43 本日のおはなし 2 1.いよいよお披露目!安全なQA環境 2.外部ベンダーとの共通ゲートウェイ 3.データの匿名化anonymizer
©2023 Kyash Inc. ©2023 Kyash Inc. データの匿名化 anonymizer 44 44
©2023 Kyash Inc. 本番の機密情報をそのまま使えない 本番のデータをそのまま 検証環境で使わずに、 匿名化しなければいけない 45 匿名化の対象 -
氏名 - 電話番号 - 口座番号 - クレジットカード番号 - メールアドレス - etc…
©2023 Kyash Inc. マイクロサービス単位のデータベースに対応しなければいけない マイクロサービス単位で データベースをもっており、 各データベースで匿名化 しなければいけない対象を 洗い出す必要がある 46
©2023 Kyash Inc. ©2023 Kyash Inc. 47 47 本番データの匿名化を行い、 検証で使えるデータにするには
©2023 Kyash Inc. 本番相当の検証データベースができるまで 48
©2023 Kyash Inc. ©2023 Kyash Inc. 49 49 匿名化を担う anonymizer
©2023 Kyash Inc. anonymizerの責任範囲 50
©2023 Kyash Inc. anonymizerの責任範囲 51 匿名化するためのSQL(ファイル) を各マイクロサービスDBごとに 管理している
©2023 Kyash Inc. anonymizerの責任範囲 52 DB(エンジン単位)で共通する処理に関しては抽象化して いるので、マイクロサービスDBが増えるごとに、config を追加するだけでOK!
©2023 Kyash Inc. ©2023 Kyash Inc. まとめ 53 53
©2023 Kyash Inc. 紆余曲折ありましたが 社内エンジニアに公開する ことができました!!! 54
©2023 Kyash Inc. ©2023 Kyash Inc. 55 55 社内外問わず 関わった皆様、お疲れ様でした!!!
OneTeam
©2023 Kyash Inc. 56