Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
グループウォレットアプリ6gramの運用をはじめてみた / 6gram SRE NEXT 2020
Search
ryosan470
January 25, 2020
Technology
15k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
グループウォレットアプリ6gramの運用をはじめてみた / 6gram SRE NEXT 2020
SRE NEXT 2020
ryosan470
January 25, 2020
More Decks by ryosan470
See All by ryosan470
6gram to MIXI M / 6gram から MIXI M へ 〜2年間の軌跡〜
ryosan470
2
2.6k
Our monitoring past and future tale
ryosan470
3
1.5k
the background of mixi git challenge
ryosan470
1
410
新米SREとしての半年
ryosan470
1
3.2k
Other Decks in Technology
See All in Technology
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
200
あけおめLINE 傾向とその対策
nasa9084
0
330
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
3
21k
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
460
Coil3を内部実装から読み解く~キャッシュ戦略とAVIF画像の描画〜/nikkei-tech-talk50
nikkei_engineer_recruiting
0
110
覗いてみよう 関数型ビジュアル言語×2Dグラフィックスの世界
yohyamasaki
0
120
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
250
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.9k
AI Agent入門〜今更聞けないAgentの話〜
hiromimaganuma
0
120
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
670
LLMに渡さなかった仕事
nanaism
0
14k
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
550
Featured
See All Featured
Faster Mobile Websites
deanohume
310
32k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
580
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
How to Ace a Technical Interview
jacobian
281
24k
The Invisible Side of Design
smashingmag
301
52k
Ethics towards AI in product and experience design
skipperchong
2
380
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
GitHub's CSS Performance
jonrohan
1033
470k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
590
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Transcript
グループウォレットアプリ 6gram の運⽤をはじめてみた SRE NEXT 2020 株式会社ミクシィ ID・ペイメント事業部 佐藤 良祐
2020/01/25
⾃⼰紹介 佐藤 良祐 (@ryosan-470 / @jtwp470) 株式会社ミクシィ ID・ペイメント事業部 2017年4⽉⼊社 ‣
~ 2019/04 モンスターストライク⽇本版SRE ‣ 2019/04 ~ 新規の決済系サービス「6gram」や社内決済基盤の開発と運⽤
None
「6gram」サービス紹介 ひとりでも、グループでも使うことのできるウォレットサービス グループに⼊れたお⾦をシェアしたり、インスタントに発⾏したプリペイドカードに残⾼を割 り付けたりといろんな使い⽅ができる ‣ JCB プリペイドカードを1アカウントで複数枚発⾏できる ‣ ApplePay /
GooglePay と連携して QUICPay+ 決済 ‣ iOS では コンタクトレス決済に対応 ‣ リアルカードも発⾏予定 2019年11⽉にAndroid版を先⾏リリース ‣ 現在は完全招待制
None
iOSは審査中 (もうしばらくお待ちください)
今⽇は配布物の中に招待コードあります! QRコードを読み取って是⾮使ってくださいー
もくじ 決済サービスの基礎的な概念 PCI DSS 完全準拠 の⼯夫 6gram システム構成 開発、運⽤体制 課題
決済サービスの基礎的な概念 (出⾦ / カード発⾏、管理) ユーザー 加盟店 アクワイアラ 国際ブランド クレジットカード決済 イシュア
カード発⾏業務 加盟店管理 VISA / JCBなど ISO8583形式の電⽂ でやりとり ISO8583形式の電⽂ でやりとり
決済サービスの基礎的な概念 (⼊⾦ / 決済代⾏) ユーザー アクワイアラ 国際ブランド クレジットカードによる⼊⾦ 加盟店管理 VISA
/ JCBなど ISO8583形式の電⽂ でやりとり ISO8583形式の電⽂ でやりとり イシュア 決済代⾏
決済サービスの基礎的な概念 (まとめ) 「出⾦」と「⼊⾦」の両⽅とも⾃社でシステムを実装 「出⾦」では、プリペイドカードの発⾏、管理 「⼊⾦」では、ユーザーが⼊⾦するために必要なカード情報を保持 ⇨ これらをサポートするためには、「PCI DSS」に準拠しなければならない
PCI DSS とは? クレジットカード業界のセキュリティ基準 これに準拠することにより、カード番号などの情報を保持することができる 12要件、約400項⽬ 数年に⼀度、基準が改訂される
PCI DSS 完全準拠の⼯夫
アカウント要件 要件8 コンピュータにアクセスできる各ユーザーに⼀意のIDを割り当てる ‣ 8.2.3 パスワードは以下を満たす必要がある ‣ パスワードに7⽂字以上含まれる ‣ 数字と英⽂字を両⽅含む
‣ 8.2.4 パスワードは少なくとも90⽇ごとに変更する ‣ 8.2.5 これまで使⽤した最後の4つのパスワードのいずれかで同じである新しいパス ワードを許可しない
アカウント要件 パスワード管理めんどくさいなぁ
セキュリティ要件 要件5 すべてのシステムをマルウェアから保護する ⇨ 稼働中のサーバーにウイルスチェックなどが必要 要件11 セキュリティシステムおよびプロセスを定期的にテストする ‣ 11.4 侵⼊検知/侵⼊防⽌システムを使⽤して警告する
‣ 11.5 変更検出メカニズムを導⼊してファイル変更を監視、警告する
セキュリティ要件 ウイルス検知ソフトウェア、侵⼊検知ソフトウェアが落ちてもインシデント
われわれの⼤⽅針 ⇨ 運⽤負荷をできるだけさげたい
インスタンスを使わない
インスタンスを使わない
インスタンスを使わないことで何が嬉しいか アカウント管理をIAMに集約しやすい 90⽇に1回のパスワード変更祭り (しかも4回分は使えない) をしなくてすむ 管理すべきコンポーネントを減らすことができる 運⽤負荷を下げるために重要
さらに
コンテナをRead Only で動かす
セキュリティ要件 要件5 すべてのシステムをマルウェアから保護する ⇨ 稼働中のサーバーにウイルスチェックなどが必要 要件11 セキュリティシステムおよびプロセスを定期的にテストする ‣ 11.4 侵⼊検知/侵⼊防⽌システムを使⽤して警告する
‣ 11.5 変更検出メカニズムを導⼊してファイル変更を監視、警告する
インスタンスレス + Read Only で何が嬉しいか 侵⼊検知の仕組みを導⼊する必要がない リモートコンソールが存在しないためそもそも侵⼊できない ファイル変更検出ソフトウェアが不要になる Read Only
なのでそもそも書き換えができない
コンテナをRead Only で動かす⼯夫 コンテナはAWS Fargate上で動かしている コンテナは Read Only で稼働させている ‣
具体的には、ECSタスク定義の readonlyRootFileSystem を true にしている ⼯夫点 ‣ ログはファイルを作成せず、標準出⼒に ‣ 起動時に作成されるディレクトリはあらかじめ作成しておく
クレジットカード情報の保有についての制約 要件3 保存されるクレジットカード情報を保護する ‣ 3.4 クレジットカード情報は暗号化などの仕組みを⽤いて保存する ‣ 3.5.2 クレジットカード情報へのアクセスを必要最低限に制限する ‣
3.5.3 暗号化に使⽤される鍵の保存 要件7 クレジットカード情報へのアクセスを制限する 要件10 クレジットカード情報へのアクセスを追跡、監視する
クレジットカード情報の保有について クレジットカード情報をはじめとするすべてのデータをDynamoDBに保存 AWSには ‣ IAMをベースとした細かいアクセス制御 ‣ KMSによるテーブルの透過的暗号化 さらにスケーリングや管理をすべてAWSにお任せできる 運⽤をはじめて、DynamoDBを起因とする障害は今の所ない
その他の⼯夫点
定時実⾏処理 バッチ処理には CodeBuild を使⽤ 売上データを取得、オーソリゼーション業務などの定時処理をすべてCodeBuildで 採⽤理由 ‣ AWS Batch は裏でEC2が爆誕するからだめ
‣ Lambdaは実⾏時間が短すぎる ‣ Fargate で 「タスクを動かす」は⼀部やっていたがリトライなどを⼿動でやるのが ⼤変だった ‣ さらに「読み取り専⽤」環境では動かないソフトウェアがあった
リリースパイプラインの⾃動化 CodePipeline と CodeBuild を組み合わせたリリースパイプラインの構築 リリースの障壁をできる限り下げ、アジリティーを確保 コンテナイメージ のビルドと ECRへのプッシュ コンテナイメージ
ウイルススキャン Fargateへの ブルーグリーン デプロイ 要件5 のウイルススキャンを満たす
「6gram」システム構成図
「6gram」システム構成 ‣ 開発⾔語: Elixir ‣ ⼀部 DynamoDB Streams を経由した NodeJS
や解析環境で Python など ‣ インフラ: AWS ‣ データベース: DynamoDB ‣ コンピュート: Fargate ‣ 監視: CloudWatch、Rollbar ほぼすべてのコンポーネント (⼊出⾦処理、カード会社とのやりとり) は内製 ‣ なぜ内製しているのか、Elixir採⽤理由などは、Developer Boost 2019の「Elixirで 決済サービスを作ってみた」を! https://speakerdeck.com/enerick/elixir-dejue-ji-sabisuwotukututemita
PCI DSS 完全準拠の⼯夫まとめ 少⼈数で運⽤していくためにできる限り運⽤負荷を減らす努⼒をしている フルマネージドサービスを使うことで簡単に⾼い信頼性を確保できる アプリケーションの改善に注⼒できる
開発、運⽤体制
開発、運⽤体制 チーム構成 エンジニアリングマネージャ 1名 サーバーサイドエンジニア 5名 クライアントエンジニア 2名 SRE といった専⾨職ロールは存在せず、
全員で開発、運⽤を⾏っている
運⽤の⼯夫 (エラーの通知) Rollbar を⽤いて、対処する必要があるものに対してはSlack通知 具体的に responder が何をすればいいか記載しておくことで素早い対処が可能
運⽤の⼯夫 (インシデント対応計画) インシデント対応計画シミュレーションの実施 (年に1回程度) サイバー攻撃、セキュリティに関連するバグ、インフラストラクチャのバグなどの条 件を机上でシミュレーションする インシデントハンドリングを経験、改善点などの気づきが得られる
課題
課題 可観測性が低い 現状では細かいトレーシングやログなどを取りきれていない 分散トレースなどがほしい ⾃動化を突き詰めていく ⼈間の判断をできるかぎり減らす 開発環境をより本番環境に近づけていく 決済ネットワークとのつなぎこみを含め開発環境だけで再現できる領域を増やしてい きたい
None