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
260
Goのローカル開発をWorkspacesではじめよう
uhzz
1
850
【Go:パッケージ管理】DepからGo Modulesへ
uhzz
0
970
コードレビューで泣かないための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
340
Other Decks in Technology
See All in Technology
手を動かしてレベルアップしよう!
maruto
0
200
日経のデータベース事業とElasticsearch
hinatades
PRO
0
210
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
180
Amazon Q Developerの無料利用枠を使い倒してHello worldを表示させよう!
nrinetcom
PRO
2
110
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
18k
いまからでも遅くない!コンテナでWebアプリを動かしてみよう!コンテナハンズオン編
nomu
0
150
ESXi で仮想化した ARM 環境で LLM を動作させてみるぞ
unnowataru
0
160
プロダクトエンジニア構想を立ち上げ、プロダクト志向な組織への成長を続けている話 / grow into a product-oriented organization
hiro_torii
1
350
設計を積み重ねてシステムを刷新する
sansantech
PRO
0
160
AWS Well-Architected Frameworkで学ぶAmazon ECSのセキュリティ対策
umekou
2
140
CDKでカスタムランタイムを作成して、Lambdaをnode.js23+TypeScriptで動かしてみた
smt7174
2
110
データベースの負荷を紐解く/untangle-the-database-load
emiki
2
480
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
67
4.6k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Unsuck your backbone
ammeep
669
57k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Faster Mobile Websites
deanohume
306
31k
It's Worth the Effort
3n
184
28k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
570
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