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
Makuakeの認証基盤とRe-Architectureチーム
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
bmf_san
January 19, 2023
Programming
3.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Makuakeの認証基盤とRe-Architectureチーム
bmf_san
January 19, 2023
More Decks by bmf_san
See All by bmf_san
桃太郎で始めるRego入門‐今日から使えるRegoの基本編
bmf_san
0
72
完璧を求めない意思決定-アクセス制御基盤における制約との向き合い方
bmf_san
5
20k
AAPについて調べてみた
bmf_san
0
140
レーダーをつくる
bmf_san
0
83
契約テストとPactについて
bmf_san
0
130
5分でわかるSLO
bmf_san
2
180
権限について考える
bmf_san
2
170
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.8k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
510
Other Decks in Programming
See All in Programming
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
830
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
200
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.7k
Webフレームワークの ベンチマークについて
yusukebe
0
200
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
290
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
250
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
1.8k
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.7k
霧の中の代数的エフェクト
funnyycat
1
290
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
290
AIエージェントで 変わるAndroid開発環境
takahirom
2
460
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.3k
Optimizing for Happiness
mojombo
378
71k
Code Review Best Practice
trishagee
74
20k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
220
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Prompt Engineering for Job Search
mfonobong
0
370
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
63
55k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
For a Future-Friendly Web
brad_frost
183
10k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
Transcript
Makuakeの認証基盤とRe-Architectureチーム 株式会社マクアケ / 竹内健太(@bmf_san) サービスの当たり前を支える認証認可 〜マネーフォワードxマクアケ〜 2023/01/19(木)
竹内健太(Twitter: @bmf_san) 株式会社マクアケ 開発本部 Re-Architectureチーム所属 - 2019年入社 - チームリーダー - Re-Architectureチームの業務以外は
PHP・FWのアップデートプロジェクトだったり、 E2E導入プロジェクトだっ たりやっています - Goで何かつくるのが好きです - https://github.com/bmf-san/goblin 自己紹介 Copyright © Makuake, Inc. All Rights Reserved. 2
お話すること Copyright © Makuake, Inc. All Rights Reserved. 3 -
Re-Architectureチーム is 何? - 認証基盤概要紹介 - 認証基盤への移行における当たり前事例
4 Re-Architectureチーム is 何?
Re-Architectureチームとは? Copyright © Makuake, Inc. All Rights Reserved. 5 -
ミッション - 「Makuakeがスケールし続けるためのシステム・アーキテクチャを実現」 - マクアケの事業成長に耐えうるシステム基盤を提供する - 柔軟なスケーラビリティの担保 - 機能的なスケーラビリティだけではなく、運用面でもスケーラビリティを担保する - 安心・安全に活用できるシステム基盤 - Makuakeの他サービスやアライアンス先が、安心・安全に利活用できる基盤を 提供する - 高い信頼性を担保(可用性) - 事業の可能性を広げるReArchitecting - 技術基盤の開発・運用により、ビジネスの可能性を広げる
やっていること Copyright © Makuake, Inc. All Rights Reserved. 6 認証基盤だけ専門にやるチームではないのです!
- Auth - 認証基盤 - OIDC - 認可基盤 - メッセージングサービス(今後取り組む予定) - 通知基盤 アーキテクチャのスケーラビリティを担保するという観点で、主にサービス基盤の開発・運用を行っているチー ムです!
7 認証基盤概要紹介
- 会員数220万人〜のMakuakeを支える認証基盤(Authサービスと呼称) - ユーザー登録・ログインの機能等を提供 - Email/Password - 各種SNSプロバイダ
- Facebook / Twitter / LINE / Yahoo! JAPAN / Apple - 2021年9月〜 運用開始 - 運用体制(Authサービスに関わるエンジニア数) - 開発フェーズは〜4人 - 運用フェーズは現在 4人 Makuakeの認証基盤とは Copyright © Makuake, Inc. All Rights Reserved. 8
Makuakeの認証今昔 Copyright © Makuake, Inc. All Rights Reserved. 9 昔
- FuelPHPのSessionを利用した認証 - モノリスでFuelPHPに依存した実装 - 非コンテナ環境(EC2)※現在はECS 今 - JWTを使ったトークンベースの認証 - マイクロサービスにおける1つのサービスとし て実装 - コンテナ環境(GKE)
なぜ認証基盤をサービスとして切り出したのか? Copyright © Makuake, Inc. All Rights Reserved. 10 背景
- モノリスなアーキテクチャからの脱却 - マイクロサービス化の推進 - ”認証”切り出しがマイクロサービス化の最初の 1歩であった 解決したい課題 - 複雑化したコードベースにおける機能の改修・追加が難しい問題の解決 - 複数システム間で使える共通の認証基盤の必要性 - ユーザー数の増加を見据えた可用性の担保
アーキテクチャ構成(簡略版) Copyright © Makuake, Inc. All Rights Reserved. 11
アーキテクチャ構成(簡略版) Copyright © Makuake, Inc. All Rights Reserved. 12 -
GCP上でサービス構築 - Kubernetesをベースとしたサービス構築 - 通信プロトコルはgRPCを採用 - grpc-gatewayでHTTP→gRPCへ変換 - Spannerの採用 - 開発環境向けにもサーバーを用意(認証プロキシに IAPを利用)
13 認証基盤への移行における当たり前事例
当たり前?の例 Copyright © Makuake, Inc. All Rights Reserved. 14 既存認証からAuthサービスへの切り替えをどのように行ったか?
当たり前の認証を支えるために・・ Copyright © Makuake, Inc. All Rights Reserved. 15 当たり前に使える認証基盤を提供し続けるために取り組んでいること
- ユーザーファースト - ユーザーへの影響を最小限に抑える意識や努力 - 可用性の担保 - SLOを定義、目標とするサービスレベルを維持する - 監視 - アラート・メトリクス監視など - 継続的なバージョンアップ - システムやライブラリなど定期的に更新。溜め込まない
当たり前の認証を支えるために・・ Copyright © Makuake, Inc. All Rights Reserved. 16 当たり前に使える認証基盤を提供し続けるために取り組んでいること
- ユーザーファースト - ユーザーへの影響を最小限に抑える意識や努力 - 可用性の担保 - SLOを定義、目標とするサービスレベルを維持する - 監視 - アラート・メトリクス監視など - 継続的なバージョンアップ - システムやライブラリなど定期的に更新。溜め込まない。 当たり前のことを当たり前にやっている!と思います
サービス移行要件 Copyright © Makuake, Inc. All Rights Reserved. 17 “認証”という当たり前の機能の提供を停止させない
- ユーザーへの影響を最小限に抑える必要がある - 認証に何か問題が発生すると、サービス全体への影響に波及する可能性が高い 要件を満たすために・・・ - 「データの不整合を防止」 - 「フェイルセーフ」 - 「切り戻ししやすい仕組み」
当たり前を維持するために取り組んだこと Copyright © Makuake, Inc. All Rights Reserved. 18 サービス移行を3つのPhaseに分けて、段階的に移行作業を実施
- Phase1:ダブルライト - データ移行ツールの実行 - 新規登録のAPIの利用開始(厳密には他のAPIも色々ある) - 移行元DB・移行先DBの両方への書き込み - makuake側とAuth側のデータが同期されている状態をつくる - データ整合性チェックツールの定期実行 - フィーチャーフラグの実装・運用開始 - AuthサービスAPIの利用ON・OFF - エラーハンドリングの調整 - ユーザーへのエラーを返さない
当たり前を維持するために取り組んだこと Copyright © Makuake, Inc. All Rights Reserved. 19 サービス移行を3つのPhaseに分けて、段階的に移行作業を実施
- Phase2:疑似認証 - Authサービスの認証の仕組み(JWT)の利用開始 - 既存の認証処理を行いつつ、Authサービス側の認証処理も行う - 既存認証で利用しているCookieと認証で利用するCookieを両方保つ - Authサービスへの完全切り替え時のログアウト多発を防止 - ログイン移行率(Authサービスを利用してログインしているユーザ数)の計測 - 各種メトリクスやエラーの監視(性能に問題ないかチェック) - AuthサービスのほとんどのAPIが開放されるため、Authサービスが本格的にトラ フィックを受け付けることになる
当たり前を維持するために取り組んだこと Copyright © Makuake, Inc. All Rights Reserved. 20 サービス移行を3つのPhaseに分けて、段階的に移行作業を実施
- Phase3:認証切り替え - Authサービスへの完全切り替え - ログイン移行率やエラー状況を元に、切り替え判定 - このフェーズでは切り戻しができなくなる - 後処理 - 用済みとなったコードやデータの削除等を実施 ←とある日に普段の機能リリースのように余りにも自然にリリー スされたの図(着想から3~4年くらいのプロジェクトだったので すが)
21 当たり前の維持は当たり前ではないかも😤
まとめ Copyright © Makuake, Inc. All Rights Reserved. 22 -
ReArchitectureチームはマクアケのスケーラビリティを支えるチーム - 認証基盤以外もやっています - 認証基盤は独立した1つのマイクロサービス - 既知の課題解決や今後のニーズを見据えたサービス - サービス移行でも当たり前を考える - いつでも使える、ユーザー影響を最小限に抑えたサービス切り替え
23 We are hiring! ご清聴ありがとうございました!
Copyright © Makuake, Inc. All Rights Reserved.