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
710
安全にQAを行える環境が整いました!- Kyash TechTalk #6 - Kyashの開発をチラ見せ
uhzz
April 19, 2023
Tweet
Share
More Decks by uhzz
See All by uhzz
自動生成されたhttpエンドポイントごとにカスタムミドルウェアを挿入したい話
uhzz
1
2.2k
Enablement Bootcampを終えて -Enablement Bootcamp for Gopherizing 〜業務で使えるGoを学ぼう〜
uhzz
0
250
Goのローカル開発をWorkspacesではじめよう
uhzz
1
800
【Go:パッケージ管理】DepからGo Modulesへ
uhzz
0
910
コードレビューで泣かないためのintSize = 32 << (^uint(0) >> 63)
uhzz
0
190
「ウチも、gRPC使えますか?」
uhzz
0
250
「インタフェースデザインの心理学」を読んで話したい3つのこと
uhzz
0
20k
「世界一「自由」な会社、NETFLIX NO RULES」を読んでみた
uhzz
0
320
Golang入門
uhzz
0
330
Other Decks in Technology
See All in Technology
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.9k
5分でわかるDuckDB
chanyou0311
10
3.3k
非機能品質を作り込むための実践アーキテクチャ
knih
5
1.6k
AWS re:Invent 2024 ふりかえり勉強会
yhana
0
460
効率的な技術組織が作れる!書籍『チームトポロジー』要点まとめ
iwamot
1
110
JVM(JavaVM)の性能分析者観点で探るInstanaの可能性
instanautsjp
0
120
コンテナセキュリティのためのLandlock入門
nullpo_head
2
330
組み込みアプリパフォーマンス格闘記 検索画面編
wataruhigasi
1
140
TypeScript開発にモジュラーモノリスを持ち込む
sansantech
PRO
2
670
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
550
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
270
Work as an App Engineer
lycorp_recruit_jp
0
370
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
How to Ace a Technical Interview
jacobian
276
23k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
A better future with KSS
kneath
238
17k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Mobile First: as difficult as doing things right
swwweet
222
9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
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