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
730
安全に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
260
Goのローカル開発をWorkspacesではじめよう
uhzz
1
830
【Go:パッケージ管理】DepからGo Modulesへ
uhzz
0
940
コードレビューで泣かないためのintSize = 32 << (^uint(0) >> 63)
uhzz
0
190
「ウチも、gRPC使えますか?」
uhzz
0
250
「インタフェースデザインの心理学」を読んで話したい3つのこと
uhzz
0
21k
「世界一「自由」な会社、NETFLIX NO RULES」を読んでみた
uhzz
0
320
Golang入門
uhzz
0
330
Other Decks in Technology
See All in Technology
GDG Tokyo 生成 AI 論文をわいわい読む会
enakai00
0
220
[SRE kaigi 2025] ガバメントクラウドに向けた開発と変化するSRE組織のあり方 / Development for Government Cloud and the Evolving Role of SRE Teams
kazeburo
3
1.3k
消し忘れリソースゼロへ!私のResource Explorer活用法
cuorain
0
110
RevOpsへ至る道 データ活用による事業革新への挑戦 / path-to-revops
pei0804
1
230
SREKaigi.pdf
_awache
2
2.8k
Plants vs thieves: Automated Tests in the World of Web Security
leichteckig
0
140
srekaigi2025-hajimete-ippo-aws
masakichieng
0
130
Redmineの意外と知らない便利機能 (Redmine 6.0対応版)
vividtone
0
110
なぜfreeeはハブ・アンド・スポーク型の データメッシュアーキテクチャにチャレンジするのか?
shinichiro_joya
3
880
Site Reliability Engineering on Kubernetes
nwiizo
6
3.5k
実践!生成AIのビジネス活用 / How to utilize Generative AI in your own business
gakumura
1
180
ブロックチェーンR&D企業における SREの実態 / SRE Kaigi 2025
datachain
0
3k
Featured
See All Featured
Side Projects
sachag
452
42k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Git: the NoSQL Database
bkeepers
PRO
427
64k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
980
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
YesSQL, Process and Tooling at Scale
rocio
170
14k
GraphQLとの向き合い方2022年版
quramy
44
13k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
260
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
52k
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