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
Makuakeの認証基盤とRe-Architectureチーム
Search
bmf_san
January 19, 2023
Programming
3.3k
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
91
完璧を求めない意思決定-アクセス制御基盤における制約との向き合い方
bmf_san
5
20k
AAPについて調べてみた
bmf_san
0
150
レーダーをつくる
bmf_san
0
87
契約テストとPactについて
bmf_san
0
130
5分でわかるSLO
bmf_san
2
190
権限について考える
bmf_san
2
180
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.9k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
520
Other Decks in Programming
See All in Programming
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
180
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.8k
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
180
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
150
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
290
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
160
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
420
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
220
XHTMLが残したもの
yosuke_furukawa
PRO
2
810
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
150
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
110
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
520
Building Adaptive Systems
keathley
44
3.2k
The SEO identity crisis: Don't let AI make you average
varn
0
560
Become a Pro
speakerdeck
PRO
31
6.3k
Side Projects
sachag
456
43k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
Making the Leap to Tech Lead
cromwellryan
135
10k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
280
Darren the Foodie - Storyboard
khoart
PRO
4
3.9k
Agile that works and the tools we love
rasmusluckow
331
22k
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.