1
/
5

Sign up for free

This page is intended for users in Japan(English). Go to the page for users in United States.

弊社サービスをFirebase AuthenticationとCloud Runを使ってマイクロサービスっぽく認証機能を作り直してみた

大城です。

今日は僕が大好きなFirebaseについて書いて見ようと思います。皆さんFirebaseも使っていますか? 一人のエンジニアとしては本当にお世話になっているサービスです。(しかもほぼタダで。。。)

さて、アプリケーションを構築していれば当然認証と認可の機能は必要になってきます。しかし最近のモダンなアプリケーション開発における認証についてはとても複雑になって来たと思います。

古き良き時代もありました。一つのWebサービスがあって、ユーザのIDとPWはハッシュ化してデータベースにいれておけばよかったわけです。しかし今はユーザはログインする際にいろんなオプションを求める様になりました。

• SNSアカウント(Google, Facebookなど)でログインしたい。
• アプリ内のエクスペリエンス向上のために外部サービスと連携したい。

一方で、アプリ提供側にも長期的にアプリケーションをモダンにしていきたいといった課題があります。モノリシックからマイクロサービスの移行などが代表的なテーマです。

ユーザーの求める利便性を提供しながらアプリケーションをスケーラブルに分割して行くのは、もはや外部の認証サービスなしでは実現するのはなかなかしんどくなってきたのではないでしょうか? 実装方法を考え始めると夜も眠れなくなります。

metrolyではこれまで認証はバックエンドの機能の中のひとつの機能として実装していました。ランダムに作った文字列のトークンをバックエンドでリクエスト毎にDBと検証して認証をしていました。

大きな問題はないのですが、サービスを大きくしていこうと考えていった際に際に以下のような問題に直面しました。

1. ステートフルな認証になってしまっていた。リクエストごとに無条件DBにアクセスする必要があるためにレイテンシーが増える。またスケールする際のボトルネックになりかねない。
2. マイクロサービスアーキテクチャに向いていない。認証サービスと最初に作ったバックエンドが密結合になってしまうので、バックエンドのサービスを増やそうとすると気持ち悪くなってきてしまう。

ということで、今回は僕が開発しているアプリのmetrolyでどのようにこの問題を解決することにしたかご紹介したいと思います。

続きはNoteでご覧になってください。

株式会社メトロリー's job postings
1 Likes
1 Likes

Weekly ranking

Show other rankings